J'essaye d'écrire un encodeur/décodeur python3 pour AMF.Sérialisation AMF pour python3
La raison pour laquelle je le fais est parce que je n'ai pas trouvé une bibliothèque appropriée qui fonctionne sur python3 (je cherche une bibliothèque non-intrusive - celle qui me fournira les méthodes et laissez-moi gérer le passerelle moi-même)
Bibliothèques Avaialble J'ai testé pour python sont amfast, pyamf et amfy. Alors que les 2 premiers sont pour python2 (plusieurs forks de pyamf suggèrent qu'ils supportent python3 mais je n'arrive pas à le faire fonctionner), amfy a été conçu pour python3 mais manque de certaines fonctionnalités dont j'ai besoin (en particulier la sérialisation d'objets). En lisant les spécifications de AMF0 et AMF3, j'ai pu ajouter un encodeur/décodeur de paquet mais je suis tombé sur la sérialisation des objets et la documentation disponible n'était pas suffisante (j'aimerais voir quelques exemples). Les bibliothèques existantes n'étaient d'aucune aide non plus.
L'utilisation RemoteObject (flex), je réussi à envoyer la requête suivante à mon analyseur:
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'
(notez que les nouvelles lignes ont été introduites pour rendre la demande plus lisible)
Les en-têtes sont analysés OK mais quand j'arrive au premier objet (\ n vers la fin de la première ligne), il est marqué comme une référence (LSB = 0) alors qu'il n'y a aucun autre objet auquel il puisse faire référence.
Ai-je mal lu? Est-ce une requête d'octets malformés? Toute aide décodant ces octets sera la bienvenue.
Merci. Peu importe combien de fois je l'ai vu, il n'a pas coulé ... – Ofir