Экспорт данных 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