반응형

pcap 라이브러리 11

[네트워크 보안] 1. SharpPcap 설치 및 테스트

[네트워크 보안] 1. SharpPcap 설치 및 테스트 안녕하세요. 언제나 휴일, 언휴예요. 다양한 서비스들이 온라인을 통해 제공하는 것이 점차 많아지고 개인 정보들이 여러 서비스에서 사용하면서 네트워크 보안의 중요성은 점점 관심을 갖고 있죠. 20여년 전에도 TCPDUMP 유틸리티를 이용하여 네트워크 트래픽을 모니터링하는 작업은 심심치 않게 많은 엔지니어들이 했었어요. 지금은 많은 기술 발전에 의해 와이어샤크 처럼 네트워크 트래픽을 추적하는 무료 소프트웨어에서부터 다양한 DMZ를 형성하는 장비 등이 나와 있죠. 언제나 휴일 티스토리에서는 다양한 환경에서 다양한 기술을 사용하여 네트워크 보안에 관한 글들을 게시할 예정입니다. 그리고 출발점에서 네트워크 프로토콜을 정리하고 이를 분석하는 유틸 개발하는 방..

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

libpcap과 메모리 매핑 기술을 이용하여 지연 덤프현재의 게시글은 앞으로 pcap 라이브러리를 이용하여 tshark 유틸과 같은 네트워크 트래픽을 수집하고 분석하는 도구를 만드는 과정을 게시하기 위해 어떠한 순서로 진행할 지 결정하기 위한 더미 코드입니다.2016년 6월 이후부터 다양한 프로그래밍 언어와 기술에 관한 글과 무료 동영상 강의를 제작할 계획이며 그 중에 하나가 네트워크 보안에 관한 사항입니다. 네트워크 보안에 관한 주제는 네트워크 프로토콜, 소켓 프로그래밍, 리눅스에서 tshark 흉내내기, 윈도우즈에서 tshark 흉내내기와 C#언어로 와이어샤크 흉내내기 등을 다룰 예정입니다.많은 관심과 조언 바랍니다.아직 입문하기 위한 더미 코드들만 올린 상태입니다.참고로 네트워크 프로토콜은 어느정도..

[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 라이브러리] 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) <..

반응형