コード例 #1
0
        /// <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");
                ;
            }
        }