#001 libpcap 을 통한 Ethernet frame capture, 패킷 분석
- 연결된 장치 검색
char * pcap_lookupdev(char * errbuf);
- Open Device
pcap_t * pcap_open_live(char * device, int snaplen, int promisc, int to_ms, char * ebuf);
- 열린 장치로 부터 패킷 Listening
char * pcap_next(pcap_t * p,struct pcap_pkthdr * h)
- 이더넷 구조체를 이용해서 이더넷 정보를 읽어 낸다.
struct ether_header * header;
- 장치 ID를 사용해서 열린 장치의 닫는다.
pcap_close(pcap_t * p);
pcap_next()를 통해 패킷을 캡쳐함. header의 마지막 값인 ether_type을 통해 다음에 있을 프로토콜의 타입을 알수 있다.
struct ether_header
{
u_int8_t ether_dhost[ETH_ALEN]; //Destination, ETH_ALEN = 6
u_int8_t ether_shost[ETH_ALEN]; //Source,
u_int16_6 ether_type; //Protocol ID
}
프로토콜의 타입은 /usr/include/net/ethernet.h 에 이더넷 구조체와 함께 정의 되어 있으며 다음과 같다.
ETHERNET_PUP 0x0200 /*Xerox PUP*/
ETHERNET_IP 0x0800 /*IP*/
ETHERNET_ARP 0x...