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); }
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() }); } }