본문으로 바로가기

Packet sniffer develop #pcap_lookupdev

category 카테고리 없음 2018. 4. 12. 16:11



첫번째 알고리즘인 인터페이스를 선택하는 프로그램을 개발해보자



스니퍼가 동작할 장치를 설정하는 방법은 두가지가 있다.

하나는 사용자가 직접 장치를 선택하는 방법이 있고, 나머지는 디폴트 디바이스를 알아서 선택하는 방법이다.




사용자가 장치를 직접 설정하는 방법



소스코드

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <pcap.h>
 
int main(int argc, char *argv[])
{
    char *dev = argv[1];
 
    printf("Device: %s\n", dev);
    return(0);
}
cs



실행

1
2
3
4
5
root@g0pher-virtual-machine:/home/g0pher/sniff_tcpdump# ./test1
Device : (null)
root@g0pher-virtual-machine:/home/g0pher/sniff_tcpdump# ./test1 eth0
Device : eth0
root@g0pher-virtual-machine:/home/g0pher/sniff_tcpdump# 
cs








Default 인터페이스 장치를 찾아 설정



필요한 함수에 대해서 먼저 알아보자




1
char *pcap_lookupdev(char *errbuf)
cs


pcap_findalldev() 함수를 호출한 결과에서 첫번째 장치를 문자열 포인터로 리턴하는 함수이다. 오류가 있을경우 NULL이 반환된다.




소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
#include<pcap.h>
 
int main(int argc, char *argv[])
{
    char *dev, errbuf[PCAP_ERRBUF_SIZE];
 
    dev = pcap_lookupdev(errbuf);
    if (dev == NULL) {
        fprintf(stderr, "Couldn't find default device: %s\n", errbuf);
        return 2;
    }
    printf("Device: %s\n", dev);
    return 0;
}
cs





실행

1
2
3
root@g0pher-virtual-machine:/home/g0pher/sniff_tcpdump# ./test2
Device: ens33
root@g0pher-virtual-machine:/home/g0pher/sniff_tcpdump#
cs