네트워크 및 보안/pcap 라이브러리

[pcap 라이브러리] 3. 패킷 스니핑 소스(pcap_lookupdev, pcap_open_live, pcap_next, pcap_close)

언제나휴일 2016. 4. 29. 17:56
반응형

패킷 스니핑 소스


캡쳐할 수 있는 인터페이스 찾기

char * pcap_lookupdev(char *ebuf);

캡쳐 핸들 열기

pcap_t *pcap_open_live(char *dev,int csize,int promisc,

                       int msec,char *ebuf);

캡쳐하기

const u_char *pcap_next(pcap_t handle, struct pcap_pkthdr *header);

캡쳐 핸들 닫기

void     pcap_close(pcap_t *handle);


pc_sniff.c


/*pc_sniff.c*/

#include <pcap.h>

void dump(const u_char *packet,int len);

int main(){

  struct pcap_pkthdr header;

  const u_char *packet;

  char errbuf[PCAP_ERRBUF_SIZE];

  char *device;

  pcap_t *pcap_handle;

  int i;

  device = pcap_lookupdev(errbuf);

  if(device == 0){ printf("fail lookupdev...%s\n",errbuf); }

  printf("start device: %s sniffing\n",device);

 

  pcap_handle = pcap_open_live(device, 4096, 1, 0, errbuf);

  if(pcap_handle == 0){ printf("fail pcap_open_live...%s\n",errbuf); }

 

  for(i=0; i<3; i++){

    packet = pcap_next(pcap_handle, &header);   

    dump(packet, header.len);

  }//for

  pcap_close(pcap_handle);

  return 0;

}

void dump(const u_char *packet,int len){

  int i = 0;

  printf("--------capture %d byte--------\n",len);

  for(i=0; i<len; ++i){

    printf("%x ",*packet);

    packet++;

    if(i%25 == 24){ printf("\n"); }

  }//for

  printf("\n-----------------\n");

}

 

struct pcap_pkthdr {

         struct timeval ts;        /* time stamp */

         bpf_u_int32 caplen;/* length of portion present */

         bpf_u_int32 len; /* length this packet (off wire) */

};

 


관련 게시글

[pcap 라이브러리] 1. libpcap 패키지 전체 업데이트 및 설치, 테스트 코드

[pcap 라이브러리] 2. 자신의 Network IP와 Mask값 확인하기 소스

[pcap 라이브러리] 3. 패킷 스니핑 소스(pcap_lookupdev, pcap_open_live, pcap_next, pcap_close)

[pcap 라이브러리] 4. libpcap으로 패킷 해석하기 뼈대 만들기

[pcap 라이브러리] 5. 필터 적용하여 패킷 캡쳐하기(소스 포함)

[pcap 라이브러리] 6. 자신의 Network에 필터를 적용하여 패킷 캡쳐 소스 코드

[pcap 라이브러리] 7. 캡쳐한 패킷 파일로 덤프하기 소스 코드(pcap_dump_open, pcap_dump)

[pcap 라이브러리] 8. 저장한 파일을 이용하기 소스 코드 (pcap_open_offline)

[pcap 라이브러리] 9. 필터식 BSF 문법 확인 (pcap_compile, pcap_compile_nopcap)

[pcap 라이브러리] 10. 기타 함수들 사용 예제 코드(pcap_is_swapped, pcap_freecode ,pcap_set_datalink)

[pcap 라이브러리] 11. libpcap과 메모리 매핑 기술을 이용하여 지연 덤프 소스 코드


반응형