Читать STDIN для pyhon с pyshark? - PullRequest
0 голосов
/ 30 апреля 2019

Я хотел бы получить обработанный результат с помощью tshark или wireshark и использовать его в python, который, как мне кажется, отлично подходит для формата .json. Сейчас я использую:

ssh root@ip tcpdump -i eth0 -w - | tshark -i - -Tjson

для получения сетевого пакета от удаленной системы, поскольку в удаленной системе есть только tcpdump, больше не может быть установлено программное обеспечение. -w - означает вывод в stdout и -i - означает чтение из stdin. Теперь я могу видеть вывод 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. Кстати, вышеприведенный вывод не для чтения из stdin, а из файла .pcap для удобства:

tshark -r a.pcap -Tjson  | python3 alpha.py

Сейчас я в замешательстве, но многие люди предлагают мне идеи. Теперь я хотел бы сделать это более понятным, поэтому я публикую этот пост. Оригинальный пост здесь: Как переслать данные, обработанные Wireshark, на python? в каком методе?

и большое спасибо @Ente https://stackoverflow.com/users/3215929/ente

Я с нетерпением жду решения. Спасибо.

...