我正在构建一个人工网桥,为了让数据包通过它,它必须发送一个 arp 响应,就好像它是目标计算机一样,以便针对网络另一端的数据包通过它。
我找到了一种发送 ARP 请求广播的方法 使用 SharpPcap 和 Packet.Net 发送我自己的 ARP 数据包
但是我找不到任何关于如何发送响应的 API 描述。
谢谢
我正在构建一个人工网桥,为了让数据包通过它,它必须发送一个 arp 响应,就好像它是目标计算机一样,以便针对网络另一端的数据包通过它。
我找到了一种发送 ARP 请求广播的方法 使用 SharpPcap 和 Packet.Net 发送我自己的 ARP 数据包
但是我找不到任何关于如何发送响应的 API 描述。
谢谢
我寻找了一个示例 ARP pcap 文件并找到了这个:http://packetlife.net/captures/icmp_in_l2tpv3.cap(在 Wireshark 中搜索 arp)。
下面是Pcap.Net代码,它应该在这个文件中创建一个与 ARP 回复数据包等效的数据包:
Packet packet = PacketBuilder.Build(
DateTime.Now,
new EthernetLayer
{
Source = new MacAddress("00:50:56:a5:64:4d"),
Destination = new MacAddress("00:50:56:9a:78:c7"),
EtherType = EthernetType.Arp
},
new ArpLayer
{
ProtocolType = EthernetType.IpV4,
SenderHardwareAddress = new byte[] {0x00, 0x50, 0x56, 0xa5, 0x64, 0x4d}.AsReadOnly(),
SenderProtocolAddress = new byte[] {0x0a, 0xd8, 0x64, 0xd2}.AsReadOnly(),
TargetHardwareAddress = new byte[] {0x00, 0x50, 0x56, 0x9a, 0x78, 0xc7}.AsReadOnly(),
TargetProtocolAddress = new byte[] {0x0a, 0xd8, 0x64, 0xd3}.AsReadOnly(),
Operation = ArpOperation.Reply,
});