Ejemplo n.º 1
0
        private void ParseData(byte[] byteData, int nReceived)
        {
            //Since all protocol packets are encapsulated in the IP datagram
            //so we start by parsing the IP header and see what protocol data
            //is being carried by it
            //Console.WriteLine("Packet Captured");
            IPHeader ipHeader = new IPHeader(byteData, nReceived);


            //Now according to the protocol being carried by the IP datagram we parse
            //the data field of the datagram
            Console.WriteLine(ipHeader.ProtocolType.ToString());
            switch (ipHeader.ProtocolType)
            {
            case Protocol.TCP:

                TCPHeader tcpHeader = new TCPHeader(ipHeader.Data,              //IPHeader.Data stores the data being
                                                                                //carried by the IP datagram
                                                    ipHeader.MessageLength);    //Length of the data field

                //Console.WriteLine("TCP");
                DBConn.InsertTCPRecord(ipHeader, tcpHeader);


                break;

            case Protocol.UDP:

                UDPHeader udpHeader = new UDPHeader(ipHeader.Data,                  //IPHeader.Data stores the data being
                                                                                    //carried by the IP datagram
                                                    (int)ipHeader.MessageLength);   //Length of the data field
                                                                                    //MakeUDPTreeNode(udpHeader);
                //Console.WriteLine("UDP Successful");
                DBConn.InsertUDPRecord(ipHeader, udpHeader);
                break;

            case Protocol.ICMP:
                ICMPHeader icmpHeader = new ICMPHeader(ipHeader.Data, (int)ipHeader.MessageLength);
                // Get the IPHeader packet data segregated
                //MessageBox.Show("Someone is pinging on this PC");
                //Insert into Database
                //Console.WriteLine("ICMP retrieval successful");
                DBConn.InsertICMPRecord(ipHeader, icmpHeader);

                break;
            }


            //Thread safe adding of the nodes
        }
Ejemplo n.º 2
0
        public static void InsertTCPRecord(IPHeader ipHeader, TCPHeader tCPHeader)
        {
            String table_name = "TCP_Packet";

            string timestamp = DateTime.Now.ToString();
            string source_ip = ipHeader.SourceAddress.ToString();
            string dest_ip   = ipHeader.DestinationAddress.ToString();


            string   ttl           = ipHeader.TTL;
            string   header_length = tCPHeader.HeaderLength;
            TCPFlags obj           = tCPHeader.Flags;
            int      FIN           = Convert.ToInt32(obj.FIN);
            int      SYN           = Convert.ToInt32(obj.SYN);
            int      ACK           = Convert.ToInt32(obj.ACK);

            /*
             * var IPv4Addresses = Dns.GetHostEntry(Dns.GetHostName()).AddressList.Where(al => al.AddressFamily == AddressFamily.InterNetwork).AsEnumerable();
             * foreach (IPAddress ip in IPv4Addresses)
             * {
             *  if (ip.ToString().Equals(source_ip_in_address_format))
             *      source_ip = "0";
             *  else if (ip.ToString().Equals(dest_ip_in_address_format))
             *      dest_ip = "0";
             *
             * }
             *
             */
            // IPAddress 0 for host machine, 1 for external I.P.

            string source_port  = tCPHeader.SourcePort;
            string dest_port    = tCPHeader.DestinationPort;
            string time_to_live = ipHeader.TTL;

            //string connstring = string.Format("Server=localhost; database={0}; UID=UserName; password=your password", databaseName);
            string query = string.Format("Insert into {0} values( '{1}','{2}',{3},'{4}',{5},{6}, {7}, {8}, {9});", table_name, timestamp, source_ip, source_port, dest_ip, dest_port, time_to_live, SYN, ACK, FIN);

            //string query = string.Format("Insert into {0} values( '{1}','{2}',{3},'{4}',{5},{6}, 1 , 0 , 0 ,{7}, {8} , {9} , {10},,'',,);", table_name, timestamp, source_ip, source_port, dest_ip, dest_port, time_to_live, header_length, SYN, ACK, FIN);
            //String query = "Insert into " + table_name + " values('" + timestamp + "','" + source_ip + "'," + source_port + ",'" + dest_ip + "'," + dest_port + ");";

            Console.WriteLine(query);
            //open connection
            MySqlCommand cmd = new MySqlCommand(query, connection);

            //Execute command
            cmd.ExecuteNonQueryAsync();
            //cmd.ExecuteNonQuery();
        }