Задать вопрос
@Northxstar

Pyshark: как сериализовать пакет в json?

Есть простейший сниффер на pyshark, который выводит пойманый пакет прямиком в bash:
import pyshark
capture = pyshark.LiveCapture(interface='ens33')
while(1):
 capture.sniff(packet_count=1)
 for packet in capture:
  print (packet)

Задача: сериализовать этот вывод в json (затем передать и на другой стороне разобрать)
В самом Pyshark есть метод packet_from_json_packet(json_pkt), а вот наоборот сделать не могу
  • Вопрос задан
  • 689 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
@LODIII
Python/SQL developer
посмотрел внимательнее на вывод.
это на 99% типичный yaml файл
установил Pyaml
и попробовал
python -c 'import sys, yaml, json; json.dump(yaml.load(sys.stdin), sys.stdout, indent=4)' < file.yaml > file.json


или в интерпретаторе
import yaml

with open("tshark.yml", 'r') as stream:
    data_loaded = yaml.safe_load(stream)

сругалась на строчки 15 и 39 что не может map
убрал в них вторые :
и все сконвертировалось
{
    "Packet (Length": "90)",
    "Layer ETH": {
        "Destination": "c4:6e:1f:07:3f:42",
        "Address": "00:0c:29:ef:ff:9c",
        ".... ..0. .... .... .... .... = LG bit": "Globally unique address (factory default)",
        ".... ...0 .... .... .... .... = IG bit": "Individual address (unicast)",
        "Source": "00:0c:29:ef:ff:9c",
        "Type": "IPv4 (0x0800)"
    },
    "Layer IP": {
        "0100 .... = Version": 4,
        ".... 0101 = Header Length": "20 bytes (5)",
        "Differentiated Services Field": 16,
...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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