我正在使用 Ruby packetfu 库来构造和发送原始数据包。我可以让它工作,但我认为我做错了一些事情。(顺便说一句,ruby+packetfu 真的让整个原始数据包操作变得容易..)
这是我的代码:(MAC地址被掩盖了一点)
packet.eth_saddr = "XX:XX:88:XX:03:BD"
packet.eth_daddr = "XX:6D:57:AD:XX:A3"
packet.ip_header.ip_saddr="192.168.0.16"
packet.ip_header.ip_daddr="192.168.0.13"
当我调用 packet.to_w('eth0') 时,它会被传递。正如你所看到的,是 MAC 地址让我摸不着头脑。每次需要发送数据包时都必须弄清楚目标MAC地址真的很不方便......我已经测试过源MAC地址不是那么重要,没有它它仍然可以工作。但是目标 MAC 地址是必须的(没有它,数据包不会出去)。
而且我不记得必须在 C 中使用原始套接字执行此操作...如果我需要在将数据包放在网络上之前执行 ARP 会很糟糕,更糟糕的是,如果我需要执行 DNS 查询或其他操作我将数据包发送到互联网....
我想我在这里遗漏了一些东西,比如我需要打电话的单线……但在阅读了 packetfu 的代码和文档后,我无法弄清楚……
任何人?