Я хотел бы получить обработанный результат с помощью tshark или wireshark и использовать его в python, который, я думаю, отлично подходит для формата .json. Теперь я использую:
ssh root@ip tcpdump -i eth0 -w - | tshark -i - -Tjson
чтобы получить сетевой пакет из удаленной системы, потому что удаленная система имеет только tcpdump, больше нельзя установить программное обеспечение. -w - означает вывод на стандартный вывод и -i - означает чтение со стандартного ввода. Теперь я вижу вывод json в терминале в режиме реального времени, но я хотел бы получить объект json в python и обработать его. Я пытаюсь написать этот код в alpha.py:
import sys
for line in sys.stdin:
print line
и используйте команду ниже, чтобы получить вывод:
ssh root@ip tcpdump -i eth0 -w - | tshark -i - -Tjson | python3 alpha.py
и вывод выглядит так:
[
{
"_index": "packets-2019-04-30",
"_type": "pcap_file",
"_score": null,
"_source": {
"layers": {
"frame": {
"frame.encap_type": "1",
"frame.time": "Jan 1, 1970 08:14:05.382776000 HKT",
"frame.offset_shift": "0.000000000",
"frame.time_epoch": "845.382776000",
"frame.time_delta": "0.000000000",
"frame.time_delta_displayed": "0.000000000",
"frame.time_relative": "0.000000000",
"frame.number": "1",
"frame.len": "111",
да, каждая «строка» - это просто строка вывода, а не полная строка json. Кстати, приведенный выше вывод для удобства читался не из стандартного ввода, а из файла .pcap:
tshark -r a.pcap -Tjson | python3 alpha.py
Теперь я в замешательстве, но многие люди предлагают мне идеи. Теперь я хотел бы сделать это более ясным, поэтому я публикую этот пост. Исходное сообщение находится здесь: Как переслать обработанные данные Wireshark на python? каким методом?
и большое спасибо @Ente https://stackoverflow.com/users/3215929/ente
Жду решений. Спасибо.
-Tek
, если вы хотите иметь один json в строке. Из документации: ek Формат JSON с разделителями новой строки для массового импорта в Elasticsearch. - person Steffen Ullrich   schedule 30.04.2019-Tek
один пакет может быть декодирован в 2 формата json, один{"index" : {"_index": "packets-2019-04-30", "_type": "pcap_file"}}
, а другой начинается с{"timestamp" : "1556587637021",
, независимо от того, читается ли он из файла .pcap или читается из сетевого интерфейса, такого какeth0
- person shih alex   schedule 30.04.2019pyshark
прямо сейчас, но вы пробовалиpyshark.FileCapture('-')
? Насколько я вижу, вам также нужно будет отказаться от шага tshark. Что-то в этом духе:ssh root@ip tcpdump -i eth0 -w - | python -c "import pyshark; pyshark.FileCapture('-')"
- person Ente   schedule 03.05.2019ssh
подключаетесь к этой машине, используя тот же интерфейс, с которого вы сниффите. В противном случае вы создадите бесконечный цикл обнюхивания-декодирования, который в конечном итоге взорвет вашу машину;) - person Ente   schedule 03.05.2019