1

编辑:回答服务器故障。谢谢!

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

有没有可以用来从假地址生成 ARP 请求的软件?这与 ARP 欺骗类似但又不完全相同,因为我试图伪造请求而不是回复。是否有任何欺骗工具具有此功能?或者有没有办法强制 Windows 或 Linux 发送 ARP 探测?

4

1 回答 1

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()
于 2011-06-23T13:51:15.793 回答