A
Bonjour à tous,
suite à la maj 2.9 de D****, je rencontre de sérieux problèmes dans l'adaptation des fichiers as3 decompilés de façon approximative par le swf decompiler.
Aussi j'aimerais avoir l'avis (entre autres^^) de ceux qui ont codé leur bot en as3 et qui ont réussi l'intégration (la connexion) de la nouvelle maj.
Le 1er problème se situe dans le "AuthentificationManager.as", avec la fonction "setPublicKey".
Mis à part les incohérences liées à la décompilation et l'utilisation (inutile ?) d'une sous-sous-classe de ByteArray (AuthentificationManager__verifyKey), je trouve bizarre que la clé publique ait besoin à ce stade d'être décryptée (RSAKey.verify()).
Bref, le code actuel retourne un _loc_5 == null et fait planter "verify",
ou,
si j'utilise le byteArray _loc_2 (qui contient la clé) à la place du byteArray vide dans "PEM.readRSAPublicKey()", j'obtient une erreur de dépassement de longueur du byteArray en arrivant à "DER.parse(...)".
Si je court-circuite la partie PEM pour créer la "this._publicKey" comme dans la 2.8, en utilisant directement le ByteArray _loc_2 :
... alors la fonction setPublicKey(...) se termine proprement, mais le 2eme problème survient plus loin, dans le "getIdentificationMessage()".
Et là, c'est le "this.cipherRsa(...)" qui me plante ici :
... comme par hasard, à cet endroit dans le "RSA.as" :
... retour à la case départ
En gros, je patauge grave.
- Est-ce-que ma "publicKey" est mauvaise ?
- Est-ce-que mes fichiers de crypto (PEM, RSAKey, DER) sont incompatibles ? (j'utilise ceux du package 'hurlant' de 'as3Crypto' et non les décompilés du d*Invoker)
- Est-ce-que je dois absolument utiliser le "Base64.as" de "by.blooddy.crypto" plutôt que celui de "hurlant.util" ? (pourtant un Base64 est un Base64...)
Alors désolé pour ce déballage brutal, mais vraiment toute piste est la bienvenue, car je m'arrache les cheveux avec toute cette m***e
Sur ce, bonne soirée et merci d'avance
Atlantide-Le-Dépressif
suite à la maj 2.9 de D****, je rencontre de sérieux problèmes dans l'adaptation des fichiers as3 decompilés de façon approximative par le swf decompiler.
Aussi j'aimerais avoir l'avis (entre autres^^) de ceux qui ont codé leur bot en as3 et qui ont réussi l'intégration (la connexion) de la nouvelle maj.
Le 1er problème se situe dans le "AuthentificationManager.as", avec la fonction "setPublicKey".
Code:
public function setPublicKey(param1:Vector.<int>) : void {
var _loc_2:* = new ByteArray();
var _loc_3:int = 0;
while (_loc_3 < param1.length){
_loc_2.writeByte(param1[_loc_3]);
_loc_3++;
}
_loc_2.position = 0;
var _loc_4:* = new ByteArray();
var _loc_5:* = PEM.readRSAPublicKey((new this._verifyKey() as ByteArray).readUTFBytes((new this._verifyKey() as ByteArray).length));
PEM.readRSAPublicKey((new this._verifyKey() as ByteArray).readUTFBytes((new this._verifyKey() as ByteArray).length)).verify(_loc_2, _loc_4, _loc_2.length);
this._publicKey = "-----BEGIN PUBLIC KEY-----\n" + Base64.encodeByteArray(_loc_4) + "-----END PUBLIC KEY-----";
return;
}// end function
Bref, le code actuel retourne un _loc_5 == null et fait planter "verify",
ou,
si j'utilise le byteArray _loc_2 (qui contient la clé) à la place du byteArray vide dans "PEM.readRSAPublicKey()", j'obtient une erreur de dépassement de longueur du byteArray en arrivant à "DER.parse(...)".
Si je court-circuite la partie PEM pour créer la "this._publicKey" comme dans la 2.8, en utilisant directement le ByteArray _loc_2 :
Code:
this._publicKey = "-----BEGIN PUBLIC KEY-----\n" + Base64.encodeByteArray(_loc_2) + "-----END PUBLIC KEY-----";
Et là, c'est le "this.cipherRsa(...)" qui me plante ici :
Code:
_loc_5 = RSA.publicEncrypt(this._publicKey, _loc_4);
Code:
PEM.readRSAPublicKey(param1) // param1 = publicKey !!!
En gros, je patauge grave.
- Est-ce-que ma "publicKey" est mauvaise ?
- Est-ce-que mes fichiers de crypto (PEM, RSAKey, DER) sont incompatibles ? (j'utilise ceux du package 'hurlant' de 'as3Crypto' et non les décompilés du d*Invoker)
- Est-ce-que je dois absolument utiliser le "Base64.as" de "by.blooddy.crypto" plutôt que celui de "hurlant.util" ? (pourtant un Base64 est un Base64...)
Alors désolé pour ce déballage brutal, mais vraiment toute piste est la bienvenue, car je m'arrache les cheveux avec toute cette m***e
Sur ce, bonne soirée et merci d'avance
Atlantide-Le-Dépressif