Извлекать определенные байты из пакетов iscsi программно - PullRequest
1 голос
/ 08 сентября 2011

Я искал способ сделать следующее безрезультатно. Я надеялся, что кто-то здесь сможет направить меня в правильном направлении.

Проблема заключается в следующем: у меня есть тонна следов проволочной акулы, содержащих различное количество пакетов ISCSI. Мне нужно разобрать команду, отправляемую инициатором (в байтах) и записать ее в файл для каждого пакета. Первоначально я собирался сделать это вручную, поскольку его легко увидеть в приложении wireshark (см. SS ниже), но некоторые из этих следов огромны (1-2 Гб), и это займет целую вечность вручную.

Чтобы уточнить, что мне нужно, это:

http://img690.imageshack.us/img690/6067/wiresharksample.png

Я изучал документацию по tshark и rawshark, но я не уверен, что сможет получить мне то, что мне нужно. Друг предложил сам использовать libpcap для анализа трассировок, но из того, что я могу сказать, мне нужно найти способ идентифицировать байты, которые мне нужно извлечь из каждого пакета. В идеале я хотел бы использовать что-то, что распознает это для меня (например, диссектор ISCSI в Wireshark).

Кто-нибудь может указать мне правильное направление? Мне нужен какой-то способ разобрать эти команды из каждого пакета ISCSI, не просматривая необработанные данные пакета и не пытаясь определить, какие байты мне нужны. Как примечание - это не всегда последние 16 байтов в пакете, как показано выше, поэтому я не могу просто пройти и взять последние 16 байтов.

Любое понимание будет высоко ценится, спасибо!

1 Ответ

0 голосов
/ 08 сентября 2011

Если вы экспортируете пакеты в PDML / XML (Файл-> Экспорт ...-> Файл-> Сохранить как тип PDML), вы получите красивый файл XML со всеми полями протокола.Вы можете использовать это для своих требований или использовать в качестве индекса для определения необработанных байтов в каждом пакете.

screen cap of PDML iscsi packet

...