2013-01-01 15 views
6

Sto tentando finora di inviare un pacchetto ARP che ho creato con Packet.Net utilizzando SharpPcap. Il problema è anche se invio il pacchetto usando device.SendPacket in realtà non viene inviato, e non ho idea del perché.Invio del mio pacchetto ARP utilizzando SharpPcap e Packet.Net

Questo è il mio codice:

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

A proposito, è importante che io mando i miei pacchetti ARP e non basta usare la classe SharpPcap ARP.

+0

Hai usato Wireshark sul computer di invio per vedere che cosa pacchetto viene inviato? Hai provato a usare Pcap.Net (se no, perché hai taggato questa domanda con Pcap.Net)? – brickner

+0

Sì, ho usato Wireshark e il filtro per 'arp' Non ho trovato il mio pacchetto. Il tag Pcap.Net era per errore (significava che si trattava di un tag Packet.Net, lo cambiava ora), e se non troverò una soluzione userò Pcap.Net, ma mi piacciono molto più Packet.Net e SharpPcap . – Cokegod

risposta

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

Prova questa funzione, da: http://stolenpackets.net/?p=29

+0

WOW! Ho quasi rinunciato a usare SharpPcap ma questo funziona davvero! Anche se non ho idea del perché questo codice funzioni e il mio no, ma cercherò di approfondirlo. Comunque, grazie mille! – Cokegod

+0

prego, felice di poterti aiutare. :) –

2

guardando this code non c'è ethernetpacket coinvolto

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

Mi dice che "'PacketDotNet.ARPPacket' non contiene una definizione per 'ARPTargetProtoAddress'" e lo stesso con 'DestinationHwAddress'. Probabilmente perché il codice nel tuo link proviene da SharpPcap versione 2.1.2 mentre sto usando l'ultima versione che è la 4.1.0. – Cokegod

Problemi correlati