Экспорт данных pcap в csv: отметка времени, байты, восходящая/нисходящая линия связи, дополнительная информация

Мне было интересно, есть ли какой-нибудь инструмент, который может анализировать данные pcap и преобразовывать его в файл csv со следующей информацией:

timestamp, bytes, uplink/downlink, дополнительная информация..

В принципе, восходящая/нисходящая линия связи может быть видна IP/MAC-адресом, и дополнительная информация действительно не нужна, но я имею в виду, что это выбор конкретного поля пакета, например.

Я пытался использовать некоторые инструменты, но пока не нашел подходящего. В противном случае я напишу небольшой парсер. Спасибо заранее!

Ответ 1

TShark
Вот несколько примеров:

$ tshark -r test.pcap -T fields -e frame.number -e eth.src -e eth.dst -e ip.src -e ip.dst -e frame.len > test1.csv

$ tshark -r test.pcap -T fields -e frame.number -e eth.src -e eth.dst -e ip.src -e ip.dst -e frame.len -E header=y -E separator=, > test2.csv

$ tshark -r test.pcap -R "frame.number>40" -T fields -e frame.number -e frame.time -e frame.time_delta -e frame.time_delta_displayed -e frame.time_relative -E header=y > test3.csv

$ tshark -r test.pcap -R "wlan.fc.type_subtype == 0x08" -T fields -e frame.number -e wlan.sa -e wlan.bssid > test4.csv

$ tshark -r test.pcap -R "ip.addr==192.168.1.6 && tcp.port==1696 && ip.addr==67.212.143.22 && tcp.port==80" -T fields -e frame.number -e tcp.analysis.ack_rtt -E header=y > test5.csv

$ tshark -r test.pcap -T fields -e frame.number -e tcp.analysis.ack_rtt -E header=y > test6.csv

Ответ 2

Не смотрите дальше, wirehark - ваш лучший друг. Он может открыть ваш файл pcap и позволить вам указать дополнительные столбцы, которые вы хотите. После этого вы можете просто экспортировать их как csv. На главном интерфейсе просто прямо на любом из столбцов и выберите "предпочтение столбца". Это открывает новое окно, которое очень интуитивно. Просто добавьте новый столбец и укажите имя поля. Так просто.

Я попробовал tshark, но поверьте мне, это становится немного раздражающим, особенно с этим:

 tshark: Read filters were specified both with "-R" and with additional command-line arguments."

Это сообщение появляется, если вы включаете слишком много столбцов или по какой-либо неизвестной причине.

Ответ 3

Похоже, вы хотите Bro журналы подключений:

bro -r trace.pcap
head conn.log

Вывод:

#separator \x09
#set_separator  ,
#empty_field    (empty)
#unset_field    -
#path   conn
#fields ts  uid id.orig_h   id.orig_p   id.resp_h   id.resp_p   proto   service duration    orig_bytes  resp_bytes  conn_state  local_orig  missed_bytes    history orig_pkts   orig_ip_bytes   resp_pkts   resp_ip_bytes
#types  time    string  addr    port    addr    port    enum    string  intervacount    count   string  bool    count   string  count   count   count   count
1258531221.486539   gvuu4KIHDph 192.168.1.102   68  192.168.1.1 67  udp -   0.163820    301 300 SF  -   0   Dd  1   329 1   328
1258531680.237254   6nWmFGj6kWg 192.168.1.103   137 192.168.1.255   137 udp dns 3.780125    350 0   S0  -   0   546 0   0
1258531693.816224   y2lMKyrnnO6 192.168.1.102   137 192.168.1.255   137 udp dns 3.748647    350 0   S0  -   0   546 0   0

Теперь проанализируем соответствующие поля:

bro-cut ts id.orig_h id.orig_p id.resp_h id.resp_p service orig_bytes resp_bytes < conn.log | head

1258531221.486539   192.168.1.102   68  192.168.1.1     67  -   301 300
1258531680.237254   192.168.1.103   137 192.168.1.255   137 dns 350 0
1258531693.816224   192.168.1.102   137 192.168.1.255   137 dns 350 0
1258531635.800933   192.168.1.103   138 192.168.1.255   138 -   560 0
1258531693.825212   192.168.1.102   138 192.168.1.255   138 -   348 0
1258531803.872834   192.168.1.104   137 192.168.1.255   137 dns 350 0
1258531747.077012   192.168.1.104   138 192.168.1.255   138 -   549 0
1258531924.321413   192.168.1.103   68  192.168.1.1     67  -   303 300
1258531939.613071   192.168.1.102   138 192.168.1.255   138 -   -   -
1258532046.693816   192.168.1.104   68  192.168.1.1 67  -   311 300

Ответ 4

Как отмечено в комментариях к вопросу, для вывода ip-адресов для фреймов в файле захвата в формате csv используйте что-то вроде:

tshark -r <filename> -t fields -e ip.addr

См. справку tshark для получения дополнительной информации о параметрах для установки разделителя и цитирования символов в выводе csv.

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

Ответ 5

Вы можете сделать это из самого приложения Wireshark:

  • Убедитесь, что вы уже сохранили файл на диске (File>Save) (если у вас есть только сделал захват)
  • Перейдите к File>Export Packet Dissesctions>as "CSV" [etc]
  • Затем введите имя файла (убедитесь, что вы добавили CSV в конец, так как WS не сделайте это!)

Вуаля

Ответ 6

Возможно ли, что мы можем задать разделитель полей, отличный от запятой? Поскольку в моем файле PCap, если я устанавливаю разделитель =, то мои данные в выходном файле (.csv) выглядят не очень хорошо, потому что у меня есть в большинстве столбцов.

Итак, я хочу знать, что есть какой-либо способ, которым мы можем установить разделитель полей, например, другие символы, т.е. | (пип) и т.д.

Спасибо

Ответ 7

Вот инструмент python для разделения pcap на потоки и вывода извлеченных функций в файл CSV

Попробуйте использовать инструмент threads_to_weka в python

Это требует наличия версии scapy, установленной в вашей системе, и лучше скопировать папку scapy в папку weka. И скопируйте файлы wfe.py, tcp_stream.py и entropy.py в папку scapy. После того, как вы это сделали, ваш текущий каталог должен выглядеть примерно так:

C:\Users\INKAKA\flows_to_weka\scapy

и скопируйте файл .pcap в эту папку и попробуйте выполнить эту команду:

$python  wfe.py -i input.pcap -t csv > output.csv

и вы также можете получить нужные функции, добавив необходимые функции в tcp_stream.py и wfe.py.

Для справки вы можете посетить: https://github.com/fichtner/flows_to_weka