Бинарный ридер для содержимого пакета?

1

Я создал приложение, которое извлекает сетевые пакеты, используя этот пример: http://www.codeproject.com/Articles/4217/Packet-Sniffing-with-Winpcap-Functions-Ported-to-a

Я намерен использовать его для получения содержимого конкретных пакетов, отправленных в конкретное приложение с сервера, меня не интересуют какие-либо другие пакеты. Пакет, который мне интересен, - это 1 значение, которое периодически обновляется.

Я преобразовал его в VB.Net, так как это мое предпочтение, поэтому я буду давать свои фрагменты кода в VB, хотя я могу понять С#, поэтому не стесняйтесь приводить примеры с помощью С#.

Он имеет событие с параметром '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

Затем я пройду цикл с переменной "pos" в качестве текущей позиции, увеличивающейся по типу данных текущих байтов. (Например: something = reader.ReadString() pos + = something.Length)

Моя единственная проблема: я не уверен, какие типы я должен искать? Что такое "структура" пакета? Возможно ли получить сервер, на который был отправлен пакет, и приложение, на которое оно было отправлено?

Я никогда не пытался использовать что-то подобное для пакетов раньше, у меня только был опыт получения данных из файла базы данных пользовательского формата.


Редактирование: я нашел что-то более полезное, у которого есть документация, объясняющая IP-адрес источника/получателя, и как фильтровать их, и это выглядит намного более полным, чем вышеупомянутый пример, упомянутый ранее.

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

Хотя он по-прежнему не дает объяснений, как понять содержимое пакета, но возможность фильтрации пакетов - большая помощь.

  • 0
    Честно говоря, основное использование BinaryReader - это чтение данных, которые были написаны с помощью BinaryWriter . Так как здесь это не так: забудьте о BinaryReader - он вам не поможет.
Теги:
packet
binaryreader
packet-capture

1 ответ

0

Существует много разных типов возможных сетевых пакетов - большинство из них хорошо документировано.

То, что вы хотите сделать, это загрузить Wireshark (у Microsoft также есть аналогичный инструмент, чье имя ускользает от меня прямо сейчас), запустите некоторые записи с этим и посмотрите на журналы.

Wireshark распознает практически все существующие сетевые пакеты, поэтому вы можете использовать его журналы, чтобы определить, какой тип пакета вам нужно распознать, а затем Google для его спецификации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню