패킷 스니핑 소스
캡쳐할 수 있는 인터페이스 찾기
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*/ #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과 메모리 매핑 기술을 이용하여 지연 덤프 소스 코드
'네트워크 및 보안 > 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 라이브러리] 7. 캡쳐한 패킷 파일로 덤프하기 소스 코드(pcap_dump_open, pcap_dump) (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 라이브러리] 2. 자신의 Network IP와 Mask값 확인하기 소스 (0) | 2016.04.29 |
[pcap 라이브러리] 1. libpcap 패키지 전체 업데이트 및 설치, 테스트 코드 (0) | 2016.04.29 |