Вопрос

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

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

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

Это было полезно?

Решение

Честно говоря, лучше всего свернуть свой собственный.

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

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

Никакой готовый инструмент вам в этом не поможет, но хороший язык сценариев (скажем, Python, Ruby или даже Perl) очень поможет.Формируя теорию, запишите ее и опробуйте.Перебирайте свой код, пробуя разные идеи по мере того, как они приходят вам в голову, по мере продвижения создавая набор приемов, адаптированных к этой проблеме.

-- МаркусКью

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

Другие советы

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

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

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

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

  • Экзамдифф Про.Действительно быстрое сравнение каталогов.
  • Винмердж.Хотя он и не так быстр, какexamdiff pro, он имеет открытый исходный код и быстро развивается.Это мой первый выбор.
  • Вне всякого сравнения.Это единственный известный мне инструмент сравнения файлов, который делает именно то, что вы ищете, а именно одновременно сравнивает файлы try.

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

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

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

Если у вас есть захват, сделанный с помощью 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-соединений и отобразить ее в шестнадцатеричном виде или сохранить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top