/// заполняем данные в грид и в XML фаиле private void OnAddRowIP(byte[] byteData, int nReceived) { IPHeader ipHeader = new IPHeader(byteData, nReceived); countpackets++; // выбираем правило записи switch (ipHeader.ProtocolType) { case Protocol.TCP: TCPHeader tcpHeader = new TCPHeader(ipHeader.Data, ipHeader.MessageLength); // считываем из потока данные в xml XmlAddPacket(countpackets.ToString(), ipHeader.SourceAddress.ToString(), ipHeader.DestinationAddress.ToString(), ipHeader.Version, ipHeader.HeaderLength, ipHeader.DifferentiatedServices, ipHeader.TotalLength, ipHeader.Identification, ipHeader.Flags, ipHeader.FragmentationOffset, ipHeader.TTL, ipHeader.ProtocolType.ToString(), ipHeader.Checksum, "", tcpHeader.SourcePort, tcpHeader.DestinationPort, tcpHeader.SequenceNumber, tcpHeader.AcknowledgementNumber, tcpHeader.HeaderLength, tcpHeader.Flags, tcpHeader.WindowSize, tcpHeader.Checksum, tcpHeader.UrgentPointer, tcpHeader.Data); if (tcpHeader.DestinationPort == "53" || tcpHeader.SourcePort == "53") { // AddRowDNSProtocol RowDNSProtocol = new AddRowDNSProtocol(MakeDNS); // dgvParamProt.Invoke(RowDNSProtocol, new object[] { tcpHeader.Data, (int)tcpHeader.MessageLength }); } break; case Protocol.UDP: UDPHeader udpHeader = new UDPHeader(ipHeader.Data, (int)ipHeader.MessageLength); // считываем из потока данные в xml XmlAddPacket(countpackets.ToString(), ipHeader.SourceAddress.ToString(), ipHeader.DestinationAddress.ToString(), ipHeader.Version, ipHeader.HeaderLength, ipHeader.DifferentiatedServices, ipHeader.TotalLength, ipHeader.Identification, ipHeader.Flags, ipHeader.FragmentationOffset, ipHeader.TTL, ipHeader.ProtocolType.ToString(), ipHeader.Checksum, "", udpHeader.SourcePort, udpHeader.DestinationPort, udpHeader.Length, udpHeader.Checksum, udpHeader.Data); if (udpHeader.DestinationPort == "53" || udpHeader.SourcePort == "53") { // AddRowDNSProtocol RowDNSProtocol = new AddRowDNSProtocol(MakeDNS); // dgvParamProt.Invoke(RowDNSProtocol, new object[] { udpHeader.Data, Convert.ToInt32(udpHeader.Length) - 8 }); } break; case Protocol.Unknown: break; } AddPacketToGrid(); }
/// Парсим полученный массив байтов в читабельный вид private void ParseData(byte[] byteData, int nReceived) { IPHeader ipHeader = new IPHeader(byteData, nReceived); AddRowIP AddRowIP2 = new AddRowIP(OnAddRowIP); dgvPackets.Invoke(AddRowIP2, new object[] { byteData, nReceived }); //switch (ipHeader.ProtocolType) //{ // case Protocol.TCP: // TCPHeader tcpHeader = new TCPHeader(ipHeader.Data, ipHeader.MessageLength); // AddRowTCPProtocol RowTCPProtocol = new AddRowTCPProtocol(MakeTCP); // dgvParamProt.Invoke(RowTCPProtocol, new object[] { tcpHeader }); // if (tcpHeader.DestinationPort == "53" || tcpHeader.SourcePort == "53") // { // AddRowDNSProtocol RowDNSProtocol = new AddRowDNSProtocol(MakeDNS); // dgvParamProt.Invoke(RowDNSProtocol, new object[] { tcpHeader.Data, (int)tcpHeader.MessageLength }); // } // 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 // AddRowUDPProtocol RowUDPProtocol = new AddRowUDPProtocol(MakeUDP); // dgvParamProt.Invoke(RowUDPProtocol, new object[] { udpHeader }); // //If the port is equal to 53 then the underlying protocol is DNS // //Note: DNS can use either TCP or UDP thats why the check is done twice // if (udpHeader.DestinationPort == "53" || udpHeader.SourcePort == "53") // { // AddRowDNSProtocol RowDNSProtocol = new AddRowDNSProtocol(MakeDNS); // dgvParamProt.Invoke(RowDNSProtocol, new object[] { udpHeader.Data, Convert.ToInt32(udpHeader.Length) - 8 }); // } // break; // case Protocol.Unknown: // break; //} }
/// Парсим полученный массив байтов в читабельный вид private void ParseData(byte[] byteData, int nReceived) { IPHeader ipHeader = new IPHeader(byteData, nReceived); AddRowIP AddRowIP2 = new AddRowIP(OnAddRowIP); dgvPackets.Invoke(AddRowIP2, new object[] {byteData, nReceived }); //switch (ipHeader.ProtocolType) //{ // case Protocol.TCP: // TCPHeader tcpHeader = new TCPHeader(ipHeader.Data, ipHeader.MessageLength); // AddRowTCPProtocol RowTCPProtocol = new AddRowTCPProtocol(MakeTCP); // dgvParamProt.Invoke(RowTCPProtocol, new object[] { tcpHeader }); // if (tcpHeader.DestinationPort == "53" || tcpHeader.SourcePort == "53") // { // AddRowDNSProtocol RowDNSProtocol = new AddRowDNSProtocol(MakeDNS); // dgvParamProt.Invoke(RowDNSProtocol, new object[] { tcpHeader.Data, (int)tcpHeader.MessageLength }); // } // 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 // AddRowUDPProtocol RowUDPProtocol = new AddRowUDPProtocol(MakeUDP); // dgvParamProt.Invoke(RowUDPProtocol, new object[] { udpHeader }); // //If the port is equal to 53 then the underlying protocol is DNS // //Note: DNS can use either TCP or UDP thats why the check is done twice // if (udpHeader.DestinationPort == "53" || udpHeader.SourcePort == "53") // { // AddRowDNSProtocol RowDNSProtocol = new AddRowDNSProtocol(MakeDNS); // dgvParamProt.Invoke(RowDNSProtocol, new object[] { udpHeader.Data, Convert.ToInt32(udpHeader.Length) - 8 }); // } // break; // case Protocol.Unknown: // break; //} }
/// заполняем данные в грид и в XML фаиле private void OnAddRowIP(byte[] byteData, int nReceived) { IPHeader ipHeader = new IPHeader(byteData, nReceived); countpackets++; // выбираем правило записи switch (ipHeader.ProtocolType) { case Protocol.TCP: TCPHeader tcpHeader = new TCPHeader(ipHeader.Data, ipHeader.MessageLength); // считываем из потока данные в xml XmlAddPacket(countpackets.ToString(), ipHeader.SourceAddress.ToString(), ipHeader.DestinationAddress.ToString(), ipHeader.Version, ipHeader.HeaderLength, ipHeader.DifferentiatedServices, ipHeader.TotalLength, ipHeader.Identification, ipHeader.Flags, ipHeader.FragmentationOffset, ipHeader.TTL, ipHeader.ProtocolType.ToString(), ipHeader.Checksum, "", tcpHeader.SourcePort, tcpHeader.DestinationPort, tcpHeader.SequenceNumber, tcpHeader.AcknowledgementNumber, tcpHeader.HeaderLength, tcpHeader.Flags, tcpHeader.WindowSize, tcpHeader.Checksum, tcpHeader.UrgentPointer, tcpHeader.Data); if (tcpHeader.DestinationPort == "53" || tcpHeader.SourcePort == "53") { // AddRowDNSProtocol RowDNSProtocol = new AddRowDNSProtocol(MakeDNS); // dgvParamProt.Invoke(RowDNSProtocol, new object[] { tcpHeader.Data, (int)tcpHeader.MessageLength }); } break; case Protocol.UDP: UDPHeader udpHeader = new UDPHeader(ipHeader.Data,(int)ipHeader.MessageLength); // считываем из потока данные в xml XmlAddPacket(countpackets.ToString(), ipHeader.SourceAddress.ToString(), ipHeader.DestinationAddress.ToString(), ipHeader.Version, ipHeader.HeaderLength, ipHeader.DifferentiatedServices, ipHeader.TotalLength, ipHeader.Identification, ipHeader.Flags, ipHeader.FragmentationOffset, ipHeader.TTL, ipHeader.ProtocolType.ToString(), ipHeader.Checksum, "", udpHeader.SourcePort, udpHeader.DestinationPort, udpHeader.Length, udpHeader.Checksum, udpHeader.Data); if (udpHeader.DestinationPort == "53" || udpHeader.SourcePort == "53") { // AddRowDNSProtocol RowDNSProtocol = new AddRowDNSProtocol(MakeDNS); // dgvParamProt.Invoke(RowDNSProtocol, new object[] { udpHeader.Data, Convert.ToInt32(udpHeader.Length) - 8 }); } break; case Protocol.Unknown: break; } AddPacketToGrid(); }