Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sending my own ARP packet using SharpPcap and Packet.Net

I am trying unsuccessfully so far to send an ARP packet I have created with Packet.Net using SharpPcap. The problem is even though I send the packet using device.SendPacket it doesn't actually get sent, and I have no idea why.

This is my 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, it is important that I send my own ARP packets and not just use the SharpPcap ARP class.

like image 328
Cokegod Avatar asked Jan 01 '13 22:01

Cokegod


2 Answers

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

Try this function, from: http://stolenpackets.net/?p=29

like image 100
Vahid Farahmand Avatar answered Nov 14 '22 01:11

Vahid Farahmand


looking at this code there is no ethernetpacket involved

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();
like image 24
Firo Avatar answered Nov 13 '22 23:11

Firo