Здравствуйте, я в основном использую шестнадцатеричный формат для отладки трафика моей программы, поэтому в wireshark я также хочу фильтровать ip.addr с шестнадцатеричным значением, например ip.addr == 0x7f000001
вместо ip.addr == 127.0.0.1
возможно ли это?
1 ответ
Страница man фильтра wireshark объясняет правильное использование оператора слайса, что особенно важно:
Срез всегда сравнивается с последовательностью строк или байтов. В особом случае, когда срез имеет ширину всего 1 байт, вы можете сравнить его с шестнадцатеричным целым числом 0xff или меньше (что означает, что он помещается внутри одного байта). Это недопустимо для последовательностей байтов, превышающих один байт, потому что тогда нужно будет указать порядковый номер многобайтового целого числа. Кроме того, это не допускается для десятичных чисел, так как они могут быть перепутаны с шестнадцатеричными числами, которые уже разрешены как байтовые строки.
Следующий пример должен работать:
ip[12:4]==7f:00:00:01 || ip[16:4]==7f:00:00:01
Обратите внимание на правильные смещения здесь 12 и 16 для IP-адресов источника и назначения, соответственно. Смещения задаются с начала заголовка IP, так как это то место, откуда вы нарезаете.