2014-09-23 2 views
1

나는이 예제를 사용하여 네트워크 패킷을 검색하는 응용 프로그램을 만들었습니다 http://www.codeproject.com/Articles/4217/Packet-Sniffing-with-Winpcap-Functions-Ported-to-a패킷 내용의 바이너리 리더?

내 의도는 서버에서 특정 응용 프로그램으로 전송 특정 패킷의 내용을 얻기 위해 그것을 사용하는 것입니다, 나는에 관심이 아니에요 다른 패킷. 흥미로운 패킷은 주기적으로 업데이트되는 1 개의 값입니다.

VB로 변환했습니다. 닷넷 그게 내 취향 그래서 VB에서 내 코드 조각을 제공 할거야, C#을 이해할 수 있지만 C#을 사용하여 예제를 제공 할 수 있습니다.

수신 패킷의 내용을 바이트 배열로 포함하는 's'매개 변수가있는 이벤트가 있습니다.

Dim stream As System.IO.MemoryStream = New System.IO.MemoryStream(s) 
Dim reader As New System.IO.BinaryReader(stream) 
Dim pos As Long = 0 
Dim length As Long = reader.BaseStream.Length 

난 후, 데이터 타입에 따라 증가 현재 위치로서 '위치'변수와 루프 통과 것이다 :

은이 같은 이진 판독기로 읽어 해당 배열 변환있어 현재 바이트의. (좋아요 : something = reader.ReadString() pos + = something.Length)

내 유일한 문제는 무엇을 찾고 있어야하는지 모르겠습니다. 패킷의 '구조'는 무엇입니까? 패킷이 전송 된 서버 및 전송 된 응용 프로그램을 검색 할 수 있습니까?

이전에는 패킷 용으로 이런 코드를 사용 해보지 않았지만 사용자 지정 형식 데이터베이스 파일에서 데이터를 가져온 경험이 있습니다.


편집 : 소스/대상 IP와이를 기준으로 필터링하는 방법에 대해 설명하는 문서를 가지고 좀 더 유용한 무언가를 발견하고 앞서 언급 한 위의 예보다 훨씬 더 완전한 것으로 보인다.

http://www.codeproject.com/Articles/12458/SharpPcap-A-Packet-Capture-Framework-for-NET

것은 여전히 ​​패킷 내용 자체를 이해하는 방법에 대한 설명을 제공하지 않지만,하지만 패킷을 필터링 할 수있는 것은 큰 도움이됩니다.

+0

솔직히,'BinaryReader'의 주 용도는'BinaryWriter'로 쓰여진 데이터를 읽는 것입니다. 이후 여기에 해당되지 않습니다 : * 잊어 버리는'BinaryReader' * - 그것은 당신을 도울 수 없습니다. –

답변

0

가능한 네트워크 패킷에는 여러 가지 유형이 있습니다. 대부분 잘 설명되어 있습니다.

Wireshark를 다운로드하고 (Microsoft는 이름이 지금 나와 나를 도망 가게하는 유사한 도구를 가지고 있습니다.), 일부 캡처를 실행하고 로그를보십시오.

Wireshark는 실제로 존재하는 모든 네트워크 패킷을 인식하므로 로그를 사용하여 인식 할 수 있어야하는 패킷의 유형을 결정한 다음 해당 사양에 맞게 Google을 결정할 수 있습니다.