2011-10-05 4 views
3

내 보고서에 작은 스니퍼가 필요하므로 C# 및 SharpPcap을 사용했습니다.SharpPcap을 사용하여 TCP 패킷에서 데이터를 가져 오는 방법은 무엇입니까?

packet = Packet.ParsePacket(rawCapture.LinkLayerType, rawCapture.Data); 
tcpPacket = TcpPacket.GetEncapsulated(packet); 

모든 패킷 데이터가있는 원시 패킷이 있습니다. 그럼 내가 소스/대상/프로토콜/등 일부 정보와 함께 패킷을 얻을. 그 후 나는 그 패킷 패킷을 얻을.

이제는 소프트웨어가 보내고받은 실제 패킷 데이터 만 어떻게 받습니까?

답변

8

충분히 간단했습니다.

packet.PayloadPacket.PayloadPacket.PayloadData 
+0

:)) –

3

tcpPacket.PayloadData 또는 PayloadPacket이 원하는 항목이어야합니다. PayloadData는 Packet.Net이 데이터를 하위 패킷으로 구문 분석하는 방법을 인식하지 못하는 경우 유효하며 PayloadPacket이 유효한 경우 PayloadPacket이 유효합니다. 오늘 tcp 패킷 파싱이 발생하는지 확신 할 수 없으므로 tcpPacket.PayloadData를 안전하게 사용해야합니다.

패킷의 내용이 구문 분석되었는지 여부에 따라 PayloadData가 항상 tcp 패킷의 원시 데이터이고 PayloadPacket이 null 또는 null이 아닌 API를 변경해야 할 수도 있습니다. 그런 다음 PayloadData를 사용하여 패킷, 이더넷, IP 등의 내용을 가져올 수 있습니다. 생각?

은 'packet'의 일부 중첩 된 PayloadPacket을 참조하지만 패킷 구성 방법을 아는 것은 어렵습니다. 이더넷 -> IP -> Tcp인가 아니면 이더넷 패킷 주위에 래퍼가 있습니까? TcpPacket.GetEncapsulated()를 사용하면 이러한 상황이 처리됩니다. SharpPcap의

크리스

저자/Packet.Net 당신은 나의 영웅

관련 문제