tshark - как избежать выбора нулевых или пустых полей http.referer - PullRequest
0 голосов
/ 19 июня 2020

В Tshark v. 3.0.5. Я пытаюсь запустить эти команды, чтобы выбрать URL-адреса, введенные непосредственно пользователем. Поэтому мне нужно исключить пустое поле http.referer (на null).

tshark -Y "http.request == 1 and **!http.referer**" -T fields -e frame.time -e http.referer -e http.host -r traffic.pcap > no_referer.txt
bash: !http.referer: event not found

tshark -Y "http.request == 1 and **http.referer == ""**" -T fields -e frame.time -e http.referer -e http.host -r traffic.pcap > no_referer.txt
Running as user "root" and group "root". This could be dangerous.
tshark: Unexpected end of filter string.

Есть ли у вас какие-либо представления о том, как выбрать эти данные в tshark?

1 Ответ

2 голосов
/ 19 июня 2020

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

Per WireShark http docs , http.referer - это строка, поэтому проверка на пустоту значения сверяются с "". Поэтому используйте http.referer and !http.referer == "", чтобы получить пакеты, в которых есть это поле, но также где поле не пустое.

tshark -Y 'http.request == 1 and http.referrer and !http.referer == ""' ...

Примечание : field != value и !field == value различны, и последнее предпочтительнее. dftest можно использовать , чтобы продемонстрировать, почему это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...