2011-11-23 6 views
2

저는 C 프로그래밍 언어 및 패킷 캡처를 처음 사용합니다. 지금은 Visual Studio 2010 Express를 사용하는 간단한 프로그램을 작성하여 패킷 추적 캡처 파일을 디코딩합니다. 많은 가이드를 읽었지 만, 대부분은 리눅스/유닉스 용이다. 나는 wpcap 라이브러리를 포함 할 수 있었지만 지금은 을 의도 한 시스템에 정의 된 구조체가 있어야 인터넷 패킷 헤더를 쉽게 디코딩 할 수 있습니다. Windows에서 C로 패킷 캡처

struct ether_header in /usr/include/sys/ethernet.h 
struct in_addr in /usr/include/netinet/in.h 
struct ip in /usr/include/netinet/ip.h 
struct udphdr in /usr/include/netinet/udp.h 
struct tcphdr in /usr/include/netinet/tcp.h 

은 지금까지 나는 경우 Winsock2가 in.h에 포함되어야 함을 이해하지만 이더넷, IP, TCP/UDP에 대해? 이 헤더와 관련된 디코딩을 관리하려면 어떻게해야합니까? 같은 winsocket입니까? 그렇다면 사용하는 방법에 대한 간단한 설명을 어디서 찾을 수 있습니까?

OS : 윈도우 7

+1

기존 덤프 파일의 내용을 캡처하거나 디코딩하는 것에 대한 질문입니까? ... 제목은 전자를, 텍스트는 후자를 제안합니다. – 0xC0000022L

+0

난 그냥 내가 여기에 입력 한 그 헤더 파일 대신 사용해야합니까 알고 싶습니다 – Medardas

답변

3

사실, 그 헤더의 대부분은 원래 쉽게 네트워킹 스택 BSD 커널을 쓰기 쉽게 스니퍼에서 디코딩 패킷 헤더을하지 수 있도록 구성되었다 포함한다; 역사적인 이유로 부분적으로 사용자 프로그램에 제공됩니다.

최근 버전의 tcpdump 또는 WinDump 소스를 가져 와서 해당 헤더 파일의 복사본을 만드는 것이 좋습니다. tcpdump/WinDump의 파일 들인 ether.h, ip.h, udp.htcp.h은 BSD 파생 운영 체제에서 가져온 것이므로 tcpdump/WinDump는 해당 헤더를 제공하는 운영 체제에 의존 할 필요가 없으며 해당 헤더의 특정 버전을 제공합니다 tcpdump/WinDump가 tcpdump/WinDump에서 잘 작동하는 공급 버전을 실행할 수있는 운영 체제가 전부는 아니며 일부는 tcpdump에 대한 특별한 해킹이 필요하고 일부는 전혀 제공하지 않는 운영 체제가 아닙니다. 예를 들어, Windows는 공급하지 않습니다. 그들 모두에서, 당신이 발견했습니다).

tcpdump.org에서 tcpdump 소스를 가져올 수 있으며에서 WinDump 소스를 얻을 수 있습니다 ("WinDump 3.9.5 소스 코드 다운로드"참조). WinDump 소스는 gzip으로 압축 된 tar 파일이 아니라 ZIP 파일이므로 Windows에서 압축을 해제하는 것이 더 쉬울 수 있으며 UN * X LF 줄 끝이 아닌 Windows CR-LF 줄 끝이있을 수 있습니다. WinDump 버전.

1

당신이 Unix Network Programming vol. 1에서 약간의 마일리지를 얻을 수 있습니다 및 TCP/IP illustrated Vol. 1. 당신은이 새를 구입하거나 아마존 마켓 플레이스를 간접 수의 libpcap을 사용하고 당신이 Windows에서 최선을 다하고 있지만. 여기에는 헤더 및 기타 관련 항목이 설명되어 있습니다.

+1

예 ... 그게 창문에서 뭘 해야할지 말해주지 않을거야 ... – Medardas

+0

Libpcap는 유닉스에서 시작했다; Windows에서 프로그래밍하는 것은 크게 달라지지 않을 것입니다. 그 책들에있는 많은 자료들이 당신에게 관련이 있습니다. – ConcernedOfTunbridgeWells

1

이 난 단지 (순서대로)이

#include <winsock2.h> 
#include <windows.h> 
관련 문제