2012-01-06 2 views
0

Packet.Net을 사용하여 HTTP 헤더 정보를 추출하고 싶습니다. SharpPcap을 사용하여 패킷을 캡처하고 TCP 패킷의 User-Agent 필드에 액세스해야합니다. 내가 올바르게 이해하면 Packet.Net은 캡처 된 패킷을 분석하는 데 사용됩니다. 이 점에 대해 도움을 받으실 수 있습니다. 다음 코드를 사용하여 TCP 패킷을 표시하려고 시도했지만 바이트가 표시됩니다. C#을 개발 언어로 사용하고 있습니다.Packet.Net을 사용하여 HTTP 헤더 정보 추출

 private static void device_OnPacketArrival(object sender,CaptureEventArgs packet){ 

     Packet p =Packet.ParsePacket(packet.Device.LinkType,packet.Packet.Data); 

     System.Text.ASCIIEncoding ASCII = new System.Text.ASCIIEncoding(); 
     String StringMessage = ASCII.GetString(p.Bytes); 


     Console.WriteLine(StringMessage); 

    } 
+0

무엇 '바이트가 표시됩니다'라는 의미입니까? 보고있는 샘플 출력을 제공 할 수 있습니까? –

+0

SharpPcap 대신에 [Pcap.Net] (http://pcapdotnet.codeplex.com/)을 사용하는 것도 고려해 볼 수 있습니다. HTTP 메시지를 구문 분석하기위한 지원 기능이 내장되어 있기 때문입니다. –

답변

1

Packet.Net에는 현재 http 디코딩 지원이 없습니다. HTTP 메시지는 여러 패킷으로 분할 될 수 있기 때문에 먼저 다음과 같은 TCP 연결을 허용하도록 지원을 추가 한 다음 TCP 세션 감지 및 구문 분석을 TCP 데이터 스트림 상단에 추가하는 것이 좋은 방법 인 것 같습니다. 패킷 당 http 데이터를 구문 분석하려고하면 데이터 또는 일부 http 메시지의 헤더에 대해 작동 할 수 있지만 수 킬로바기 일 수있는 http 메시지의 전체 내용을 가져올 수 없으므로 강력한 솔루션은 아닙니다. 크기가.

(나는 SharpPcap/Packet.Net 다음과 HTTP 세션 다음과 디코딩 TCP 세션을 추가하는 기반으로 구축 상용 라이브러리가 있습니다. 당신은 좀 더 세부 사항을 이메일을 보내려면 여기에 이메일을 게시합니다.)