Простой способ проверить правильность фильтра BPF

Каков самый простой способ проверить фильтр BPF в качестве обычного пользователя?

Самое простое, что я нашел, это запустить tcpdump с небольшим файлом pcap в качестве входных данных для параметра -r.

$ tcpdump -r one_packet.pcap -F invalid_bpf.conf 2> /dev/null ; echo $?
1
$ tcpdump -r one_packet.pcap -F valid_bpf.conf 2> /dev/null ; echo $?
0

Возвращает стандартные коды ошибок для недопустимых или допустимых фильтров BPF. Для этого требуется, чтобы у меня был файл PCAP для ввода в качестве входных данных.

Есть ли способ выполнить этот простой тест без файла PCAP или специальных привилегий?


person RyPeck    schedule 18.03.2014    source источник


Ответы (1)


ЕСЛИ у вас есть оболочка со встроенной командой "echo", которая поддерживает escape-последовательности, один несколько извращенный способ сделать это - сделать

echo -en "\0324\0303\0262\0241\02\0\04\0\0\0\0\0\0\0\0\0\0377\0377\0\0\01\0\0\0"|\ 
    ./tcpdump -r - -F bpf.conf 2>/dev/null; echo $?

Это сработало для меня в OS X 10.8, в которой есть версия bash 3.2.48 (1) (x86_64-apple-darwin12).

Эта команда «echo» записывает короткий файл pcap без пакетов в нем и с типом заголовка канального уровня DLT_EN10MB. Это проверит, действителен ли фильтр для Ethernet; есть фильтры, которые допустимы для некоторых типов заголовков канального уровня, но недействительны для других, например, "не широковещательный", который допустим для Ethernet, но не для PPP, поэтому вам нужно выбрать некоторые тип заголовка канального уровня для использования при тестировании.

person Community    schedule 18.03.2014
comment
Это потрясающе. Я получаю следующую ошибку, хотя tcpdump: unknown file format | в Mac OS X 10.9 GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13) версия tcpdump tcpdump version 4.3.0 -- Apple version 56 - person RyPeck; 20.03.2014
comment
Работает, если я помещу этот вывод из эха в файл pcap и запущу его против него. - person RyPeck; 20.03.2014
comment
Я получаю следующую ошибку, хотя tcpdump: unknown file format | на Mac OS X 10.9. Похоже, Apple сломала либо tcpdump, либо libpcap. Я посмотрю и напишу ошибку. - person ; 20.03.2014
comment
Это работает, когда я передаю вывод эха в файл и запускаю его против него, что меня смутило. - person RyPeck; 20.03.2014