Exemplo n.º 1
0
        public UDPDisplayPacket(IpV4Header ipHeader, UdpHeader udpHeader)
        {
            Destination     = ipHeader.DestinationAddress;
            DestinationPort = string.Format("{0} {1}", udpHeader.DestinationPort, UDPPortLookup.GetPortName(udpHeader.DestinationPort));
            Source          = ipHeader.SourceAddress;
            SourcePort      = string.Format("{0} {1}", udpHeader.SourcePort, UDPPortLookup.GetPortName(udpHeader.SourcePort));
            Type            = ipHeader.ProtocolType;
            StringBuilder retVal = new StringBuilder();

            if (udpHeader.SourcePort == 520 || udpHeader.DestinationPort == 520)
            {
                //RIP Protocol
            }
            else if (udpHeader.SourcePort == 161 || udpHeader.DestinationPort == 161 ||
                     udpHeader.SourcePort == 162 || udpHeader.DestinationPort == 162 ||
                     udpHeader.SourcePort == 10161 || udpHeader.DestinationPort == 10161 ||
                     udpHeader.SourcePort == 10162 || udpHeader.DestinationPort == 10162)
            {
                //SNMP Protocol
            }
            else if (udpHeader.SourcePort == 67 || udpHeader.DestinationPort == 67 ||
                     udpHeader.SourcePort == 68 || udpHeader.DestinationPort == 68)
            {
                //DHCP Protocol
            }
            else if (udpHeader.DestinationPort == 53 || udpHeader.SourcePort == 53)
            {
                AppendDNSInfo(udpHeader.Data, retVal);
            }
            AppendUDPInfo(udpHeader, retVal);
            AppendIPInfo(ipHeader, retVal);
            AppendData(udpHeader.Data, retVal);
            Data = retVal.ToString();
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            UDPPortLookup.GetPortName(21);

            byte[] tempVal = { 69, 0, 0, 40, 1, 71, 64, 0, 128, 6, 158, 227, 131, 101, 240, 204, 40, 97, 190, 18, 221, 138, 1, 187, 191, 197, 33, 128, 198, 174, 234, 211, 80, 16, 1, 4, 226, 28, 0, 0 };

            var ipPacket = new IpV4Header(tempVal, 2);
        }
Exemplo n.º 3
0
 protected void AppendIPInfo(IpV4Header ipHeader, StringBuilder retVal)
 {
     retVal.Append("[*IP* ");
     retVal.AppendFormat("Ver:{0}, ", ipHeader.Version);
     retVal.AppendFormat("HL:{0}, ", ipHeader.HeaderLength);
     retVal.AppendFormat("DSCP:0x{0:x2}, ", ipHeader.Dscp);
     retVal.AppendFormat("ECN:0x{0:x2}, ", ipHeader.Ecn);
     retVal.AppendFormat("ID:{0}, ", ipHeader.Identification);
     retVal.AppendFormat("FL:0x{0:x2}, ", ipHeader.Flags);
     retVal.AppendFormat("FO:{0}, ", ipHeader.FragmentationOffset);
     retVal.AppendFormat("TTL:{0}, ", ipHeader.TTL);
     retVal.Append("]");
 }
Exemplo n.º 4
0
        public IgmpDisplayPacket(IpV4Header ipHeader, IgmpHeader igmpHeader)
        {
            Destination = ipHeader.DestinationAddress;
            //DestinationPort = udpHeader.DestinationPort;
            Source = ipHeader.SourceAddress;
            //SourcePort = udpHeader.SourcePort;
            Type = ipHeader.ProtocolType;
            StringBuilder retVal = new StringBuilder();

            AppendIcmp(igmpHeader, retVal);
            AppendIPInfo(ipHeader, retVal);
            Data = retVal.ToString();
        }
Exemplo n.º 5
0
        public TCPDisplayPacket(IpV4Header ipHeader, TcpHeader tcpHeader)
        {
            Destination     = ipHeader.DestinationAddress;
            DestinationPort = string.Format("{0} {1}", tcpHeader.DestinationPort, TCPPortLookup.GetPortName(tcpHeader.DestinationPort));
            Source          = ipHeader.SourceAddress;
            SourcePort      = string.Format("{0} {1}", tcpHeader.SourcePort, TCPPortLookup.GetPortName(tcpHeader.SourcePort));
            Type            = ipHeader.ProtocolType;
            Flags           = tcpHeader.Flags;
            SeqNumber       = tcpHeader.SequenceNumber.ToString();
            AckNumber       = tcpHeader.AcknowledgementNumber;
            StringBuilder retVal = new StringBuilder();

            if (tcpHeader.DestinationPort == 53 || tcpHeader.SourcePort == 53)
            {
                AppendDNSInfo(tcpHeader.Data, retVal);
            }
            AppendTCPInfo(tcpHeader, retVal);
            AppendIPInfo(ipHeader, retVal);
            AppendData(tcpHeader.Data, retVal);
            Data = retVal.ToString();
        }
Exemplo n.º 6
0
 public OSPFDisplayPacket(IpV4Header ipHeader, OSPFHeader icmpHeader)
 {
 }
Exemplo n.º 7
0
                public void run()
                {
                    while (true)
                    {
                        try {
                            Packet         packet     = packetList.take();
                            EthernetPacket packet_eth = (EthernetPacket)packet;
                            EthernetHeader head_eth   = packet_eth.getHeader();

                            IpV4Packet ipV4Packet = null;
                            if (ppp)
                            {
                                ipV4Packet = getIpV4Packet_pppoe(packet_eth);
                            }
                            else
                            {
                                if (packet_eth.getPayload() instanceof IpV4Packet)
                                {
                                    ipV4Packet = (IpV4Packet)packet_eth.getPayload();
                                }
                            }
                            if (ipV4Packet != null)
                            {
                                IpV4Header ipV4Header = ipV4Packet.getHeader();
                                if (ipV4Packet.getPayload() instanceof TcpPacket)
                                {
                                    TcpPacket tcpPacket = (TcpPacket)ipV4Packet.getPayload();
                                    TcpHeader tcpHeader = tcpPacket.getHeader();
                                    if (client)
                                    {
                                        TCPTun conn = tcpManager.getTcpConnection_Client(ipV4Header.getSrcAddr().getHostAddress(), tcpHeader.getSrcPort().value(), tcpHeader.getDstPort().value());
                                        if (conn != null)
                                        {
                                            conn.process_client(capEnv, packet, head_eth, ipV4Header, tcpPacket, false);
                                        }
                                    }
                                    else
                                    {
                                        TCPTun conn = null; conn = tcpManager.getTcpConnection_Server(ipV4Header.getSrcAddr().getHostAddress(), tcpHeader.getSrcPort().value());
                                        if (
                                            tcpHeader.getDstPort().value() == listenPort)
                                        {
                                            if (tcpHeader.getSyn() && !tcpHeader.getAck() && conn == null)
                                            {
                                                conn = new TCPTun(capEnv, ipV4Header.getSrcAddr(), tcpHeader.getSrcPort().value());
                                                tcpManager.addConnection_Server(conn);
                                            }
                                            conn = tcpManager.getTcpConnection_Server(ipV4Header.getSrcAddr().getHostAddress(), tcpHeader.getSrcPort().value());
                                            if (conn != null)
                                            {
                                                conn.process_server(packet, head_eth, ipV4Header, tcpPacket, true);
                                            }
                                        }
                                    }
                                }
                                else if (packet_eth.getPayload() instanceof IllegalPacket)
                                {
                                    MLog.println("IllegalPacket!!!");
                                }
                            }
                        } catch (InterruptedException e) {
Exemplo n.º 8
0
 public DCCPDisplayPacket(IpV4Header ipHeader, DCCPHeader icmpHeader)
 {
 }
 public EIGRPDisplayPacket(IpV4Header ipHeader, EIGRPHeader icmpHeader)
 {
 }
Exemplo n.º 10
0
 public GREDisplayPacket(IpV4Header ipHeader, GREHeader icmpHeader)
 {
 }
 public UnknownDisplayPacket(IpV4Header ipHeader)
 {
 }
Exemplo n.º 12
0
 public IPDisplayPacket(IpV4Header ipHeader)
 {
     Source      = ipHeader.SourceAddress;
     Destination = ipHeader.DestinationAddress;
     Type        = ipHeader.ProtocolType;
 }
Exemplo n.º 13
0
        /// <summary>
        /// This function parses the incoming packets and extracts the data based upon
        /// the protocol being carried by the IP datagram.
        /// </summary>
        /// <param name="byteData">Incoming bytes</param>
        /// <param name="nReceived">The number of bytes received</param>
        private IPDisplayPacket GetDisplayPacket(IpV4Header ipHeader)
        {
            IPDisplayPacket retVal;

            // 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.
            // Now according to the protocol being carried by the IP datagram we parse
            // the data field of the datagram.
            switch (ipHeader.ProtocolType)
            {
            case Protocol.TCP:
            {
                TcpHeader tcpHeader = new TcpHeader(ipHeader.Data, ipHeader.MessageLength);
                retVal = new TCPDisplayPacket(ipHeader, tcpHeader);
            }
            break;

            case Protocol.UDP:
            {
                UdpHeader udpHeader = new UdpHeader(ipHeader.Data, (int)ipHeader.MessageLength);
                retVal = new UDPDisplayPacket(ipHeader, udpHeader);
            }
            break;

            case Protocol.ICMP:
            {
                IcmpHeader icmpHeader = new IcmpHeader(ipHeader.Data, (int)ipHeader.MessageLength);
                retVal = new IcmpDisplayPacket(ipHeader, icmpHeader);
            }
            break;

            case Protocol.IGMP:
            {
                IgmpHeader igmpHeader = new IgmpHeader(ipHeader.Data, (int)ipHeader.MessageLength);
                retVal = new IgmpDisplayPacket(ipHeader, igmpHeader);
            }
            break;

            case Protocol.DCCP:
            {
                DCCPHeader icmpHeader = new DCCPHeader(ipHeader.Data, (int)ipHeader.MessageLength);
                retVal = new DCCPDisplayPacket(ipHeader, icmpHeader);
            }
            break;

            case Protocol.EIGRP:
            {
                EIGRPHeader icmpHeader = new EIGRPHeader(ipHeader.Data, (int)ipHeader.MessageLength);
                retVal = new EIGRPDisplayPacket(ipHeader, icmpHeader);
            }
            break;

            case Protocol.GREs:
            {
                GREHeader icmpHeader = new GREHeader(ipHeader.Data, (int)ipHeader.MessageLength);
                retVal = new GREDisplayPacket(ipHeader, icmpHeader);
            }
            break;

            case Protocol.OSPF:
            {
                OSPFHeader icmpHeader = new OSPFHeader(ipHeader.Data, (int)ipHeader.MessageLength);
                retVal = new OSPFDisplayPacket(ipHeader, icmpHeader);
            }
            break;

            default:
            case Protocol.Unknown:
                retVal = new IPDisplayPacket(ipHeader);
                break;
            }
            return(retVal);
        }
Exemplo n.º 14
0
        private void OnReceive(IAsyncResult asyncresult)
        {
            try
            {
                lock (_syncObject)
                {
                    int  nReceived  = _mainSocket.EndReceive(asyncresult);
                    bool showPacket = false;

                    IpV4Header ipHeader = new IpV4Header(_recvData, nReceived);
                    // If this is a packet to / from me and not from myself then...
                    if ((ipHeader.SourceAddress.Equals(_selectedIP) == true |
                         ipHeader.DestinationAddress.Equals(_selectedIP) == true) &
                        ipHeader.DestinationAddress.Equals(ipHeader.SourceAddress) == false)
                    {
                        if (_performIPFilter == false |
                            (_performIPFilter == true & (_filterIP.Equals(ipHeader.SourceAddress) | _filterIP.Equals(ipHeader.DestinationAddress))))
                        {
                            //all
                            if (_selectedProtocol == 0 || _selectedProtocol == 3)
                            {
                                showPacket = true;
                            }
                            else if ((_selectedProtocol == 2 || _selectedProtocol == 5) && ipHeader.ProtocolType == Protocol.TCP) //TCP
                            {
                                showPacket = true;
                            }
                            else if ((_selectedProtocol == 1 || _selectedProtocol == 4) && ipHeader.ProtocolType == Protocol.UDP) //UDP
                            {
                                showPacket = true;
                            }
                        }
                    }
                    else
                    {
                        if (_performIPFilter == false | (_performIPFilter == true & (_filterIP.Equals(ipHeader.SourceAddress) | _filterIP.Equals(ipHeader.DestinationAddress))))
                        {
                            if (_selectedProtocol == 3)
                            {
                                showPacket = true;
                            }
                            else if (_selectedProtocol == 5 && ipHeader.ProtocolType == Protocol.TCP) //TCP
                            {
                                showPacket = true;
                            }
                            else if (_selectedProtocol == 4 && ipHeader.ProtocolType == Protocol.UDP) //UDP
                            {
                                showPacket = true;
                            }
                        }
                    }

                    if (showPacket)
                    {
                        var displayPacket = GetDisplayPacket(ipHeader);
                        DGV.Invoke(_dgvUpdateHandler, displayPacket);
                    }

                    if (_showPacketinGrid == true)
                    {
                        // Restart the Receiving
                        BeginReceive();
                    }
                }
            }
            catch (Exception)
            {
            }
        }