Расшифровка кодирования: инструменты анализа пакетов - PullRequest
4 голосов
/ 12 февраля 2009

Я ищу лучшие инструменты, чем Wireshark для этого. Проблема с Wireshark заключается в том, что он не форматирует слой данных (который является единственной частью, на которую я смотрю), чтобы я мог сравнивать различные пакеты и пытаться понять кодировку третьей стороны (которая является закрытым источником).

В частности, какие есть хорошие инструменты для просмотра данных, а не информация заголовка TCP / UDP? В частности, инструмент, который форматирует данные для сравнения.

Чтобы быть очень конкретным : я хотел бы программу, которая сравнивает несколько (не только 2) файлов в шестнадцатеричном формате.

Ответы [ 6 ]

5 голосов
/ 09 марта 2009

Взгляните на это сообщение в блоге от BreakingPoint Labs . Они обсуждают ручное реверс-инжиниринг протоколов и набор инструментов, созданных на PacketFu , чтобы облегчить эту задачу.

Соответствующим вашим вопросом является набор инструментов, который позволяет легко идентифицировать и выделять изменения в пакетах. Вот пример скриншота, который показывает использование цвета, чтобы очертить различия пакетов: alt text
(источник: breakpointsystems.com )

3 голосов
/ 03 марта 2009

Откровенно говоря, лучшая ставка для вас - бросить свою.

Получите язык сценариев, который вам удобен, и начните разбираться с проблемой. Сначала составьте простое многофакторное сравнение, но как только вы начнете находить шаблоны, которые, по вашему мнению, являются значительными (или, по вашему мнению, могут быть), вернитесь и добавьте их в код - исключите их из вывода, выделите их, переведите их в другую запись, замените их на их «значение» или какое-то высокоуровневое описание их роли - что бы это ни казалось уместным. Если вы не можете решить, сделайте это опцией.

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

Никакой готовый инструмент не поможет вам в этом, но хороший язык сценариев (скажем, python, ruby ​​или даже perl) очень поможет. Когда вы формируете теорию, закодируйте ее и попробуйте. Разберитесь со своим кодом, пробуйте разные идеи по мере того, как они приходят вам в голову, создавая множество хитростей, приспособленных к этой проблеме, по мере продвижения вперед.

- MarkusQ

P.S. Не попадайтесь в ловушку, пытаясь использовать C, Java или что-то для этого. Вы будете играть быстро и свободно, и у вас должен быть инструмент, который не требует объявления переменных, компиляции и т. Д. У вас будет много возможностей его сжать и переписать , как только вы поймете, как он работает.

2 голосов
/ 10 марта 2009

Ваша проблема не в том, чтобы анализировать сетевые данные, а в том, чтобы сравнивать двоичные файлы в соответствии с вашими потребностями.

Я бы извлек данные приложения с помощью любого анализатора, то есть с помощью tcpdump, используемого, как описано Zoreadche, или Wireshark (то есть с помощью следующего сеанса TCP). Затем сохраните его в файлы и сравните с помощью любого инструмента сравнения файлов. Вы можете попробовать эти (самые популярные):

  • Examdiff Pro . Действительно быстрое сравнение каталогов.
  • Winmerge . Хотя и не так быстро, как examdiff pro, он с открытым исходным кодом и быстро развивается. Это мой первый выбор.
  • Beyondcompare . Это единственный инструмент сравнения файлов, который я знаю, который делает именно то, что вы ищете, то есть одновременно сравнивает пробные файлы.
1 голос
/ 04 марта 2009

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

0 голосов
/ 05 марта 2009

Если у вас есть захват, который вы сделали с помощью ethereal, вы можете прочитать захват или сделать захват с помощью tcpdump. Для захвата используйте команду tcpdump, например tcpdump -s 0 -qn -X или tcpdump -X -r имя файла будет читать захват.

22:08:33.513650 IP 192.168.32.10.40583 > 69.59.196.211.80: tcp 1261
0x0000:  4500 0521 18ec 4000 4006 322a c0a8 200a  E..!..@.@.2*....
0x0010:  453b c4d3 9e87 0050 b0b6 4b4f 1598 0090  E;.....P..KO....
0x0020:  8018 1920 9b4f 0000 0101 080a 002e 701b  .....O........p.
0x0030:  093c bc38 4745 5420 2f75 7365 7273 2f32  .<.8GET./users/2
0x0040:  3032 3637 2f7a 6f72 6564 6163 6865 2048  0267/zoredache.H
0x0050:  5454 502f 312e 300d 0a48 6f73 743a 2073  TTP/1.0..Host:.s
0x0060:  7461 636b 6f76 6572 666c 6f77 2e63 6f6d  tackoverflow.com

Или есть другой tcpick , который может быть тем, что вы хотите. Вы можете захватить полезную нагрузку TCP-соединений и отобразить ее в шестнадцатеричном или сохраненном виде.

0 голосов
/ 12 февраля 2009

Проблема в том, что данные на прикладном уровне не являются стандартными (за очень немногими исключениями, такими как HTTP, POP3 и т. Д.). Такие инструменты, как Wireshark, не могут декодировать эту информацию, если они не знают формат.

Я знаю, что в некоторых старых версиях Ethereal (сейчас Wireshark) была опция (вам, возможно, придется ее включить), чтобы показать полезную нагрузку. Ожидайте, что это не имеет смысла, большинство протоколов в двоичном формате!

...