[action script 3] nouveau système de connexion

A

Anonymous

Invité
#1
Salut à tous.

Je ne sais pas si ce post va être utile, mais au cas où certains d'entre vous aient décidé de coder leur bot en as3, voici une solution pour mettre à jour la nouvelle connexion RSA.
Pourquoi parler de solution me direz-vous puisque dans un bot en as3, on a directement toutes les sources du jeu en as3 ?
C'est vrai, mais la décompilation avec S*think swf decompiler (qui à mon sens est pourtant le meilleur disponible) laisse tout de même de graves cicatrices dans le code, parfois irréparables. Pour ne pas avoir à se creuser trop, il suffit de télécharger la librairie as3Crypto (le fameux package "Hurlant") en sources et non pas en swc, car on va devoir y apporter une toute petite modif.

Donc après avoir téléchargé as3Crypto, vous vous retrouvez avec un nouveau dossier "hurlant" qu'il vous suffit de mettre à la place de celui de D*fus (com.hurlant). Gardez tout de même une copie de l'original, on ne sait jamais. Le nouveau dossier "hurlant" contient quelques fichiers en plus, mais cela n'est pas très grave.

La subtilité est ici maintenant ; ça fait deux jours que je m'arrache les cheveux en cherchant d'où venait l'erreur.
Ouvrez le fichier com.hurlant.util.der.PEM.as et, dans la fonction :
public static function readRSAPublicKey(str:String):RSAKey
mettez en commentaire la ligne :

Code:
public static function readRSAPublicKey(str:String):RSAKey {
	var der:ByteArray = extractBinary(RSA_PUBLIC_KEY_HEADER, RSA_PUBLIC_KEY_FOOTER, str);
	if (der==null){
		return null;
	}
	var obj:* = DER.parse(der);
	if (obj is Array) {
	var arr:Array = obj as Array;
	// arr[0] = [ <some crap that means "rsaEncryption">, null ]; ( apparently, that's an X-509 Algorithm Identifier.
		if (arr[0][0].toString()!=OID.RSA_ENCRYPTION) {
			return null;
		}
		// arr[1] is a ByteArray begging to be parsed as DER
		//arr[1].position = 1;        <-- CETTE LIGNE A METTRE EN COMMENTAIRE
		obj = DER.parse(arr[1]);
		if (obj is Array) {
			arr = obj as Array;
			// arr[0] = modulus
			// arr[1] = public expt.
			return new RSAKey(arr[0], arr[1]);
		} else {
			return null;
		}
	} else {
		// dunno
		return null;
	}
}
Après cela, tout doit fonctionner.
A la réception du 3 : HelloConnectMessage, vous construisez le 4 : IdentificationMessage :

Code:
var recObjet:HelloConnectMessage = new HelloConnectMessage();
recObjet.deserialize(data);
					
//recuperation de la clé
var key:String = recObjet.key;
		
var lva:LoginValidationAction = LoginValidationAction.create(this._nomDeCompte, this._motDePasse, true);
var am:AuthentificationManager = AuthentificationManager.getInstance();
am.setValidationAction(lva);
am.setConnectionKey(key);
var envObjet:IdentificationMessage = am.getIdentificationMessage();
Atlantide
 
A

Anonymous

Invité
#2
Sava m'aider aussi ^^ moi qui est en vb.net

Pour le RSA c'est pas juste une clef ? publique ?

var der:ByteArray = extractBinary(RSA_PUBLIC_KEY_HEADER, RSA_PUBLIC_KEY_FOOTER, str);
 
A

Anonymous

Invité
#3
Tu mettra a jour overedge ? Overedge, je suis nouveau je cherche a apprendre le socket
 
A

Anonymous

Invité
#4
Overedge a dit:
Sava m'aider aussi ^^ moi qui est en vb.net
oui, et je conseille à tous ceux qui souhaitent se pencher sur RSA pour leur connexion, d'utiliser les sources publiques de l'as3Crypto plutôt que les sources décompilées de D*fus, car elles sont commentées, les variables locales ont des noms explicites et le code est propre et JUSTE surtout. N'oubliez pas cependant la toute petite modif citée plus haut dans le PEM.as

Overedge a dit:
Pour le RSA c'est pas juste une clef ? publique ?

var der:ByteArray = extractBinary(RSA_PUBLIC_KEY_HEADER, RSA_PUBLIC_KEY_FOOTER, str);
Non, loin de là. RSA est un système très complexe pour crypter et décrypter des chaines. Oui il utilise une clé publique, mais aussi une clé privée, que le serveur t'envoie à la réception du 3 : le fameux "key" du HelloConnectMessage. A l'aide de ces deux clés, en gros, tu vas crypter le mot de passe de ton compte et l'envoyer sous cette forme au serveur, qui doit lui aussi être capable de le décrypter.
La clé publique est une chaine de caractères qui doit contenir un marqueur de début (RSA_PUBLIC_KEY_HEADER) et un marqueur de fin (RSA_PUBLIC_KEY_FOOTER). Elle peut également contenir des retours à la ligne, c'est le cas pour la clé publique de D*fus :

Code:
// dans AuthentificationManager :
private static var PUBLIC_KEY:String = "-----BEGIN PUBLIC KEY-----\n" + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApHRiGIhIJrNdUJkKGtWC\n" + "sSqIza+2gPsjGXhSoDTOcokq59Et8d8SzgF68RvAZXezPO8tnUhlyvaDem4QSFLV\n" + "PVAmSRcp47HW4lpp11WHBlDsEEXQTBkM8nDyqSgn8dMANvButRDt/44OKslrfqmV\n" + "7ANmZggZ2wXN0T6XWt3FVC66X8+E7rUMUOREQYCDq3zrX4dNYy3y21lyJZeXTkSd\n" + "AmijqIHrrwLPTA/wpWLCEaIJ9OAWjds8L6TqONXvnf3qOtI/QsrWv24lRjtmRSeR\n" + "eKFIPrk8QQbcd2h4VUi06fJZ2ydCx0pOwU33izN42pmZoCrgdCwghFm1i2feQa0M\n" + "vQIDAQAB\n" + "-----END PUBLIC KEY-----";
Mais pour être utilisée ensuite correctement, cette clé est "purifiée" (les marqueurs et les sauts de lignes sont suprimés) et ensuite intégrée dans un byteArray.

Atlantide
 
A

Anonymous

Invité
#5
Justement. Moi je voudrai apprendre à faire un bot dofus en AS3. Par où commencer s'il vous plaît ?!
Merci d'avance.
 
A

Anonymous

Invité
#6
En purifier sa donne
Code:
private static var PUBLIC_KEY:String =  "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApHRiGIhIJrNdUJkKGtWC" + "sSqIza+2gPsjGXhSoDTOcokq59Et8d8SzgF68RvAZXezPO8tnUhlyvaDem4QSFLV" + "PVAmSRcp47HW4lpp11WHBlDsEEXQTBkM8nDyqSgn8dMANvButRDt/44OKslrfqmV" + "7ANmZggZ2wXN0T6XWt3FVC66X8+E7rUMUOREQYCDq3zrX4dNYy3y21lyJZeXTkSd" + "AmijqIHrrwLPTA/wpWLCEaIJ9OAWjds8L6TqONXvnf3qOtI/QsrWv24lRjtmRSeR" + "eKFIPrk8QQbcd2h4VUi06fJZ2ydCx0pOwU33izN42pmZoCrgdCwghFm1i2feQa0M" + "vQIDAQAB";
non ?
 
A

Anonymous

Invité
#7
Overedge a dit:
En purifié ça donne
Code:
private static var PUBLIC_KEY:String =  "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApHRiGIhIJrNdUJkKGtWC" + "sSqIza+2gPsjGXhSoDTOcokq59Et8d8SzgF68RvAZXezPO8tnUhlyvaDem4QSFLV" + "PVAmSRcp47HW4lpp11WHBlDsEEXQTBkM8nDyqSgn8dMANvButRDt/44OKslrfqmV" + "7ANmZggZ2wXN0T6XWt3FVC66X8+E7rUMUOREQYCDq3zrX4dNYy3y21lyJZeXTkSd" + "AmijqIHrrwLPTA/wpWLCEaIJ9OAWjds8L6TqONXvnf3qOtI/QsrWv24lRjtmRSeR" + "eKFIPrk8QQbcd2h4VUi06fJZ2ydCx0pOwU33izN42pmZoCrgdCwghFm1i2feQa0M" + "vQIDAQAB";
non ?
oui, mais on peut aller jusqu'au bout de la démarche : une seule longue chaine
Code:
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApHRiGIhIJrNdUJkKGtWCsSqIza+2gPsjGXhSoDTOcokq59Et8d8SzgF68RvAZXezPO8tnUhlyvaDem4QSFLVPVAmSRcp47HW4lpp11WHBlDsEEXQTBkM8nDyqSgn8dMANvButRDt/44OKslrfqmV7ANmZggZ2wXN0T6XWt3FVC66X8+E7rUMUOREQYCDq3zrX4dNYy3y21lyJZeXTkSdAmijqIHrrwLPTA/wpWLCEaIJ9OAWjds8L6TqONXvnf3qOtI/QsrWv24lRjtmRSeReKFIPrk8QQbcd2h4VUi06fJZ2ydCx0pOwU33izN42pmZoCrgdCwghFm1i2feQa0MvQIDAQAB
-YoYo- a dit:
Justement. Moi je voudrai apprendre à faire un bot D. en AS3. Par où commencer s'il vous plaît ?!
Merci d'avance.
C'est d'abord l'as3 qu'il faut apprendre. Pour faire un bot ça viendra ensuite car c'est un peu plus compliqué que de connaître les simples bases du langage.
Trouve-toi Flash Builder, et quelques tutos pour créer des applications AIR, et surtout utilise la doc en ligne d'Adobe.

Atlantide
 
A

Anonymous

Invité
#8
Atlantide, tu peux m'envoyé ton MSN ou ton skype en MP ? :)

Merci d'avance
 
A

Anonymous

Invité
#9
The Falcon a dit:
Atlantide, tu peux m'envoyé ton MSN ou ton skype en MP ? :)

Merci d'avance
Ce serait avec plaisir, mais malheureusement je n'ai ni l'un ni l'autre...
et je dois avouer que je ne m'en porte que mieux ;)

Atlantide
 
A

Anonymous

Invité
#10
Re: [action script 3] nouveau système de connexion

tu n'a aucun outils de messagerie instantanée ? :/
 
A

Anonymous

Invité
#11
Overedge est déjà a jour :) je le mais ce soir
 
A

Anonymous

Invité
#12
Overedge a dit:
Overedge est déjà à jour :) je le mets ce soir
Ce post t'as servi ??? Si c'est le cas, tu n'as pas chômé^^

Euh sinon, pour The Falcon, en messagerie instantanée, j'ai tout stoppé il y a 1 ou 2 ans. Les parents d'élèves avaient la fâcheuse habitude de venir tapper la discut un peu trop souvent. C'était relativement sympa, mais pour les préparations de cours, ça devenait difficile de bosser tranquille. Et comme je ne me sentais pas de les refuser quand il demandaient une invit, j'ai préféré tout stopper (msn et facebook). Et je me rends compte qu'il n'est de problème que l'on ne puisse résoudre par message non instantané :)

Atlantide
 

Shornaal

Membre Actif
Inscrit
17 Février 2011
Messages
194
Reactions
0
#13
Il a surtout suivit mon tutoriel. (x
 
A

Anonymous

Invité
#14
Atlantide le pion :p

Un peut de tout ma servie sauf que dans cette mise à jour j’étais plus un suiveur qu'un meneur :)
 
Inscrit
12 Decembre 2014
Messages
7
Reactions
0
#16
Bonjour,

Je up ce topic interessant sur le bot AS3. J'aurais une question sur la connection Socket en AS3. Lorsque je fais simplement un new Socket(adresse,port) de dofus, je n'arrive pas a me connecter.
L'erreur est une sandbox violation error (2048) apparemment une restriction pour se connecter a une source externe. As-tu rencontre cette erreur?
Sinon, par curiosite, ton bot AS3 a-t-il abouti ?
 
Inscrit
27 Aout 2012
Messages
264
Reactions
0
#17
T'es au courant que tu viens d'up un topic de plus de 3 ans ? Meme si ca a un lien avec le sujet du topic, ca vaut pas le coup de deterrer un truc pareil.
Ensuite pour ta connexion Socket, c'est une limitation sandbox apparemment, je ne vois pas tres bien ce que c'est dans ce domaine-là, mais ca vient du fait que la sandbox interdit la communication avec l'exterieur je crois.
 
Inscrit
12 Decembre 2014
Messages
7
Reactions
0
#18
Oui désolé pour le déterrage de topic. Sinon dans les sources de dofus j'ai trouvé une piste, ils utilisent en fait new SecureSocket() qui en AS3 initialise une connexion SSL. Il faut que j'essaie ce soir en espérant que ca marche.
 

Lakh92

Membre Actif
Inscrit
24 Decembre 2009
Messages
118
Reactions
0
#19
Moonlight-Angel a dit:
T'es au courant que tu viens d'up un topic de plus de 3 ans ? Meme si ca a un lien avec le sujet du topic, ca vaut pas le coup de deterrer un truc pareil.
Ensuite pour ta connexion Socket, c'est une limitation sandbox apparemment, je ne vois pas tres bien ce que c'est dans ce domaine-là, mais ca vient du fait que la sandbox interdit la communication avec l'exterieur je crois.
Cela dit, si le problème est toujours d'actualité...

________

L'erreur vient de la vm qui exécute le code, pas du code de Dofus.
Est-ce qu'il y a un fichier crossdomain.xml ? Tu devrais chercher de ce côté là.
 

Sparkdaemon

Staff
Membre du personnel
Inscrit
7 Avril 2009
Messages
556
Reactions
3
#20
3ans..

J'en avais déjà parlé pourtant, mais bon. pour cette fois, ce sera un avertissement Oral.

Le topic étant une discussion, et qui semble toujours d'actu je ne le lock pas. mais je t'invite à te rendre dans la partie Questions / Réponses autres pour ta question.

La bise.
 
Haut Bas