clé public de RSA2.9

  • Auteur de la discussion Anonymous
  • Date de début
A

Anonymous

Invité
#1
clé public de RSA2.9
-----BEGIN PUBLIC KEY-----
MIIBUzANBgkqhkiG9w0BAQEFAAOCAUAAMIIBOwKCATIAqpzRrvO3We7EMi9cWYqdfb3rbdinTay+
hxQ6t3dOiJLY4NITxyeIuy97yZYOojOlXS2SuJ4cCHjCeLCQO1FwOz+nynQWcBWecz2QdbHD2Kz7
mNLd2qtZyEDO76rd7LaDOxRvgs9DsH9sfnCuKLKbd725xTLc7wRfJzOH9v9rTTYVXssXe7JUpTx8
nV8yKnTiq3WpzBeZT4C3ZCR18GBBCh3NmSTbze9i2KipgZnOwBvhskVlweuqZ1KNIKsQgipBFuyw
w68RGNYaAKofMVVio4amrGpCT5MM852jpHsgJJfOUHu6md1CnvdwDPbo/PKQUI0RLb0ezE5gsPma
s39QBw+DiaibUkk1aCkBxTOFqpIbjfLM2/4qA6GPcWUJxP3vmGoeCTMBLNEiPfLqVm86QzUCAwEA
AQ==
-----END PUBLIC KEY-----
c'est la clé qui decrypt le clé de packet id 3

enjoy le bot socket
 

Wav

Membre
Inscrit
15 Septembre 2010
Messages
18
Reactions
0
#2
Il y a un petit problème dans ce que tu dis, une clé publique ne décrypte pas et ne décryptera jamais rien.
 
Inscrit
21 Octobre 2012
Messages
21
Reactions
0
#3
C'est la VerifKey, pour ceux souhaitant l'avoir il suffit juste de décompiler le DofusInvoker.swf avec un autre décompilateur comme Trillix par exemple, on l'obtiendra dans le dossier "Binaries".
 

Lakh92

Membre Actif
Inscrit
24 Decembre 2009
Messages
118
Reactions
0
#4
Wav a dit:
Il y a un petit problème dans ce que tu dis, une clé publique ne décrypte pas et ne décryptera jamais rien.
UN petit problème ? C'est pas peu dire.
 
A

Anonymous

Invité
#5
ui ... merci
 
Inscrit
27 Aout 2012
Messages
264
Reactions
0
#6
Pourtant, le RSA est réversible.
On peut crypter avec la clé publique, décrypter avec la clé privée et inversement. C'est juste pas très recommandé.
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#7
[Petit bug, désolé.]
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#8
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:
[email protected]

Déjà pour obtenir la clé public de votre client, ankama nous mache le travail:
Code:
		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.
 
Inscrit
27 Aout 2012
Messages
264
Reactions
0
#9
lolodu93 a dit:
Chaque client possède une clé public différente, cela ne sert a rien de partager la votre.
Qu'entends-tu par là ? La PEM dans les sources ne serait pas unique ?

Il y a deux solutions selon moi.
  • Soit ils ont crypté avec la clé privée et on doit décrypter avec la clé publique (impossible je crois)
  • Soit ils ont "signe" avec la clé privée et il faut "vérifier" avec la clé publique
La deuxième solution ressemble vachement aux sources. Mais du coup j'ai pas compris comment mettre ça en oeuvre. Pour "vérifier", il faut la PEM (qu'on a dans les sources), la chaîne à vérifier (qu'on a aussi, la liste de HCM) mais aussi la chaîne à laquelle comparer... et ça...
De plus, une fois vérifiée, si c'est bon, ça fait quoi ? On peut pas utiliser cette liste d'int de HCM comme PEM sans y toucher...

Enfin bref. Ça fait bien trois jours que je me casse la tête dessus.
Pareil, toutes les idées et coups de pouce sont bienvenus :3.
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#10
Trouver la clé privé est casi-impossible laisse tout de suite tomber cette option.
La clé public (Je vais l'appeller clé public n°1) est fixe et se regénére à chaque fois. Cette clé public n°1 permet de 'vérifier' ce que nous envoi le serveur. Ce qui nous donne notre Clé public n°2 !! Ensuite on envoi tout crypté au serveur avec cette fameuse clé public n°2 ;)

Le serveur lui décrypte tout avec sa clé privée, qui est quasiment je dis bien IMPOSSIBLE à trouver.

Donc tu as a peu près compris le fonctionnement. Il faut vérifier avec la clé public.
 
Inscrit
27 Aout 2012
Messages
264
Reactions
0
#11
Euh, où tu as lu que je parlais de trouver la clé privée ?

Code:
Cette clé public n°1 permet de 'vérifier' ce que nous envoi le serveur. Ce qui nous donne notre Clé public n°2 !!
C'est justement ça que je cherche à faire ? Comment tu veux faire ça ?!
 
Inscrit
27 Aout 2012
Messages
264
Reactions
0
#12
Bon, j'ai bien avancé, j'ai fait un petite fonction maison qui décrypte avec la clé publique.
Après avoir décrypté la liste envoyée par HCM, je me retrouve avec un string en base64 qui ressemble énormément à une clef publique. Voyez vous-même :

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkK99inhQ0Pv5tn
BE/w1m8QIP24xc6bwJugX6g/kbRifL2UufIZTtkFjIzPKF0yFGYGhIVSSZ1FqE3gkt
kvjLwnDWHmTIcgDqH/+GZGQpl9JId7TCUTF0pqPZkr/+7O+S0ck3WXm9RF5CV
Nf1wc75ZyAYdmuC33nrdVFOWUwrdvlrqwhU6mflJ/AMVj0jMJqGdK30isNcMKSrc
mQFWS8C5JpoVy76xwQzEFWBp4XjfA5J36ECKxj1E7mbZNwWSO1va8ysxnZaWZ
igy7L8oUYgA4/SweVxQo4c4uYlUFjeADVUO8oPm2weOw2A2xBY9tplxk6yocxKRt8
4pGKc9R0M3wIDAQAB
J'ai donc refait un RSA depuis cette clé publique, encrypté les infos de connexion dans les règles de l'art et j'ai envoyé le paquet IdentificationMessage.
Sauf que là, aucune réponse du serveur, pas même une erreur pour mauvais identifiants, rien, nada.

Une idée ?
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#13
Il nous faudrait du code pour t'aider.
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#15
Bah je sais pas, si tu veux on peut voit sa sur skype si sa t'embete de poster tes sources.
 
Inscrit
27 Aout 2012
Messages
264
Reactions
0
#16
J'ai finalement réussi à passer ce RSA. Gros moment jouissif, j'ai même lâché un cri de joie (chuuuut).
Ça provenait en fait de mon Reader qui faisait n'importe quoi (comme quoi, MiscUtils, à éviter).

Je ferais peut-être un petit quelque chose, un petit coup de pouce sur Cadernis ;).
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#17
Bonjour Moonlight-Angel, je rencontre le même problème que toi.
Je n'ai aucune réponse du serveur après l'envoi de mon paquet 3.
Comment avais-tu réglé ton problème ?
 
Inscrit
29 Septembre 2011
Messages
393
Reactions
3
#18
lolodu93, de mon côter quand j'avais le soucis ou il y avais pas de réponse c'été a cause du reader aussi le packet Version la Revision je fessais un WriteInt16 mais tous conte fait il fallait faire un WriteInt32.
 
Inscrit
27 Aout 2012
Messages
264
Reactions
0
#19
lolodu93 : Quand tu dis aucune réponse, c'est que la connexion est fermée ?
Si oui, c'est que ton paquet est malformé. Si la connexion est toujours ouverte, j'en sais rien comme ça.
Il faut vérifier que tout soit bien au niveau paquets.
J'avais aussi un souci de ce genre, c'était mon Writer qui faisait son malin (j'utilisais MiscUtils), j'ai fini par le faire moi-même et tout roulait après.
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#20
Connexion ouverte apparament, mon writer fonctionne pourtant bien ... C'est celui de toons et je l'ai utilisé sur plusieurs bot sans aucun souci.
 
Haut Bas