Как отфильтровать вывод tcpdump по длине пакета - PullRequest
19 голосов
/ 26 марта 2012

Я пытался отфильтровать вывод tcpdump на основе длины пакетов.Но мне не повезло.

Это простой вывод команды;

tcpdump -n -i eth0 dst port 443 -A

17:03:30.866890 IP 192.168.0.149.45104 > 62.75.148.60.443: Flags [S], seq 2685064927, win 14600, options [mss 1460,sackOK,TS val 7028787 ecr 0,nop,wscale 4], length 0
E..<..@.@.......>K.<.0...
........9............
.k@3........


17:03:30.867658 IP 192.168.0.149.45104 > 62.75.148.60.443: Flags [.], ack 2285019097, win 913, options [nop,nop,TS val 7028787 ecr 974439509], length 0
E..4..@.@.......>K.<.0...
...2.............
.k@3:..U


17:03:30.867928 IP 192.168.0.149.45104 > 62.75.148.60.443: Flags [P.], seq 0:171, ack 1, win 913, options [nop,nop,TS val 7028787 ecr 974439509], length 171
E.....@.@..f....>K.<.0...
...2.............
.k@3:..U...........Opw2.....l..".T.7.q.]h..8W..%.....H...
.......9.8.......5...   .....E.D.3.2...........A...../.........
...1.........alice.sni.velox.ch.
.................#..


17:03:30.869712 IP 192.168.0.149.45104 > 62.75.148.60.443: Flags [.], ack 1319, win 1078, options [nop,nop,TS val 7028788 ecr 974439511], length 0
E..4..@.@.......>K.<.0...
...2.....6.......
.k@4:..W


17:03:30.870724 IP 192.168.0.149.45104 > 62.75.148.60.443: Flags [P.], seq 171:178, ack 1319, win 1078, options [nop,nop,TS val 7028788 ecr 974439511], length 7
E..;..@.@.......>K.<.0...
...2.....6.......
.k@4:..W......0

Я хочувидеть пакеты, только если они имеют длину более 100 байтов.для этого случая только 3-й пакет.

options [nop, nop, TS val 7028787 ecr 974439509], длина 171

Я посмотрел man-страницы для tcpdump, но не смог найти ни одного полезного параметра.здесь упомянуто выражение «большая длина»;http://www.ethereal.com/docs/man-pages/tcpdump.8.html но я тоже не мог использовать это выражение.

$ tcpdump -n -i eth0 dst port 443 -A -x greater 100
tcpdump: syntax error

Спасибо за любую помощь.

1 Ответ

31 голосов
/ 07 апреля 2012

greater длина работает, но вы должны использовать его как часть полного выражения фильтра, а выражение фильтра должно идти после всех аргументов флага командной строки .

Рабочий пример:

tcpdump -n -i eth0 -A -x dst port 443 and greater 100

Должен работать - dst port 443 and greater 100 - это полное выражение фильтра, которое проверяет пакеты, отправляемые на TCP или UDP-порт 443 и имеющие длину total (включая канальный уровень, IP и Заголовки TCP!) Больше 100.

НЕ рабочий пример:

tcpdump -n -i eth0 dst port 443 -A -x greater 100

не будет работать - dst в dst port 443 рассматривается как начало выражения фильтра, то есть оно и все после него, , включая -A и -x, считаются частью выражения фильтра, но -A и -x не являются допустимыми компонентами выражения фильтра. Предполагается, что они должны быть параметрами командной строки, поэтому они должны идти перед всеми аргументами, не являющимися флагами, включая компоненты выражения фильтра.

...