thanks, logicalfuzz
I am coding in C, so I want one way using some API or network protocol rather than reading from a file or pipe.
I have ever try to send an ARP request packet from eth1 and send to eth1, but no reply. All the computers in my room are connected by a switch.My IP of the interface I was using is 192.168.1.101.
The packet I used is shown below:
struct ethernet_header
{
unsigned char dst_MAC[6];
unsigned char src_MAC[6];
unsigned short eth_type;
};
struct arp_header
{
unsigned short hardware_type;
unsigned short proto_type;
unsigned char hwaddr_len;
unsigned char proto_len;
unsigned short option;
unsigned char src_addr[6];
unsigned long src_ip;
unsigned char dst_addr[6];
unsigned long dst_ip;
unsigned char padding[18];
};
struct arp_packet
{
struct ethernet_header eth;
struct arp_header arp;
};
struct arp_packet arppkt;
memset(arppkt.eth.dst_MAC, 0xFF, 6);
memset(arppkt.eth.src_MAC, 0xAA, 6);
arppkt.eth.eth_type = htons(0x0806);
arppkt.arp.hardware_type = htons(0x0001);
arppkt.arp.proto_type = htons(0x0800);
arppkt.arp.hwaddr_len = 6;
arppkt.arp.proto_len = 4;
arppkt.arp.option = htons(0x0001);
memcpy(arppkt.arp.src_addr, arppkt.eth.src_MAC, 6);
arppkt.arp.src_ip = inet_addr("192.168.1.2");
memcpy(arppkt.arp.dst_addr, arppkt.eth.dst_MAC, 6);
arppkt.arp.dst_ip = inet_addr("192.168.1.101");
Last edited by cricketlong; 02-15-2010 at 12:44 PM.
|