Назад | Перейти на главную страницу

Как использовать tshark или tcpdump для вычисления переданных байтов

Я использую эту команду с tshark:

tshark -r pcapfile "tcp and ip.src==192.168.1.1" -T text -V -x | grep 'Total Length'

По сути, это анализирует pcap только на наличие подключений от исходного IP-адреса и ищет общую длину в байтах для каждого пакета. Я получаю такой вывод:

Total Length: 125 
Total Length: 210 
Total Length: 40 
Total Length: 125
> etc, etc....

Что мне нужно сделать, так это взять числа из общей длины и сложить их, чтобы я мог получить представление о том, сколько данных было передано по сети во временные рамки pcap с одного IP.

Есть ли команда, которую я могу добавить в конец той, которую я использую для этого? Или есть способ направить на стандартный вывод, а затем передать его программе, которая может анализировать и вычислять то, что мне нужно? Кто-нибудь знает подобную команду с tcpdump, которая может это сделать?

Вы можете положиться исключительно на tshark для этого используйте опцию статистики с калькулятором статистики ввода-вывода:

tshark -r pcapfile -z io,stat,0,"SUM(frame.len)frame.len && ip.src == 192.168.1.1 && ip.proto == 6"

Это покажет доску, на которой SUM столбец - это данные, которые вы ищете.

awk можно суммировать столбец чисел. Что-то вроде этого должно помочь.

Предполагая, что вывод вашего tshark находится в foo.txt:

$ cat foo.txt | awk '{ sum += $3 } END { print sum }'

Вы также можете направить вывод grep напрямую в awk, и это будет работать аналогичным образом.