0

我正在构建一个人工网桥,为了让数据包通过它,它必须发送一个 arp 响应,就好像它是目标计算机一样,以便针对网络另一端的数据包通过它。

我找到了一种发送 ARP 请求广播的方法 使用 SharpPcap 和 Packet.Net 发送我自己的 ARP 数据包

但是我找不到任何关于如何发送响应的 API 描述。

谢谢

4

1 回答 1

0

我寻找了一个示例 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,
    });
于 2015-09-23T05:42:37.850 回答