інструмент для розбиття файлів pcap через TCP-з'єднання? [зачинено]


16

Чи є інструмент для розділення файлу захоплення пакетів (у форматі pcap) на окремі файли для кожного TCP-з'єднання? (окрім домашнього сценарію оболонки, який, ймовірно, повинен запускатися двічі над захопленням ...). Щось на зразок wireshark "слідкуйте за потоком TCP", але для командного рядка (боюся, wireshark буде споживати велику кількість пам'яті під час показу пакету 700 МБ захоплення)

Я переглянув tcpflow, але, здається, вони створюють файли набагато більше, ніж оригінальні файли pcap, і вони, схоже, не у форматі pcap.


Файли, отримані в результаті tcpflow, не є pcaps, вони є фактичними корисними навантаженнями tcp потоків tcp.
chris

Відповіді:


9

Ви також можете використовувати PcapSplitter, який є частиною пакету PcapPlusPlus . Він робить саме те, що вам потрібно (це розщеплення файлів pcap за допомогою TCP або UDP-з'єднання), це багатоплатформна платформа і не має обмеження кількості підключень у вихідному файлі (тому ви можете використовувати його для розділення великого файл pcap, що містить тисячі підключень або навіть більше). Посилання, наведене вище, призначене для вихідного коду, але якщо ви хочете скомпільований двійковий код - ось посилання на бінарні файли я створив для кількох платформ

EDIT: очевидно, випущена нова версія PcapPlusPlus, яка містить бінарні файли PcapSplitter для досить багатьох платформ (Windows, Ubuntu 12.04 / 14.04, Mac OSX Mavericks / Yosemite / El Captian). Я думаю, що краще використовувати ці двійкові файли, ніж посилання, яке я раніше надав. Ви можете знайти його тут


10

Ви можете використовувати tcpdumpдля вилучення потрібних частин pcap ... припустимо, ви шукаєте пакети в з'єднанні сокета між TCP / 55777 на одному хості і TCP / 80 на іншому. Ваш вихідний файл bigfile.pcap, який є нюховим скидом багатьох сеансів HTTP для відповідного веб-хоста ...

tcpdump -r bigfile.pcap -w session.pcap -s0 tcp and port 55777

Це потягне всі пакети, що збираються до TCP / 55777, bigfile.pcapі скопіює їх session.pcap.


Чи -s0справляє якийсь ефект при спільному використанні -r?
kasperd

4

Трохи надмірності, але використовуючи tshark(поставляється разом wireshark), ви можете zsh:

file=file.pcap
tshark -Tfields -e tcp.stream \
                -e frame.time_epoch \
                -e ip.src \
                -e tcp.srcport \
                -e ip.dst \
                -e tcp.dstport -r $file |
  sort -snu |
  while read -A f; do 
    tshark -r $file -2R "tcp.stream == $f[1]" -w ${(j:-:)f[2,-1]}.pcap
  done

Котрий генерує файли з назвою типу 1509466312.202450000-10.0.0.1-58892-10.0.0.2-80.pcap(на основі першого пакета, що бачиться для кожного з'єднання).


3

tcpflow - це те, що ви хочете - розбиває pcaps на один файл за сеанс TCP

http://www.circlemud.org/jelson/software/tcpflow/


3
як згадувалося в запитанні, я спробував це і не зрозумів, чому отримані вихідні файли були набагато більшими, ніж вхідні (pcap) файли ...
Andre Holzner

1
також tcpflow, здається, не може вивести файли pcap.
takumar

2

Здається, цей інструмент може працювати (я його особисто не використовував)

http://www.netresec.com/?page=SplitCap (на основі вікон)

SplitCap - це вільний (як у пиві) розщеплювач файлів з відкритим кодом pcap. SplitCap розбиває один великий pcap-файл на кілька файлів на основі сеансів TCP та UDP, по одному файлу pcap за сеанс. SplitCap можна також використовувати для розділення файлу pcap на один файл pcap на пару хостів замість сеансу.


1

натхненний @sch ось баш-версія:

file=cap.pcap
$tshark -Tfields -e tcp.stream \
                -e frame.time_epoch \
                -e ip.src \
                -e tcp.srcport \
                -e ip.dst \
                -e tcp.dstport -r $file |
  sort -snu |
  while read -a f; do 
  [[ "${f[5]}" ]] || continue  # sometimes there is no stream number ex. UDP
  fileout=$(echo ${f[0]}__${f[1]}__${f[2]}__${f[3]}__${f[4]}__${f[5]} | tr -d '\r'  )
    $tshark -r $file -2R "tcp.stream == ${f[0]}" -w "$fileout.pcap"
  done
read

ім'я файлу буде таким: stream number__time__source IP__port__destination IP__port.pcap

tr -d '\r' призначений для користувачів Windows, оскільки tshark у windows виводить CR LF.

Редагувати :

це рішення з цхарком настільки повільне, але впевнене. SplitCap дуже швидкий, але коли в деякому пакеті є помилка, він виходить з ладу, тоді як tshark повідомляє про помилку, але продовжуйте:

tshark: The file "cap.pcap" appears to have been cut short in the middle of a packet.

і, нарешті, є PcapSplitter, який теж надто швидко, але йому потрібен драйвер winpcap, він не працює з драйвером npcap у Windows.

Але є рішення SplitCap: використовуючи pcapfix, я можу виправити корумповані пакети, тоді SplitCap ніколи не вийде з ладу. і це те, що я зараз використовую, тому що цхарк так повільно розщеплюється.

і рішенням для PcapSplitter я вводив dll winpcap за допомогою будь-якого методу, але, хоча у нас є SplitCap, для чого це робити?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.