나는이 예제를 사용하여 네트워크 패킷을 검색하는 응용 프로그램을 만들었습니다 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
것은 여전히 패킷 내용 자체를 이해하는 방법에 대한 설명을 제공하지 않지만,하지만 패킷을 필터링 할 수있는 것은 큰 도움이됩니다.
솔직히,'BinaryReader'의 주 용도는'BinaryWriter'로 쓰여진 데이터를 읽는 것입니다. 이후 여기에 해당되지 않습니다 : * 잊어 버리는'BinaryReader' * - 그것은 당신을 도울 수 없습니다. –