[c#] communication application web flash - amf

Signaler
Messages postés
4270
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
-
Bonjour à tous !

Bon je ne sais pas si quelqu'un pourrai m'aider mais j'avoue que je patauge un peu ! Alors pour faire simple, mon objectif est de communiquer avec un serveur via son interface web. Cette dernière est une application flash. Pour le moment j'utilise mon analyseur (fiddler) afin de déterminer les appels de pages et les informations (get/post) à envoyer, mais mon soucis est que lorsque je me log via le navigateur, la méthode est bien "post" mais il n'y a aucunes données dans le header : elle se trouvent dans le body, au format amf3.



J'ai fais pas mal de recherche afin de comprendre un peu comment cette chaine est construite et j'ai trouvé cette page :

http://en.wikipedia.org/wiki/Action_Message_Format



Bon j'arrive plus ou moins à suivre le principe, mais lorsque j'analyse mes trames, certaines infos sont présentent et je comprend pas ce qu'elle déterminent ... par exemple :

0a 3f 13 4d 66 6c 65 78 2e 6d 65 73 73 61 67 69 6e 67 2e 6d 65 73 73 61 67 65 73 2e 43 6f 6d 6d 61 6e 64 4d 65 73 73 61 67 65 13 6f 70 65 72 61 74 69 6f 6e 1b 63 6f 72 72 65 6c 61 74 69 6f 6e 49 64 13 74 69 6d 65 73 74 61 6d 70 09 62 6f 64 79 11 63 6c 69 65 6e 74 49 64 0f 68 65 61 64 65 72 73 15 74 69 6d 65 54 6f 4c 69 76 65

Qui est traduit dans fiddler par :

?Mflex.messaging.messages.CommandMessageoperationcorrelationIdtimestamp bodyclientIdheaderstimeToLivemessageIddestination

(bon le mieux étant de regarder dans un éditeur hexa pour que ca soit plus propre, car le ctrl c+v est un peu moche avec certains caractères^^).



Donc si je prend depuis le début et en m'aidant du wiki amf (et de recherche sur le net dont : http://stackoverflow.com/questions/13621083/amf-decoding-example) :

0a => nouvel objet

3F => ??

13 => ce qui suit est une opération

4d 66 6c 65 78 2e 6d 65 73 73 61 67 69 6e 67 2e 6d 65 73 73 61 67 65 73 2e 43 6f 6d 6d 61 6e 64 4d 65 73 73 61 67 65 => "Mflex.messaging.messages.CommandMessage"  => je suppose que c'est un appel de procédure (ou en tout cas la procédure à appeler par le serveur

13 => ce qui suit est une opération

6f 70 65 72 61 74 69 6f 6e => "operation" => même supposition 

1B => ?? (j'ose supposer que ca permet de délimiter le nom de la méthode et le paramètre à lui envoyer [?])

74 69 6d 65 73 74 61 6d 70 => "timestamp" => vu qu'il n'est pas indiqué que c'est un string, je pense qu'il détermine un paramètre

09 => ??

62 6f 64 79 => "body" => paramètre aussi je pense

11 => ?? (d'après mon second lien, il indique clientId, qui se trouve d'ailleurs être ce qui suit)

63 6c 69 65 6e 74 49 64 =>"clientId"

0F => ??   ( ... => header)

68 65 61 64 65 72 73 =>"headers"

15 => ?? ( ... => timetolive)

74 69 6d 65 54 6f 4c 69 76 65 => "timeToLive"



Il y a donc certaines choses que j'arrive à identifier (enfin je pense ...), d'autres non, et ce n'est même un série de bit qui effectue une requete, c'est simplement le point de départ (lors du chargement, avant le loggin).



De ce que j'ai l'impression de comprendre, on pourrai peu-être dire que les paramètres présents (body, headers, timetolive) sont vide (ou égale à 0, etc. en fonction du type) vu qu'il n'y a ici qu'une énumération.



Bon je sais qu'il n'y a pas de question direct dans mon post ... mais si quelqu'un a des informations à communiquer ca serai super car là j'ai un peu l'impression de regarder au mauvais endroit...mon idée pour le moment serai de construire un tableau de bit qui contiendra le header+body à écrire dans le flux, et donc à comprendre le protocole utilisé et (surtout , je pense) à comprendre les appels à faire (et leurs paramètres), ou au moins trouver une méthode qui me permettra de les déterminer.



merci d'avance à ceux qui prendront le temps de me lire ^^

naga