캡쳐한 패킷 파일로 덤프하기
덤퍼 열기
pcap_dumper_t *pcap_dump_open(pcap_t *pcap_handle,const char *dfname);
캡쳐한 패킷 파일로 덤프
pcap_dump(u_char *args,const struct pcap_pkthdr *header,const u_char *packet);
//pc_dump.c #include "core_ehp.h"
void catch_handler(u_char *args,cp_pkthdr *handle,cu_char *packet); void decode_eth(cu_char *base); int decode_ip(cu_char *base); int decode_tcp(cu_char *base); void decode_data(cu_char *packet,u_int len); void view_ether_addr(const char *pre,cu_char *base);
int main(int argc,char **argv){ cu_char *packet; char errbuf[PCAP_ERRBUF_SIZE]; char *device; pcap_t *pcap_handle;
device = pcap_lookupdev(errbuf); if(device == 0){ printf("fail lookupdev...%s\n",errbuf); return 1;} printf("find device: %s sniffing\n",device);
bpf_u_int32 net_ip; bpf_u_int32 mask; struct in_addr net_addr, mask_addr;
if(pcap_lookupnet(device, &net_ip, &mask, errbuf) < 0) { printf("%s\n",errbuf); return 2; }//if
pcap_handle = pcap_open_live(device, 4096, 2, 0, errbuf); if(pcap_handle == 0){ printf("fail pcap_open_live...%s\n",errbuf); }
struct bpf_program fcode; char filter[1000]=""; int i = 0; for(i=2;i<argc;++i){ sprintf(filter+strlen(filter)," %s",argv[i]); }//for
if(pcap_compile(pcap_handle,&fcode,filter, 0,net_ip)<0){ printf("fail compile. check sytax\n"); return 3; }//if
if(pcap_setfilter(pcap_handle, &fcode)<0){ printf("\nfail setfilter.\n"); return 4; }//if
pcap_dumper_t *df; df = pcap_dump_open(pcap_handle,argv[1]); if(df == 0){ printf("fail dump_open\n"); return 5;}
pcap_loop(pcap_handle,3,catch_handler,(u_char *)df);
pcap_close(pcap_handle); return 0; } void catch_handler(u_char *args, cp_pkthdr *header,cu_char *packet){ printf("##### recved %d bytes #####\n",header->len); pcap_dump(args,header,packet); ...중략... |
1. libpcap 패키지 전체 업데이트 및 설치, 테스트 코드
2. 자신의 Network IP와 Mask값 확인하기 소스
3. 패킷 스니핑 소스(pcap_lookupdev, pcap_open_live, pcap_next, pcap_close)
6. 자신의 Network에 필터를 적용하여 패킷 캡쳐 소스 코드
'네트워크 및 보안 > pcap 라이브러리' 카테고리의 다른 글
[pcap 라이브러리] 11. libpcap과 메모리 매핑 기술을 이용하여 지연 덤프 소스 코드 (0) | 2016.04.29 |
---|---|
[pcap 라이브러리] 10. 기타 함수들 사용 예제 코드(pcap_is_swapped, pcap_freecode ,pcap_set_datalink) (0) | 2016.04.29 |
[pcap 라이브러리] 9. 필터식 BSF 문법 확인 (pcap_compile, pcap_compile_nopcap) (0) | 2016.04.29 |
[pcap 라이브러리] 8. 저장한 파일을 이용하기 소스 코드 (pcap_open_offline) (0) | 2016.04.29 |
[pcap 라이브러리] 6. 자신의 Network에 필터를 적용하여 패킷 캡쳐 소스 코드 (0) | 2016.04.29 |
[pcap 라이브러리] 5. 필터 적용하여 패킷 캡쳐하기(소스 포함) (0) | 2016.04.29 |
[pcap 라이브러리] 4. libpcap으로 패킷 해석하기 뼈대 만들기 (0) | 2016.04.29 |
[pcap 라이브러리] 3. 패킷 스니핑 소스(pcap_lookupdev, pcap_open_live, pcap_next, pcap_close) (0) | 2016.04.29 |
[pcap 라이브러리] 2. 자신의 Network IP와 Mask값 확인하기 소스 (0) | 2016.04.29 |
[pcap 라이브러리] 1. libpcap 패키지 전체 업데이트 및 설치, 테스트 코드 (0) | 2016.04.29 |