Как я могу использовать структуру пакетов из RFC и применить ее к моей программе сокетов? - PullRequest
0 голосов
/ 02 июля 2010

Вот пример изображения «Структура пакета»: http://freesoft.org/CIE/Course/Section3/7.htm

Допустим, у меня была небольшая программа на Python, которая прослушивала порт X, захватила этот пакет и сохранила его в переменной «data».

Как мне извлечь информацию о пакете из данных?Например, скажем, я хотел прочитать «версию», это просто:

print data[0:4] ?

Как бы я получил исходный IP-адрес?

В последнее время я делал больше кодирования сокетови натолкнулся на довольно много из этих изображений «структура пакета».Мне еще предстоит выяснить, как применить их к моему коду: /

1 Ответ

0 голосов
/ 02 июля 2010

Обратите внимание, что в вашем примере показан заголовок IP - если вы просто используете сокеты, вы не увидите эту информацию (она уже переваривается стеками IP системы и TCP).

Если вы хотите захватывать необработанные данные, посмотрите на использование libpcap, который разрешит необработанные пакеты. Вы также можете использовать tcpdump для создания файла с необработанными пакетами.

Что касается структур, вы можете прочитать первые 4 байта, если ваша data была строкой с вашей командой. Вы, вероятно, захотите закодировать строку как «шестнадцатеричное» (или целое число для нормального представления), или вместо этого вы увидите символы «мусора».

Для более мощной распаковки, используйте модуль struct , который поставляется с python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...