參考上一篇:
使用WinPcap(SharpPcap)實現ARP抓包以實現設備IP搜索功能
搜索出設備后,需要修改設備IP網關掩碼等信息
繼續采用ARP包
getBas類似之前的,根據用戶電腦的網卡物理地址mac,還有修改后的ip, netmask, gateway發送arp包
設備接收到后解析修改即可。
//遍歷網卡 foreach (var device in devices1) { if (!device.Description.ToLower().Contains("vmware") && !device.Description.ToLower().Contains("virtual"))//排除虛擬機網卡 { DeviceThread = new Thread(new ThreadStart(() => { if (device.Addresses.Count > 0) { foreach (var address in device.Addresses) { if (address.Addr.type == SharpPcap.LibPcap.Sockaddr.AddressTypes.AF_INET_AF_INET6) { if (address.Addr.ipAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { localIP = address.Addr.ipAddress; break; } } } } foreach (var address in device.Addresses) { if (address.Addr.type == SharpPcap.LibPcap.Sockaddr.AddressTypes.HARDWARE) { localMAC = address.Addr.hardwareAddress; } } var ethernetPacket = new EthernetPacket(localMAC, pmac, EthernetPacketType.Arp); var arpPacket = new ARPPacket(getBas(mac, ip, netmask, gateway)); ethernetPacket.PayloadPacket = arpPacket; device.Open(); device.SendPacket(ethernetPacket); device.Close(); })); DeviceThread.IsBackground = true; DeviceThread.Start(); } }