2013-01-01 10 views
6

Ich versuche bisher erfolglos, ein ARP-Paket, das ich mit Packet.Net erstellt habe, mit SharpPcap zu senden. Das Problem ist, obwohl ich das Paket mit device.SendPacket senden es nicht tatsächlich gesendet wird, und ich habe keine Ahnung warum.Ich sende mein eigenes ARP-Paket mit SharpPcap und Packet.Net

Dies ist mein Code:

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

By the way, ist es wichtig, dass ich meine eigenen ARP-Pakete senden und nicht nur die SharpPcap ARP-Klasse verwenden.

+0

Haben Sie Wireshark auf dem Sendecomputer verwendet, um zu sehen, welches Paket gesendet wird? Haben Sie versucht, Pcap.Net zu verwenden (wenn nicht, warum haben Sie diese Frage mit Pcap.Net markiert)? – brickner

+0

Ja, ich habe Wireshark verwendet und nach "arp" gefiltert. Ich habe mein Paket nicht gefunden. Das Pcap.Net-Tag war aus Versehen (bedeutete es ein Packet.Net-Tag, änderte es jetzt), und wenn ich keine Lösung finden werde, werde ich Pcap.Net verwenden, aber ich mag Packet.Net und SharpPcap viel mehr . – Cokegod

Antwort

4
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); 
} 

diese Funktion versuchen, aus: http://stolenpackets.net/?p=29

+0

WOW! Ich habe SharpPcap beinahe aufgegeben, aber das funktioniert tatsächlich! Obwohl ich keine Ahnung habe, warum dieser Code funktioniert und meins nicht, aber ich werde mich darum kümmern. Wie auch immer, vielen Dank! – Cokegod

+0

Gern geschehen, froh, dass ich helfen konnte. :) –

2

bei this code Suche gibt es keine ethernetpacket beteiligt

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

Sagt mir, dass "'PacketDotNet.ARPPacket' keine Definition für 'ARPTargetProtoAddress'" und dasselbe mit 'DestinationHwAddress' enthält. Wahrscheinlich, weil der Code in Ihrem Link von SharpPcap Version 2.1.2 ist, während ich die neueste Version verwende, die 4.1.0 ist. – Cokegod

Verwandte Themen