반응형

전체 글 2934

[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..

[C언어 소스] 성적 관리 프로그램 4가지 유형

[C언어 소스] 성적 관리 프로그램 4가지 유형 C언어로 프로그래밍할 때 데이터를 관리할 메모리를 언제 부여하게 할 것인가에 따라 여러 형태로 프로그램을 작성할 수 있습니다.이번에는 학생 성적 관리 프로그램을 4가지 유형으로 서로 비교합시다. 제공 기능1. 학생 데이터 입력2. 학생 데이터 삭제3. 학생 검색4. 목록 보기 전역 변수 사용 소스 보기동적 메모리 할당 이용 소스 보기학생 데이터를 위한 메모리도 동적 메모리 할당 이용 소스 보기 이중 연결리스트를 이용한 소스 보기

반응형