2012-09-16 3 views

답변

1

EJP가 말한대로 패킷 데이터를 직접 파싱해야합니다. 파일 헤더의 network 필드의 값 목록과 패킷 데이터 시작 부분의 해당 헤더 형식에 대해서는 the tcpdump.org link-layer header type page을 참조하십시오.

패킷이 IP 패킷인지 여부를 확인하려면 해당 헤더를 확인해야합니다. 그럴 경우 IPv4 또는 IPv6 헤더 (헤더에 IPv4 또는 IPv6 패킷이 있음을 나타내는 지 여부에 따라 또는 헤더의 "버전"필드가 4 또는 6인지 여부에 따라 구문 분석해야 함) 버전 "필드가 IPv4 및 IPv6 헤더의 동일한 위치에 나타나면 LINKTYPE_RAW의 경우 IPv4 또는 IPv6 헤더 앞에 헤더가 없으므로"버전 "필드를 살펴 봐야합니다.) 소스 IP 주소를 찾으려면 . IPv4 헤더의 형식은 RFC 791을 참조하십시오. IPv6 헤더 형식에 대해서는 RFC 2460을 참조하십시오.

당신이 포트 번호를 원하는 경우에, 당신이있는 어떤 프로토콜을 결정하기 위해, 핸들 확장 헤더를 IPv4 헤더의 "프로토콜"필드를 확인하거나 IPv6 헤더의 "다음 헤더"필드를 확인해야합니다 IP의 상단에 실시. 해당 필드의 값은 IANA Protocol Numbers registry을 참조하십시오. TCP가 6이고 UDP가 17입니다. 프로토콜이 TCP 인 경우 TCP 헤더의 형식은 RFC 793을 참조하십시오. 프로토콜이 UDP 인 경우 UDP 헤더의 형식은 RFC 768을 참조하십시오.

또는 당신은 라이브러리를 구문 분석하는 기존의 패킷, 기타 언어에 대한 C 또는 C++ 또는 다른 라이브러리 libtrace (I 예를 들어, 그들은 펄, 파이썬, C# 및 Java 용있을 수 있습니다 생각)와 같은, 등을 사용할 수 있습니다 당신이 위의 많은 일을 피하게 할 수 있습니다.

(pcap 형식 사양을 살펴볼 필요가 없어야하며, libapcap/WinPcap을 사용하여 pcap 파일을 읽어야합니다. 프로그램이 일부 pcap- 충분히 최신 버전의 libpcap을 사용하고 있다면 파일도 함께 저장하십시오.)

1

패킷 원점은 IP 패킷 그 자체이다. 따라서 PCap 헤더에도있을 필요는 없습니다.

관련 문제