Salut tout le monde !
Après avoir lancé l'idée de mon projet de Player musique 1.29 j'ai eu envie de reprendre mon bot socket.
J'ai voulu repartir sur ces "bonnes" bases et j'ai donc repris tout à 0. Et du coup je bloque sur la dé-sérialisation du paquet HelloConnectMessage ...
Bon j'ai commencé par sniffer le client officiel et je reçoit ce paquet HelloConnectMessage :
Cliquez pour révéler
Cliquez pour masquer
000e0155002069636c726677786b2d76505e33474e2c4c7b2a6f4f347a6f5d7063223d376377b1020497294693df1b2ba966a1e8de8a7deed5e1e7b280b561f67aa15eeb2365068dbcea3ee462992cbda79364ccd80c04241a9533a032ccb719408e2a6d28492ccc26578b1dd13cb5fbc169827f2a30d1cb8bf7a1cd23b41b7147ca75a3e20f82584009a9de024b38396121686346b7a94b59ebc04fce9433db1b46ced297977e9c37c2e25c5731c2657012106f21ddabc38205c9066bb620d5b89b6691fa3d29bf81692143d940314f0378a578180d28b7df99f4119d816110aa66d34dbc5a09501ab5d7c585ac61d9a0c7334048e523b03bec1cfeb505e2a137619a10a277d8922230606c52657ea45d7096c1efa0c58f0b0ef34b97d4f065d8378cf0ec384c1bd946a6ef7ebd07befe596e7b524b4ca7b43262a8d013e44b083da1ff0ac90c8a564d58d3109563fdf175960e4b92f9f9d1
Pour dé-sérialiser ce magnifique paquet on regarde les sources de D2 :
Cliquez pour révéler
Cliquez pour masquer
public function deserializeAs_HelloConnectMessage(input:ICustomDataInput) : void
{
var _val2:* = 0;
this.salt = input.readUTF();
var _keyLen:uint = input.readVarInt();
for(var _i2:uint = 0; _i2 < _keyLen; _i2++)
{
_val2 = input.readByte();
this.key.push(_val2);
}
}
On se rend compte qu'il faut donc, dans un premier temps lire une chaine UTF, puis la taille de la clef et enfin la clef (après la lecture du header biensur).
Donc j'ai essayé de le faire à la main ce qui donne :
Cliquez pour révéler
Cliquez pour masquer
000e => id 3 et length type 2
0155 => taille 341
UTF:
0020 => taille 32
69636c726677786b2d76505e33474e2c4c7b2a6f4f347a6f5d7063223d376377 => iclrfwxk-vP^3GN,L{*oO4zo]pc"=7cw
Jusqu'au salt ca va, j'ai bien ma chaine de 32octets, c'est après que je comprends pas.
On nous demande de lire un int, donc les 4octets suivant, ce qui correspond à b1020497 (hexa) ou 2969699479 (déci) .... Sachant que c'est censé être la taille de la clef qui suit je ne comprends pas :/ .... J'ai du louper un truc, pourtant je vois pas quoi
Alors j'ai cherché dans les sources mais j'ai rien trouvé de concret. J'ai cherché aussi à lire un short mais ca ne change rien, la taille reste trop grande.
Est ce que quelqu'un peut m'éclairer sur la solution ?
Merci :)