2013-01-01 18 views
6

Próbuję jak dotąd bezskutecznie wysłać pakiet ARP, który utworzyłem przy użyciu Packet.Net przy użyciu SharpPcap. Problem polega na tym, że wysyłam pakiet przy użyciu device.SendPacket, ale nie jest on wysyłany i nie mam pojęcia dlaczego.Wysyłanie własnego pakietu ARP przy użyciu SharpPcap i Packet.Net

To jest mój kod:

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

Nawiasem mówiąc, jest to ważne, że mogę wysłać moje własne pakiety ARP, a nie po prostu użyć klasy SharpPcap ARP.

+0

Czy korzystal Wireshark na komputerze wysyłającego, aby zobaczyć co pakiet jest wysyłany? Czy próbowałeś używać Pcap.Net (jeśli nie, dlaczego oznaczyłeś to pytanie przez Pcap.Net)? – brickner

+0

Tak Użyłem Wireshark i filtrowanie dla 'arp' Nie znalazłem mojego pakietu. Tag Pcap.Net był przez pomyłkę (oznaczał, że jest to tag Packet.Net, zmienił go teraz), a jeśli nie znajdę rozwiązania, skorzystam z Pcap.Net, ale lubię Packet.Net i SharpPcap znacznie więcej . – Cokegod

Odpowiedz

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

Wypróbuj tę funkcję, z ethernetpacket: http://stolenpackets.net/?p=29

+0

WOW! Prawie zrezygnowałem z używania SharpPcap, ale to działa! Chociaż nie mam pojęcia, dlaczego ten kod działa, a mój nie, ale przyjrzę się temu. W każdym razie, wielkie dzięki! – Cokegod

+0

Nie ma za co, cieszę się, że mogę pomóc. :) –

2

patrząc na this code nie ma udział

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

Informuje mnie, że "PacketDotNet.ARPPacket" nie zawiera definicji "ARPTargetProtoAddress" "i tej samej z" DestinationHwAddress ". Prawdopodobnie dlatego, że kod w twoim linku pochodzi z wersji SharpPcap 2.1.2, a ja używam najnowszej wersji 4.1.0. – Cokegod

Powiązane problemy