반응형

전체 글 2955

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

기타 함수들 사용하는 저장 파일과 byte order가 같은지 확인int pcap_is_swapped(pcap_t *p); //0: 같음, 1:다름 //pc_stoswap.c#include int main(int argc,char **argv){ char errbuf[PCAP_ERRBUF_SIZE]; pcap_t *pcap_handle; pcap_handle = pcap_open_offline(argv[1],errbuf); if(pcap_handle == 0){ printf("fail open_offline...%s\n",errbuf); } if(pcap_is_swapped(pcap_handle)==0){ printf("capture system's byte order is same with this h..

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

저장한 파일을 이용하기device = pcap_open_offline(argv[1],errbuf); // char *device; pcap_t *pcap_handle; // device = pcap_lookupdev(errbuf);// if(device == 0){ printf("fail lookupdev...%s\n",errbuf); }// printf("find device: %s sniffing\n",device); pcap_handle = pcap_open_offline(argv[1],errbuf); if(pcap_handle == 0){ printf("fail open_offline...%s\n",errbuf); } //pcap_handle = pcap_open_live(device, 4096,..

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

캡쳐한 패킷 파일로 덤프하기 덤퍼 열기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..

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

자신의 Network에 필터를 적용하여 패킷 캡쳐 //pc_netfilter.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]..

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

필터 적용하여 패킷 캡쳐하기필터를 적용하려면 먼저 컴파일후에 설정해야 한다. 필터는 tcpdump의 필터식을 사용한다.필터 컴파일하기int pcap_compile(pcap_t *handle, struct bpf_program *fcode, const char *fstr, int opt, bpf_u_int32 mask);필터 설정하기int pcap_setfilter(pcap_t *p, struct bpf_program *fp)//pc_filter.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 *bas..

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

libpcap으로 패킷 해석1 단계: 프로토콜 헤더를 정의한다.2 단계: 스니핑 코드 작성 pcap_loop을 이용3 단계: 패킷 캡쳐 핸들러를 작성 각 계층별로 패킷 해석 정보를 출력하는 함수 호출 1 단계: 프로토콜 헤더 작성 //core_ehp.h#ifndef __core_ehp_h#define __core_ehp_h #define ETH_ADDR_LEN 6 #include #include typedef const struct pcap_pkthdr cp_pkthdr;typedef const u_char cu_char;typedef struct pcap_pkthdr p_pkthr; typedef struct _eth_hdr eth_hdr;struct _eth_hdr{ u_char src[ETH_ADD..

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

패킷 스니핑 소스캡쳐할 수 있는 인터페이스 찾기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 void dump(const u_char *packet,int len);int main(){ struct pcap_pkthdr header; const u_char *packet; char errbuf[PCAP_..

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

자신의 Network IP와 Mask값 확인하기 소스 int pcap_lookupnet(const char *devname, bpf_u_int32 *pnet, bpf_u_int32 *pmask, char *ebuf); //pc_lookup.c#include int main() { char *dev; char errbuf[PCAP_ERRBUF_SIZE]; bpf_u_int32 net_ip; bpf_u_int32 mask; struct in_addr net_addr, mask_addr; if(!(dev = pcap_lookupdev(errbuf))) { printf("%s\n",errbuf); return 1; }//if if(pcap_lookupnet(dev, &net_ip, &mask, errbuf) <..

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

패키지 전체 업데이트 및 설치공개키 설치root로 계정 변환 후$ wget http://ftp.kreonet.re.kr/pub/Linux/fedora/core/3/i386/os/RPM-GPG-KEY$ wget http://ftp.kreonet.re.kr/pub/Linux/fedora/core/3/i386/os/RPM-GPG-KEY-fedora$ rpm –import RPM-GPG-KEY$ rpm –import RPM-GPG-KEY-fedora$ yum –y update$ vi /etc/ld.so.conf (다음을 추가)/usr/local/lib/usr/lib$ sudo ldconfig libpcap 테스트//test.c : pcap 라이브러를 이용하여 디폴트 인터페이스 장치를 찾는 테스트 코드#inclu..

반응형