2013-04-30 4 views
10

Есть ли возможность фильтровать tcpdump (в реальном времени или после создания дампа) на основе времени соединения tcp (продолжительность соединения)?tcpdump - как фильтровать на основе времени/продолжительности соединения tcp

Я записываю трафик http json rpc. Я хочу записать только те соединения, длина которых превышает 1000 мс.

В wirehark есть инструмент в меню-> Статистика-> Разговоры (вкладка TCP), и там я могу сортировать по «Продолжительность». Но я хочу записывать (или фильтровать) долгоживущие соединения раньше (не в wirehark).

В командах псевдо я хочу сделать что-то вроде этого:

tcpdump -i eth0 port 80 and connectionTime>1000ms -w data.pcap 

или после записи:

cat data.pcap | SOMETOOL -connectionTime>1000ms > dataLongConnections.pcap 

SOMETOOL должен экспортировать отфильтрованные данные в формат, который Wireshark поймет. Потому что после фильтрации я хочу проанализировать эти данные в Wireshark.

Как я могу это сделать?

+0

Вы попробовали SplitCap, как было предложено kauppi? Вы не можете фильтровать длительность сеанса с помощью tcpdump, поскольку он не является фильтром с состоянием, SplitCap на первый взгляд, похоже, обеспечивает то, что вам нужно для начала работы. –

+0

Чтобы добавить то, что сказал Том Регнер: 'tcpdump' не отслеживает продолжительность сеанса. Причина, по которой «Wireshark» может показать вам информацию, состоит в том, что сам «Wireshark» отслеживает продолжительность сеанса, а не просто анализирует «tcpdump». –

ответ

1

Вам необходимо учитывать ваш трафик на поток уровень вместо пакет уровень.

Если вы работаете с NetFlow, вы можете использовать flow-tools и flow-nfilter для фильтрации потоков по длительности. Таким образом, вы могли бы convert your pcap to NetFlow и позже фильтровать его.

Недостатком является то, что на выходе вы получаете NetFlow, а не PCAP. Для построения некоторых характеристик достаточно, но проверить пакеты - не обязательно.

Вы также можете создать свой собственный инструмент с помощью libpcap на C (жесткий) или scapy в python (более простой способ). Последний вариант не должен быть слишком сложным (если вы работаете с python)

2

SplitCap может работать для вас. Это займет PCAP в качестве входа и вывода отдельных PCAP для каждого сеанса TCP/UDP. После раскола вы можете отфильтровать из выходных PCAP интересные, чтобы сохранить.

Смежные вопросы