发送我自己的ARP包使用SharpPcap和Packet.Net

本文关键字:SharpPcap Packet Net 包使用 ARP 我自己 自己的 | 更新日期: 2023-09-27 17:50:26

到目前为止,我正在尝试发送我用packet创建的ARP数据包,但没有成功。Net使用SharpPcap。问题是,即使我使用device.SendPacket发送数据包,它实际上并没有被发送,我不知道为什么。

这是我的代码:

ARPPacket arpPacket = new ARPPacket(ARPOperation.Request, PhysicalAddress.Parse("000000000000"), targetIpAddress, device.Interface.MacAddress, myIpAddress);
EthernetPacket ethPacket = new EthernetPacket(device.Interface.MacAddress, PhysicalAddress.Parse("FFFFFFFFFFFF"), EthernetPacketType.Arp);
ethPacket.PayloadPacket = arpPacket;
device.Open();
device.SendPacket(ethPacket);
device.Close();

顺便说一下,重要的是我发送我自己的ARP数据包,而不仅仅是使用SharpPcap ARP类。

发送我自己的ARP包使用SharpPcap和Packet.Net

public static void ARP(IPAddress ipAddress , LivePcapDevice device)
{
if (ipAddress == null )
throw new Exception("ARP IP address Cannot be null");
var ethernetPacket = new PacketDotNet.EthernetPacket(device.Addresses[1].Addr.hardwareAddress, PhysicalAddress.Parse("FF-FF-FF-FF-FF-FF"), PacketDotNet.EthernetPacketType.Arp);
var arpPacket = new PacketDotNet.ARPPacket(PacketDotNet.ARPOperation.Request, PhysicalAddress.Parse("00-00-00-00-00-00"), ipAddress , device.Addresses[1].Addr.hardwareAddress, device.Addresses[0].Addr.ipAddress );
ethernetPacket.PayloadPacket = arpPacket;
device.SendPacket(ethernetPacket);
}

尝试这个函数,从:http://stolenpackets.net/?p=29

查看此代码,没有涉及到ethernetpacket

ARPPacket arpPacket = new ARPPacket(ARPOperation.Request, PhysicalAddress.Parse("000000000000"), targetIpAddress, device.Interface.MacAddress, myIpAddress);
arpPacket.ARPTargetProtoAddress = destIP;
arpPacket.DestinationHwAddress = PhysicalAddress.Parse("FF-FF-FF-FF-FF-FF");
device.Open();
device.SendPacket(arpPacket);
device.Close();