【问题标题】:Sending my own ARP packet using SharpPcap and Packet.Net使用 SharpPcap 和 Packet.Net 发送我自己的 ARP 数据包
【发布时间】:2012-12-16 09:39:20
【问题描述】:

到目前为止,我正在尝试发送一个使用 SharpPcap 使用 Packet.Net 创建的 ARP 数据包,但没有成功。问题是即使我使用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 类。

【问题讨论】:

  • 您是否在发送计算机上使用过 Wireshark 来查看正在发送的数据包?您是否尝试过使用 Pcap.Net(如果没有,您为什么用 Pcap.Net 标记这个问题)?
  • 是的,我使用了 Wireshark 并过滤了“arp”,但没有找到我的数据包。 Pcap.Net 标签是错误的(意味着它是 Packet.Net 标签,现在更改了),如果我找不到解决方案,我将使用 Pcap.Net,但我更喜欢 Packet.Net 和 SharpPcap .

标签: c# sharppcap packet.net


【解决方案1】:
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

【讨论】:

  • 哇!我几乎放弃了使用 SharpPcap 但这确实有效!虽然我不知道为什么这段代码有效而我的无效,但我会调查一下。无论如何,非常感谢!
【解决方案2】:

查看this code 没有涉及以太网包

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();

【讨论】:

  • 告诉我“'PacketDotNet.ARPPacket' 不包含'ARPTargetProtoAddress' 的定义”并且与“DestinationHwAddress”相同。可能是因为您链接中的代码来自 SharpPcap 2.1.2 版,而我使用的是最新版本 4.1.0。
猜你喜欢
  • 2015-03-18
  • 2012-02-21
  • 2012-12-05
  • 1970-01-01
  • 2015-04-08
  • 2011-12-27
  • 2011-11-15
  • 2011-02-08
  • 1970-01-01
相关资源
最近更新 更多