编辑:在serverfault上回答。谢谢!
我正在测试的产品在收到发件人IP地址为0.0.0.0的ARP请求时似乎会吓坏。这不是ARP探测器,因为请求发送到我的模块,并且客户的系统在它开始使用其自己的有效IP地址之前发送请求,该IP地址与我的模块的IP地址不同。问题是在实验室中重新创建,而不是必须前往客户的网站。
我可以使用软件从虚假地址生成ARP请求吗?这与ARP欺骗类似,但不完全相同,因为我试图伪造请求而不是回复。任何欺骗工具都有这个功能吗?或者有办法强制Windows或Linux发送ARP探测吗?
答案 0 :(得分:1)
您可以使用Python2来完成这项工作。这真的很简单。您将需要root权限才能打开RAW套接字和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()