Ось ще один спосіб зробити це за допомогою tshark
. Ідея така ж, як і відповідь від @artistoex - різниця полягає в тому, що вона не розглядає кожне напівз'єднання для себе, а вихід - номер потоку TCP (від Wireshark / tshark), з яким може бути простіше працювати, коли ви хочете відкрити цей потік у Wireshark і продовжувати публікувати його там.
tshark -r pcap_file.pcap -R "tcp.flags & 0x03" -Tfields -etcp.stream |
sort -n | uniq -c | awk -F ' ' '{ if ($1<4) print $1," ", $2 }'
Фільтр відображення робить те саме, що фільтр захоплення з іншої відповіді, він використовує той факт, що біти SYN та FIN є двома найменш значущими бітами в полі прапорців TCP, тож якщо обидва встановлені, це було б 0b11
або 0x3
. І- tcp.flags
поле поле з 0x3
дасть ненульові значення, якщо встановлено будь-який прапор.
tshark
виводить номер потоку TCP для кожного пакету тут. Ми сортуємо їх і підраховуємо унікальні числа. Останній крок роздруковує лише рядки, де кількість пакетів для цього потоку менше 4 (1 SYN та 1 FIN для кожного напівнапрямку).
Тоді ви можете відкрити Wireshark за допомогою
wireshark -r pcap-file -R "tcp.stream eq 1234"
де 1234 - з попередньої команди.
Гарненька? Я думаю що ні. Швидкий? Немає...