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(); }
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); }
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("]"); }
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(); }
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(); }
public OSPFDisplayPacket(IpV4Header ipHeader, OSPFHeader icmpHeader) { }
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) {
public DCCPDisplayPacket(IpV4Header ipHeader, DCCPHeader icmpHeader) { }
public EIGRPDisplayPacket(IpV4Header ipHeader, EIGRPHeader icmpHeader) { }
public GREDisplayPacket(IpV4Header ipHeader, GREHeader icmpHeader) { }
public UnknownDisplayPacket(IpV4Header ipHeader) { }
public IPDisplayPacket(IpV4Header ipHeader) { Source = ipHeader.SourceAddress; Destination = ipHeader.DestinationAddress; Type = ipHeader.ProtocolType; }
/// <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); }
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) { } }