Beispiel #1
0
        /// <summary>
        /// 截获包基本信息
        /// </summary>
        /// <returns></returns>
        public static DevicePacket ConvertPacketToDevice(this Packet packet)
        {
            DevicePacket devPacket = new DevicePacket();

            devPacket.Protocol = "未知";
            devPacket.DataLen  = packet.Bytes.Length;

            EthernetPacket ethernetPacket = packet.GetPacketType <EthernetPacket>() as EthernetPacket;

            if (ethernetPacket != null)
            {
                devPacket = packet.GetEthernetPacket(ethernetPacket, devPacket);
                return(devPacket);
            }

            #region "暂时不处理协议"

            //PPPPacket ppp = packet.GetPacketType<PPPPacket>();
            //if (ppp != null)
            //{
            //    devPacket.Protocol = "PPP";
            //    devPacket.SourceAddress = "---";
            //    devPacket.DestinationAddress = "---";
            //    devPacket.Desc = $"协议类型:{ppp.Protocol.ToString()}";

            //    return devPacket;
            //}

            #endregion


            return(devPacket);
        }
Beispiel #2
0
        public static DevicePacket GetEthernetPacket(this Packet packet, EthernetPacket ethernetPacket, DevicePacket devPacket)
        {
            //如果是IP类型
            IpPacket ipPacket = packet.GetPacketType <IpPacket>();

            if (ipPacket != null)
            {
                if (ipPacket.Version == IpVersion.IPv4)
                {
                    devPacket.Protocol = "IPv4";
                }
                else
                {
                    devPacket.Protocol = "IPv6";
                }
                devPacket.SourceAddress      = ipPacket.SourceAddress.ToString();
                devPacket.DestinationAddress = ipPacket.DestinationAddress.ToString();
                devPacket.Desc = $"[下层协议:{ipPacket.NextHeader.ToString()}[版本:{ipPacket.Version.ToString()}]";


                TcpPacket tcpPacket = packet.GetPacketType <TcpPacket>();

                if (tcpPacket != null)
                {
                    devPacket.Protocol        = "TCP";
                    devPacket.SourcePort      = tcpPacket.SourcePort.ToString();
                    devPacket.DestinationPort = tcpPacket.DestinationPort.ToString();
                    return(devPacket);
                }

                UdpPacket udpPacket = packet.GetPacketType <UdpPacket>();
                if (udpPacket != null)
                {
                    devPacket.Protocol        = "UDP";
                    devPacket.SourcePort      = udpPacket.SourcePort.ToString();
                    devPacket.DestinationPort = udpPacket.DestinationPort.ToString();
                    return(devPacket);
                }

                #region "暂时不处理协议"

                //ICMPv4Packet icmpv4Packet = packet.GetPacketType<ICMPv4Packet>();
                //if (icmpv4Packet != null)
                //{
                //    devPacket.Protocol = "ICMPv4";
                //    devPacket.Desc = $"校验:{icmpv4Packet.Checksum.ToString()},类型:{icmpv4Packet.TypeCode.ToString()},序列号:{icmpv4Packet.Sequence.ToString()}";

                //    return devPacket;
                //}

                //ICMPv6Packet icmpv6Packet = packet.GetPacketType<ICMPv6Packet>();
                //if (icmpv6Packet != null)
                //{
                //    devPacket.Protocol = "ICMPv6";
                //    devPacket.Desc = $"Code:{icmpv6Packet.Code.ToString()},Type:{icmpv6Packet.Type.ToString()}";

                //    return devPacket;
                //}

                //IGMPv2Packet imgpv2Packet = packet.GetPacketType<IGMPv2Packet>();
                //if (imgpv2Packet != null)
                //{
                //    devPacket.Protocol = "IGMPv2";
                //    devPacket.Desc = $"只适用于IGMPv2,组地址:{imgpv2Packet.GroupAddress.ToString()},类型:{imgpv2Packet.Type.ToString()}";

                //    return devPacket;
                //}

                #endregion

                return(devPacket);
            }


            #region "暂时不处理协议"

            //ARPPacket arpPacket = packet.GetPacketType<ARPPacket>();
            //if (arpPacket != null)
            //{
            //    devPacket.Protocol = "ARP";
            //    devPacket.SourceAddress = ArpHelper.CovnertMacToStr(arpPacket.SenderHardwareAddress.GetAddressBytes());
            //    devPacket.DestinationAddress = ArpHelper.CovnertMacToStr(arpPacket.TargetHardwareAddress.GetAddressBytes());
            //    devPacket.Desc = $"Arp操作方式:{arpPacket.Operation.ToString()},发送者:{arpPacket.SenderProtocolAddress.ToString()},目标:{arpPacket.TargetProtocolAddress.ToString()}";
            //    return devPacket;
            //}

            //WakeOnLanPacket wakeOnLanPacket = packet.GetPacketType<WakeOnLanPacket>();
            //if (wakeOnLanPacket != null)
            //{
            //    devPacket.Protocol = "Wake On Lan";
            //    devPacket.DestinationAddress = ArpHelper.CovnertMacToStr(wakeOnLanPacket.DestinationMAC.GetAddressBytes());
            //    devPacket.Desc = $"唤醒网络地址:{wakeOnLanPacket.DestinationMAC.ToString()},有效性:{wakeOnLanPacket.IsValid().ToString()}";
            //    return devPacket;
            //}

            //PPPoEPacket pPPoEPacket = packet.GetPacketType<PPPoEPacket>();
            //if (pPPoEPacket != null)
            //{
            //    devPacket.Protocol = "PPPoE";
            //    devPacket.Desc = $"{pPPoEPacket.Type.ToString()},{pPPoEPacket.Version.ToString()}";
            //    return devPacket;
            //}

            #endregion

            return(devPacket);
        }