инструмент для разделения файлов pcap по TCP-соединению? [закрыто]

Есть ли инструмент для разделения файла захвата пакетов (в формате pcap) на отдельные файлы для каждого TCP-соединения? (кроме собственного сценария оболочки, который, вероятно, должен дважды запускать захват ...). Что-то вроде wirehark 'follow TCP stream', но для командной строки (я боюсь, что wirehark будет потреблять большой объем памяти при отображении захвата пакета размером 700 МБ)

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

16
задан 24 May 2011 в 11:32
6 ответов

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

РЕДАКТИРОВАТЬ: по-видимому, была выпущена новая версия PcapPlusPlus и он содержит двоичные файлы PcapSplitter для довольно большого количества платформ (Windows, Ubuntu 12.04 / 14.04, Mac OSX Mavericks / Yosemite / El Captian). Я думаю, что лучше использовать эти двоичные файлы, чем ссылку, которую я ранее предоставил. Вы можете найти его здесь

9
ответ дан 2 December 2019 в 20:39

Можно использовать 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.

10
ответ дан 2 December 2019 в 20:39

Кажется, существует этот инструмент, который мог бы работать (я не использовал его лично),

http://www.netresec.com/?page=SplitCap (базирующиеся окна)

SplitCap является свободным (как в пиве) открытый исходный код pcap разделитель файла. SplitCap разделяет один большой pcap файл на несколько файлов на основе сеансов TCP и сеансов UDP, один pcap файл на сессию. SplitCap может также использоваться для разделения pcap файла на один pcap файл на парный хостом вместо сессии.

2
ответ дан 2 December 2019 в 20:39

tcpflow - это то, что вам нужно - разбивает pcaps в один файл для каждого сеанса TCP

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

3
ответ дан 2 December 2019 в 20:39

Немного излишне, но, используя tshark (поставляется с wirehark ), вы можете использовать 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 (на основе первого пакета, видимого для каждого соединения).

4
ответ дан 2 December 2019 в 20:39

вдохновленный @sch, вот версия bash:

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

имя файла будет таким: номер потока__time__source IP__port__destination IP__port.pcap

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

Edit :

это решение с tshark очень медленное, но надежное. SplitCap очень быстр, но когда в каком-то пакете возникает ошибка, он вылетает, а tshark только сообщает вам об ошибке, но продолжает:

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

и, наконец, есть PcapSplitter, который тоже очень быстрый, но для него нужен драйвер winpcap, он не ' t работать с драйвером npcap в windows.

Но есть решение для SplitCap: используя pcapfix , я могу исправить поврежденные пакеты, тогда SplitCap больше не выйдет из строя. и это то, что я использую сейчас, потому что tshark так медленно расщепляется.

и решение для PcapSplitter, которое я сделал, - это внедрение библиотеки winpcap любым методом, но пока у нас есть SplitCap, зачем это делать?

1
ответ дан 2 December 2019 в 20:39

Теги

Похожие вопросы