본문 바로가기

IT/WinpcapProgramming

Winpcap 프로그래밍 :: pcap.h 헤더함수 /* written by kaspy (kaspyx@gmail.com)*/ void pcap_close(pcap_t* p) p와 할당되지 않은 데이터에 연계된 파일을 닫는 함수 int pcap_datalink(pcap_t* p)어댑터의 link layer 값을 반환하는 함수pcap_datalink() 여러 타입의 link layer 값을 반환한다. l DLT_NULL BSD loopback encapsulationl DLT_EN10MB Ethernet (10Mb, 100Mb, 1000Mb, and up)l DLT_IEEE802 IEEE 802.5 Token Ringl DLT_ARCNET ARCNET SLIPl DLT_PPP PPPl DLT_FDDI FDDIl DLT_ATM_RFC1483 RFC 1483 L.. 더보기
TCP 패킷 체크섬(Checksum) C언어로 구현하기 /* written by kaspy (kaspyx@gmail.com)*/ 네트워크 소켓 프로그래밍에서 TCP 및 IP 등에서는 체크섬(checksum)을 통해서 패킷이 변조됬거나 손상됬는지 검사를 해주는 루틴이 있다. 저번장에 이어서, 이번에는 TCP 패킷 체크섬을 구하는 내용을 소개하겠다. 1. 체크섬(Checksum)을 구하는 함수 typedef unsigned char u_char;typedef short SHORT; unsigned short in_checksum(unsigned short *ptr,int nbytes) { register long sum; unsigned short oddbyte; register short answer; sum=0; while(nbytes>1) { sum+=*p.. 더보기
TCP/IP IP 패킷 체크섬(Checksum) C언어로 구현하기 /* written by kaspy (kaspyx@gmail.com)*/ 네트워크 소켓 프로그래밍에서 TCP 및 IP 등에서는 체크섬(checksum)을 통해서 패킷이 변조됬거나 손상됬는지 검사를 해주는 루틴이 있다. 그래서 패킷을 받으면 이값을 검사한뒤에 만약 계산한데로 맞지 않는다면 패킷을 버린다. 이번 포스팅에서는 TCP/IP 에서 IP 체크섬(Checksum) 함수를 구현하는 내용을소개하겠다. 아래는 체크섬을 구하는 함수 코드이다. u_short ip_sum_calc( u_short len_ip_header, u_short * buff ){ u_short word16; u_int sum = 0; u_short i; // make 16 bit words out of every two adjacent.. 더보기
windump를 사용하여 TCP/IP 패킷 분석하기 /* written by kaspy (kaspyx@gmail.com)*/ windump를 이용하여 tcp 패킷을 분석해 보았다. 아래와같은 명령어로 실행하였다.기본적인 사용법과 다운로드는 여기 링크 참조!! -> Link(1번 네트워크 인터페이스의 7778번 포트를 감청) 서버쪽에서는 nc -l -p 7778 을 사용하여 7778번 포트를 열어 접속을 기다리게 하였다.(리눅스 서버)클라이언트에서는 nc를 사용하여 7778번 포트에 접속한다음 hello 라는 문자열을 보내고 ctr + c 하여 접속을 끊었다.(윈도우 클라이언트) TCP 통신 패킷 분석tcp/ip 통신은 안정형 통신 방법으로 데이터를 주고 받을때마다 ACK 및 S/N 번호로 데이터가 오고가는 순서를 보장할수있다. 일명 3 Way Handsh.. 더보기
windump 사용법 /* written by kaspy (kaspyx@gmail.com)*/ windump는 리눅스/유닉스 명령어인 tcpdump 라는 명령어를 윈도에 맞게 만든 실행 명령어로 기본적인 사용법은 같다.첨부파일을 통해 다운 받아주기 바란다.(첫번째껀 설치, 두번째는 실행파일)(http://www.winpcap.org/windump/install/default.htm 출처) 기본적인 사용법은 위와 같고 주로 사용되는 파라미터에대한 사용법은 아래와 같다.-a 네트워크와 브로드 캐스트 주소이름 변경-B size 수신 버퍼크기를 size로 수정-c count 만큼만 패킷 수집-D 네트워크 인터페이스 출력-F file file에 정의된 필터를 적용-q 패킷을 간단한 형태로출력-t 각 라인에 시간을 출력하지 않음-i 모.. 더보기
Winpcap 프로그래밍 - 패킷 스니핑 (감청/분석) 하기 /* written by kaspy (kaspyx@gmail.com)*/ Winpcap 라이브러리 중에 pcap_open_live, pcap_compile , pcap_setfilter, pcap_next_ex 함수가 있다.각각의 함수를 활용하면 패킷을 로우레벨에서 분석할수 있다. 물론 다른 함수들도 사용되긴 하지만 주로 사용되는 함수는 4개라고 보면 될것같다.함수 레퍼런스 : http://www.winpcap.org/docs/docs_40_2/html/group__wpcapfunc.html#gae6abe06e15c87b803f69773822beca8 1. TCP 패킷 감청 프로그램 만들기1). pcap_open_live 현재 네트워크에서 사용하는 네트워크 디바이스의 패킷을 캡처하는 함수이다. 아래는 함.. 더보기
TCP,IP,Ethernet 헤더 구조체 struct ether_addr{ unsigned char ether_addr_octet[6];}; struct ether_header{ struct ether_addr ether_dhost; struct ether_addr ether_shost; unsigned short ether_type;}; struct ip_header{ unsigned char ip_header_len:4; unsigned char ip_version:4; unsigned char ip_tos; unsigned short ip_total_length; unsigned short ip_id; unsigned char ip_frag_offset:5; unsigned char ip_more_fragment:1; unsigned ch.. 더보기
WinPcap 개발 환경 구축하기 예전에는 리눅스에서나 가능했던 raw 레벨 패킷 프로그래밍이 Winpcap 라이브러리를 통해서도 가능하게 됬습니다.사실 winpcap 프로그래밍이 나온지 조금 됬는데 개발환경 구축하는 내용부터 시작해야 할것같아서 포스팅을 합니다. * 라이브러리 및 설치파일 다운로드 하기* 라이브러리 레퍼런스http://www.winpcap.org/docs/docs_40_2/html/group__wpcapfunc.html 0. WinPcap 파일 설치파일 실행하여 설치1. WpdPack 라이브러리 압축 파일을 다운로드2. 다운로드한 압축파일을 임의의 디렉토리에 압출풀기 (저는 c:\ 경로에 압출을 풀었습니다.) 3. Visual Studio 2010 실행4. 프로젝트 -> 속성 클릭5. 구성 속성 -> VC++ 디렉토리6.. 더보기