예전에는 리눅스에서나 가능했던 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. 디렉토리 경로 설정
포함 디렉토리 -> C:\WpdPack\Include
라이브러리 디렉토리 -> C:\WpdPack\Lib
설정후 아래와 같이 간단한 코딩을 해주자.
(현재 잡혀있는 네트워크 어댑터를 얻어오는 코드)
- #include <stdio.h>
- #define HAVE_REMOTE
- #include "pcap.h"
- #pragma comment (lib, "wpcap.lib")
- void main()
- {
- pcap_if_t *alldevs;
- pcap_if_t *d;
- int i=0;
- char errbuf[PCAP_ERRBUF_SIZE];
- /* Retrieve the device list from the local machine */
- if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL /* auth is not needed */, &alldevs, errbuf) == -1)
- {
- fprintf(stderr,"Error in pcap_findalldevs_ex: %s\n", errbuf);
- exit(1);
- }
- /* Print the list */
- for(d= alldevs; d != NULL; d= d->next)
- {
- printf("%d. %s", ++i, d->name);
- if (d->description)
- printf(" (%s)\n", d->description);
- else
- printf(" (No description available)\n");
- }
- if (i == 0)
- {
- printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
- return;
- }
- /* We don't need any more the device list. Free it */
- pcap_freealldevs(alldevs);
- }
* 관련 링크참조
http://kaspyx.tistory.com/entry/Winpcap-프로그래밍-패킷-감청분석-하기
'IT > WinpcapProgramming' 카테고리의 다른 글
TCP/IP IP 패킷 체크섬(Checksum) C언어로 구현하기 (1) | 2015.04.25 |
---|---|
windump를 사용하여 TCP/IP 패킷 분석하기 (0) | 2015.04.03 |
windump 사용법 (0) | 2015.04.03 |
Winpcap 프로그래밍 - 패킷 스니핑 (감청/분석) 하기 (0) | 2015.03.31 |
TCP,IP,Ethernet 헤더 구조체 (0) | 2015.03.31 |