как получить номер подключения (количество) к конкретному хосту из tcpdump, используя wireshark - PullRequest
2 голосов
/ 22 марта 2012

Я хочу проверить, сколько соединений создано моей библиотекой пула соединений с конкретным хостом.Я получил tcpdump, из этого, как получить номер установленного соединения, используя wireshark.Я могу получить его с помощью инструмента tcptrace, но я хочу знать, как это сделать с помощью wireshark.

Ответы [ 2 ]

2 голосов
/ 16 апреля 2012

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

Если ваш исходный ip был 192.168.1.1, а целевой хост - 192.168.1.2, тогда примените фильтр следующим образом:

ip.src_host == 192.168.1.1 && ip.dst_host == DESTADDRESS && tcp.flags.syn == 1

Если существует вероятность того, что целевой хост в вашем вопросе также устанавливает соединения с исходным хостом, то исходный хост также будет отправлять обратно SYN, ACK для принятия этих соединений, поэтому, чтобы отфильтровать их, добавьте это в конец:

&& tcp.flags.ack == 0

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

Если вы ищете одновременные подключения в любой момент времени, Wireshark может оказаться не лучшим вариантом, так как в этом случае вы будете искатьдля числа соединений (SYN), которые происходят перед соответствующими FIN или RST (конец соединений), что является скорее статистической функцией.

Также стоит отметить, что если источник захвата находится на источникехост, что SYN / соединения в этом перехвате не гарантированно приняты / успешны.Вам также необходимо убедиться, что для каждого соединения было выполнено полное трехстороннее рукопожатие, SYN, SYN-ACK, ACK.

0 голосов
/ 22 июля 2013

Попробуйте это - это может быть не 100% - поскольку он будет видеть только соединения с некоторыми данными на них - и предполагает некоторые идеалистические вещи - но этого достаточно для большинства случаев:

tcpdump -tt -n -r __file__ \
    | grep '\.10011' \
    | sed -e 's/^.*IP [^>]\+\.\([^ ]\+\) > 10.0.10.1.13000:.*$/\1:&/g' \
        -e 's/^.*IP 10.0.10.1.13000 > [^:]\+\.\([^ ]\+\): .*$/\1:&/g' \
    | sed -e 's/ IP .* > .*: Flags \[[^]]*S[^]]*\].*/:open/g' \
        -e 's/ IP .* > .*: Flags \[[^]]*[RF][^]]*\].*/:close/g' \
    | grep -v 'length 0' \
    | sed 's/ IP .* > .*: Flags .*/:isopen/g' \
    | gawk -F: 'BEGIN{ cons["x"]=1; }{ 
        if ( $3 == "open" || $3 == "isopen" ) { cons[$1] = 1; } 
        if ( $3 == "close" ) { delete cons[$1]; }; 
        printf("%s %s %s\n", strftime("%Y%m%dT%H%M%S",int($2)), $2, (length(cons) - 1) ); }' \
    | uniq -f 2

Оцените комментарии, исправления или исправления.Обратите внимание - это проверяет определенный порт и IP (10.0.10.1.13000) - вы можете немного настроить его, чтобы он работал для любого порта и IP

...