Le RSA de dofus ne fonctionne pas comme l'officiel.
Le client dofus contient une Clé public, il va utiliser une méthode que @nkama nomme 'VerifyKey', qui va nous donner une autre clé public.
Et c'est avec cette fameuse nouvelle clé public que le client crypte les informations de connexion pour ensuite les envoyer au serveur.
Voilà quelque fichiers intéressant:
AuthentificationManager.as
RSAKey.as
Toute les informations nécéssaire pour le cryptage son ici:
com.@nkamagames.jerakine.utils.crypto
Déjà pour obtenir la clé public de votre client, ankama nous mache le travail:
public function setPublicKey(param1:Vector.<int>) : void
{
var _loc_2:ByteArray = 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:ByteArray = new ByteArray();
var _loc_5:RSAKey = PEM.readRSAPublicKey((new _verifyKey()).readUTFBytes((new _verifyKey()).length));
_loc_5.verify(_loc_2, _loc_4, _loc_2.length);
this._publicKey = "-----BEGIN PUBLIC KEY-----\n" + Base64.encodeByteArray(_loc_4) + "-----END PUBLIC KEY-----";
}
Chaque client possède une clé public différente, cela ne sert a rien de partager la votre.
Le problème auquel nous somme confronté pour le moment vien de cette méthode 'VerifyKey', comment fonctionne cette fonction, comme @nkama l'interpréte ?
Voilà le fruit du peu de recherche que j'ai fait.
Si vous avez des informations passible de nous aider, partagez les.