2010-05-25 3 views
2

PCAP 라이브러리를 이해하려고합니다. 필터를 적용하고 포트 80에서 TCP 페이로드를 얻을 수 있습니다.하지만 다음은 무엇입니까? 어떻게 HTTP 데이터를 읽을 수 있습니까? http 헤더의 "User Agent"필드 값을 알고 싶습니다. 어떻게 진행해야합니까? 나는 웹 사이트를 검색했고 (너무 많이 봤다고) 여기에 관련된 스레드를 찾을 수 있습니다 : writing a http sniffer. 하지만 이건 어디서나 도움이되지 않습니다 ...http 스니퍼 (또는 다른 응용 프로그램 수준 스니퍼) 작성

감사합니다 !!

답변

3

먼저 PCAP가 패킷을 제공하고 TCP 스트림을 다시 구성하지 않으므로 데이터를 먼저 재구성하지 않고 전체 HTTP TCP 스트림을 읽을 수 없습니다.

한 패킷으로 모든 데이터를 사용할 수 있다고 가정하고 내 대답은 a similar question입니다. 다른 작업을 수행하려면 HTTP 헤더를 구문 분석하고 사용자 에이전트를 가져와야합니다.

자신을 C로 제한하지 않고 Windows를 사용할 수있는 경우 .NET 응용 프로그램을 작성하고 Pcap.Net을 사용하여 이더넷, IPv4 및 TCP를 완벽하게 구문 분석 할 수 있습니다.

+0

Brickner! 나는 tcp 페이로드를 처리하는 것을 정확히 보았다. (그러나 나는 학습을 위해 C를 선호한다.) 코드 줄을 설명해 주시겠습니까? /* url의 시작 - "GET"건너 뛰기 */url = tcpPayload + 4; 이유 4? 그리고 이러한 가치를 더 얻기 위해 무엇을 탐험해야합니까 (저는 HTTP에 대한 RFC를 읽었지 만 그것을 사용하는 방법을 알지 못했습니다). 실제로 해당 패킷의 모든 HTTP 데이터를 읽고 싶습니다. 전체 스트림을 재구성 한 경우에만 가능합니까? 그렇다면이 재구성에 대해 나에게 약간의 아이디어를 줄 수 있습니까? 감사합니다. – Ishi

+0

4는 "GET"- 3 ASCII 문자 + 공간 용입니다. RFC에는 가능한 모든 요청 이름 (예 : GET, POST ...)이 포함됩니다. HTTP 데이터 만 단일 패킷으로 보내려면 재구성이 필요하지 않습니다. 전체 HTTP 요청을 원할 경우 TCP 스트림을 재구성해야 할 수도 있습니다 (요청이 둘 이상의 패킷 인 경우). TCP 재구성은 또 다른 (그리고 매우 복잡한) 문제이며 Google이이를 위해 또는 다른 질문을해야합니다. 그건 그렇고, LibPcap이나 Windows 래퍼 WinPcap을 사용하고 있습니까? 아니면 더 일반적인 질문입니까? – brickner

+0

저는 리눅스에서 libpcap를 사용하고 있습니다. 나는 http 패킷을 캡쳐하고 유용한 정보를 추출하는 것을 목표로 삼았지만, 현재 재건축은 너무 어렵다. 코드와 메시지가 포함 된 FTP를 대상으로해야합니까? 가능합니까? 예를 들면. FTP 메시지에서 사용자 이름과 암호를 추출하고 싶습니다. – Ishi

0

이미 .NET라는 Pcap.Net에 대한 좋은 PCAP 래퍼가 -. here it is

는 "Pcap.Net는 ++/CLI 및 C# C로 작성 은 WinPcap에 대한 .NET 래퍼입니다 그것은 거의 특징 모든 WinPcap은 이고 패킷 해석은 프레임 워크를 포함합니다. "

관련 문제