Я пытаюсь написать кодировщик/декодер python3 для AMF.Сериализация AMF для python3
Причина, по которой я делаю это, потому что я не нашел подходящую библиотеку, которая работает на python3 (я ищу не-навязчивую библиотеку, которая предоставит мне методы и позвольте мне обработать gateway)
Библиотеки Avaialble, которые я тестировал для python, являются amfast, pyamf и amfy. В то время как первые 2 для python2 (несколько вилок pyamf предполагают, что они поддерживают python3, но я не могу заставить его работать), amfy был разработан для python3, но мне не нужны некоторые функции, которые мне нужны (в частности, сериализация объектов).
Чтение через спецификацию AMF0 и AMF3, я смог добавить кодировщик/декодер пакетов, но я наткнулся на сериализацию объектов, и доступной документации было недостаточно (хотелось бы увидеть некоторые примеры). Существующие библиотеки тоже не помогли.
Использование RemoteObject (в прогибается), мне удалось отправить следующий запрос на мой парсер:
b'\x00\x03\x00\x00\x00\x01\x00\x04null\x00\x02/1\x00\x00\x00\xe0\n\x00\x00\x00\x01\x11
\n\x81\x13Mflex.messaging.messages.CommandMessage\x13operation\x1bcorrelationId\x13
timestamp\x11clientId\x15timeToLive\tbody\x0fheaders\x17destination\x13messageId\x04\x05
\x06\x01\x04\x00\x01\x04\x00\n\x0b\x01\x01\n\x05\tDSId\x06\x07nil%DSMessagingVersion\x04
\x01\x01\x06\x01\x06I03ACB769-9733-6A6C-0923-79F667AE8249'
(обратите внимание, что новые строки были введены, чтобы сделать запрос более читаемый)
Заголовки разобранную OK, но когда я добираюсь до первого объекта (\ n ближе к концу первой строки), он помечен как ссылка (LSB = 0), в то время как нет другого объекта, к которому он может обратиться.
Я читаю это неправильно? Это неправильный запрос байта? Любая помощь, декодирующая эти байты, будет приветствоваться.
Спасибо. Независимо от того, сколько раз я его видел, он не утонул ... – Ofir