2014-02-15 4 views
3

Я хотел бы знать, как отправить ARP-пакет на языке C, функции, отправленные и отправленные из сокетов, отправляются через TCP или UDP, но я не нашел, как использовать ARP.Отправить ARP-пакет с C

ответ

5

В этом случае вы должны использовать Raw Sockets, или вы можете использовать некоторые библиотеки lib, чтобы упростить это, рекомендуемый lib для этого является libpcap, ниже я написал простой пример для отправки пакета с использованием libpcap.

const int packet_size = 40; // change the value for real size of your packet 
char *packet = (char *) malloc(packet_size) 
pcap_t *handle = NULL; 
char errbuf[PCAP_ERRBUF_SIZE], *device = NULL; 
if ((device = pcap_lookupdev(errbuf)) == NULL) { 
    fprintf(stderr, "Error lookup device", device, errbuf); 
    exit(1); 
} 
if ((handle = pcap_open_live(device, BUFSIZ, 1, 0, errbuf)) == NULL) { 
    fprintf(stderr, "ERRO: %s\n", errbuf); 
    exit(1); 
} 
// here you have to write your packet bit by bit at packet 
int result = pcap_inject(handle, packet, packet_size); 

В этом случае вы должны создать все тело пакета, смотрите по адресу: http://www.cse.ohio-state.edu/cgi-bin/rfc/rfc1293.html для получения информации о пакете ARP и в http://en.wikipedia.org/wiki/Ethernet_frame для получения информации о локальных сетях кадре

Смежные вопросы