/*!
* @file sniffing.c
* @author HiSEON (ikseon@nepirity.com)
*
* @internal
* Created: 2018년 03월 20일
* Copyright: Copyright (c) 2018, Kang IkSeon
*/
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <pcap.h>
#include "src/lib.h"
#include "src/ethernet.h"
void packet_handler(u_char *param,
const struct pcap_pkthdr *header, const u_char *pkt_data) {
dump_ethernet_header(pkt_data);
}
int main(int argc, char **argv) {
pcap_t *adhandle;
char errbuf[PCAP_ERRBUF_SIZE];
pcap_if_t *alldevs;
pcap_if_t *d;
int i = 0;
int no;
if (pcap_findalldevs(&alldevs, errbuf) < 0) {
printf("pcap_findalldevs error\n");
return 1;
}
for (d=alldevs; d; d=d->next) {
printf("%d : %s\n", ++i, (d->description)?(d->description):(d->name));
}
printf("number : ");
scanf("%d", &no);
if (!(no > 0 && no <= i)) {
printf("number error\n");
return 1;
}
for (d=alldevs, i=0; d; d=d->next) {
if (no == ++i) break;
}
if (!(adhandle= pcap_open_live(d->name, 65536, 1, 1000, errbuf))) {
printf("pcap_open_live error %s\n", d->name);
pcap_freealldevs(alldevs);
return -1;
}
pcap_freealldevs(alldevs);
pcap_loop(adhandle, 0, packet_handler, NULL);
pcap_close(adhandle);
return 0;
}