в Wireshark вики это пример фильтрации HTTP GET
Запросы:
Захват HTTP-запросов GET. Это ищет байты 'G', 'E', 'T' и '' (шестнадцатеричные значения 47, 45, 54 и 20) сразу после заголовка TCP. «tcp [12: 1] & 0xf0) >> 2» определяет длину заголовка TCP. От Джефферсона Огаты через список рассылки tcpdump-worker.
с этим фильтром:
port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420
К сожалению, это не работает. Как правильный фильтр для HTTP GET
Запросы?
Это работает, убедитесь, что вы заключили свой фильтр в двойные кавычки, чтобы оболочка не пыталась анализировать аргументы фильтра.
например завиток google.com для меня:
$ sudo tshark -i eth0 "port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420"
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
0.000000 10.53.0.66 -> 209.85.143.104 HTTP GET / HTTP/1.1
Однако это довольно сложный способ сделать это. tshark позволяет вам применять фильтры чтения. Теперь они могут быть не так полезны, если у вас большой объем данных (фильтрация происходит после захвата), но они, безусловно, более интуитивно понятны и удобочитаемы.
$ sudo tshark -i eth0 -R 'http.request.method == "GET"' "port 80"
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
5.641015 10.53.0.66 -> 209.85.143.104 HTTP GET / HTTP/1.1