编辑:在Serverfault上回答。谢谢!

当我测试的产品收到带有0.0.0.0的发件人IP地址的ARP请求时,它似乎吓坏了。这不是ARP探测器,因为请求已通信到我的模块,并且客户的系统在开始使用自己的有效IP地址之前发送请求,这与我的模块的IP地址不同。问题是在实验室中重新创建,而不必前往客户的网站。

我可以使用虚假地址生成ARP请求的软件吗?这与ARP欺骗相似,但与ARP欺骗不完全相同,因为我试图伪造请求而不是答复。任何欺骗工具是否具有此功能?还是有一种方法可以强制Windows或Linux发送ARP探针?

有帮助吗?

解决方案

您可以使用Python2来完成这项工作。这真的很简单。您将需要扎根特权来打开原始插座和使用Python的一些知识。

import socket
import struct

#Packet structure explanation:
#destmac = 0xff,0xff,0xff,0xff,0xff,0xff
#sourcemac = 0x00,0x11,0x22,0x33,0x44,0x55
#etherflags = 0x0806,0x0001,0x0800
#arpflags = 0x6,0x4,0x0001
#sourcemac = 0x00,0x11,0x22,0x33,0x44,0x55
#sourceip = 0xc0,0xa8,0x2b,0x7a
#targmac = 0x00,0x00,0x00,0x00,0x00,0x00
#targip = 0xc0,0xa8,0x2b,0x0c

packet = struct.pack('!12B3H2BH10B10B', 0xff,0xff,0xff,0xff,0xff,0xff, 0x00,0x11,0x22,0x33,0x44,0x55, 0x0806,0x0001,0x0800, 0x6,0x4,0x0001 ,0x00,0x11,0x22,0x33,0x44,0x55, 0xc0,0xa8,0x2b,0x7a, 0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0xa8,0x2b,0x0c)

sock = socket.socket(socket.PF_PACKET, socket.SOCK_RAW)
sock.bind(('eth0', 6)) # 6 its protocol number
sock.send(packet)
sock.close()
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top