Назад | Перейти на главную страницу

Расчет смещения пакета

В Wireshark, если я хочу написать фильтр, который принимает только сообщения о недоступности пункта назначения ICMP (тип 3), фильтр будет icmp[0] == 3 .

Как мне посчитать смещение пакета 0 в этом случае?

РЕДАКТИРОВАТЬ

Судя по приведенному выше изображению из Википедии, тип ICMP меньше 0-7 бит. Следовательно, это первый байт и, следовательно, 0?

Я предполагаю, что вы пытаетесь написать фильтр захвата, а не фильтр отображения; если вы пытаетесь написать фильтр отображения, Мартин Исакссон прав, вам следует сделать icmp.type == 3.

Да, 0 - это смещение в пакете ICMP.

В более новых версиях libpcap синтаксис поддерживает несколько более удобных способов написания фильтра, а именно icmp[icmptype] == icmp-unreach. WinPcap основан на версии libpcap с таким синтаксисом, поэтому он также поддерживает это.

Возможно, это ошибка, из-за которой Wireshark не позволяет вам сказать что-то подобное, а именно:

icmp.type == "Destination unreachable"

в фильтре отображения. Я посмотрю, как это исправить.

Ваш фильтр правильный, icmp[0] действительно соответствует первому байту заголовка ICMP, содержащему тип. Однако мне трудно читать, вам следует использовать icmp.type eq 3 вместо. Это также намного проще, если поле длиннее одного байта.

Здесь отображение ссылки на поле для ICMP.