示例#1
0
        public JCaptureDevice GatherNetworkDeviceInfo()
        {
            CaptureDeviceList devices = CaptureDeviceHelpers.FindCaptureDevices();

            foreach (var dev in devices)
            {
                string deviceDescription = dev.ToString().Replace(" ", "");

                string deviceIpAddress = NetworkRegularExpressions.GetIpAddressString(deviceDescription);

                //Select the NIC
                if (IPHelpers.IpIsInOurSubnet(deviceIpAddress))
                {
                    string macAddress = NetworkRegularExpressions.GetMatchString(deviceDescription);

                    JCaptureDevice jDev = new JCaptureDevice
                    {
                        CaptureDevice   = dev,
                        OurIpAddress    = IPHelpers.GetIpAddress(deviceDescription),
                        GatewayIpAddess = IPHelpers.GetGatewayIp(deviceDescription),
                        SubnetMask      = IPHelpers.GetNetMask(deviceDescription),
                        OurMacAddress   = new PhysicalAddress(macAddress.Split(':').Select(x => Convert.ToByte(x, 16)).ToArray())
                    };

                    return(jDev);
                }
            }

            return(null);
        }
示例#2
0
        private void device_OnPacketArrival(object sender, CaptureEventArgs packet)
        {
            Packet packetOuter = Packet.ParsePacket(packet.Packet.LinkLayerType, packet.Packet.Data);

            ARPPacket arpPacket = ARPPacket.GetEncapsulated(packetOuter);

            if (CaptureDeviceHelpers.CheckIfArpReplyIsForUs(arpPacket, _ipsInSubnet, _onlineClients))
            {
                _onlineClients.Add(new Target
                {
                    Ip  = arpPacket.SenderProtocolAddress.ToString(),
                    Mac = arpPacket.SenderHardwareAddress.ToString()
                });
            }
        }