/// <summary> /// icmp报文分析 /// </summary> public void icmpProtocol() { if (epac.Type.ToString() == "IpV4" && ip4.Protocol.ToString() == "ICMP") { var icmppacket = (ICMPv4Packet)ip4.Extract(typeof(ICMPv4Packet)); int LE = (icmppacket.ID / 256) + ((icmppacket.ID % 256) << 8); int sqLE = (icmppacket.Sequence / 256) + ((icmppacket.Sequence % 256) << 8); string data1 = ""; IcmpInforArray.Add("Type: " + Convert.ToString(icmppacket.Bytes[0], 10) + ")\n"); IcmpInforArray.Add("Code: " + Convert.ToString(icmppacket.Bytes[1], 10) + "\n"); IcmpInforArray.Add("Checksum: 0x" + Convert.ToString(icmppacket.Checksum, 16).PadLeft(4, '0') + "\n"); IcmpInforArray.Add("Identifier(BE): " + icmppacket.ID.ToString() + " (0x" + Convert.ToString(icmppacket.ID, 16).PadLeft(4, '0') + ")\n"); IcmpInforArray.Add("Identifier(LE): " + LE.ToString() + " (0x" + Convert.ToString(LE, 16).PadLeft(4, '0') + ")\n"); IcmpInforArray.Add("Sequence number(BE): " + icmppacket.Sequence.ToString() + " (0x" + Convert.ToString(icmppacket.Sequence, 16).PadLeft(4, '0') + ")\n"); IcmpInforArray.Add("Sequence number(LE): " + sqLE.ToString() + " (0x" + Convert.ToString(sqLE, 16).PadLeft(4, '0') + ")\n"); for (int i = icmppacket.Header.Length; i < icmppacket.Bytes.Length; i++) { data1 = data1 + Convert.ToChar(icmppacket.Bytes[i]); } IcmpInforArray.Add("Data: " + data1 + "\n"); KeyWords.Add(icmppacket.ID.ToString().ToUpper()); KeyWords.Add(icmppacket.Sequence.ToString().ToUpper()); this.color = "Gold"; this.data = Encoding.UTF8.GetString(icmppacket.PayloadData); this.information = " id=" + icmppacket.ID.ToString() + ", seq=" + icmppacket.Sequence.ToString() + ", ttl=" + ip4.TimeToLive.ToString(); } else if (epac.Type.ToString() == "IpV6") { var icmppacket = (ICMPv6Packet)ip6.Extract(typeof(ICMPv6Packet)); try { IcmpInforArray.Add("Type: " + icmppacket.Type.ToString() + "\n"); } catch { ; } IcmpInforArray.Add("Checksum: " + icmppacket.Checksum.ToString() + "\n"); IcmpInforArray.Add("Code: " + icmppacket.Code.ToString() + "\n"); IcmpInforArray.Add("Identifier: " + Convert.ToString(icmppacket.Bytes[4], 10) + "\n"); KeyWords.Add(Convert.ToString(icmppacket.Bytes[4], 10).ToUpper()); this.color = "Gold"; //this.information = icmppacket.Type.ToString() + "id = " + Convert.ToString(icmppacket.Bytes[4], 10); } else { MessageBox.Show("ICMPv6"); ; } }