Mise à jour D..

asyade

Membre Actif
Inscrit
26 Avril 2013
Messages
368
Reactions
1
#41
Salut je reviens avec un eventuelle posibiliter voila sur un forum (aide***) j'ais vue que une certaine personner a modifier le client d2 pour suprimmer le cryptage rsa pour simplifier le dévlopement d'un émulateur alors moi qui pensait que c'etait imposible ce n'est pas le cas! je vais me pencher la dessu je vous dit a plus tard :p
 
Inscrit
22 Septembre 2013
Messages
44
Reactions
0
#42
Sinon pour en revenir à nos moutons, on est pas des flemmards, on travaille (\o/), je me pose une question depuis quelques dizaines de minutes :

Code:
                  connectionHostsSignatureEntry = XmlConfig.getInstance().getEntry("config.connection.host.signature");
                  output = new ByteArray();
                  try
                  {
                     signedData = Base64.decodeToByteArray(connectionHostsSignatureEntry);
                  }
                  catch(error:Error)
                  {
                     _log.warn("Host signature has not been properly encoded in Base64.");
                     commonMod.openPopup(I18n.getUiText("ui.common.error"),I18n.getUiText("ui.popup.connectionFailed.unauthenticatedHost"),[I18n.getUiText("ui.common.ok")]);
                     KernelEventsManager.getInstance().processCallback(HookList.SelectedServerFailed);
                     return false;
                  }
                  signedData.position = signedData.length;
                  signedData.writeUTFBytes(connectionHostsEntry);
                  signedData.position = 0;
                  signature = new Signature(SignedFileAdapter.defaultSignatureKey);
                  validHosts = signature.verify(signedData,output);
                  if(!validHosts)
                  {
                     _log.warn("Host signature could not be verified, connection refused.");
                     this.commonMod.openPopup(I18n.getUiText("ui.common.error"),I18n.getUiText("ui.popup.connectionFailed.unauthenticatedHost"),[I18n.getUiText("ui.common.ok")]);
                     KernelEventsManager.getInstance().processCallback(HookList.SelectedServerFailed);
                     return false;
                  }

D'accord, ça c'est le super nouveau bout de code qui gère la super nouvelle host.signature. Mais dîtes moi, en fait, on s'en fout de cette signature. Nous, on veut juste modifier les IP de connexion, or (dîtes moi si je me trompe), ce bout de code n'a rien à voir avec les IP de connexions, il return false juste si la signature n'est pas confirme, isn't it ?

@Asyade : dis moi, tu disais que le client D. ne se lançait pas lors que le poids du fichier D..Inv0ker.swf n'était pas le bon, c'est bien ça ? En gros, admettons que mon D..Inv0ker.swf fasse 3 159 867 octets, le client D.. va juste checker si c'est exactement le même poids (à l'octet près) que le bon D..Inv0ker.swf ?
 

asyade

Membre Actif
Inscrit
26 Avril 2013
Messages
368
Reactions
1
#43
Oui c'est ce quon ma dit et j'avais trouver un forum ou il parlait de sa et comment le contourner mais j'ais du mal a le retrouver
 
Inscrit
22 Septembre 2013
Messages
44
Reactions
0
#44
Parce que si ça fonctionne réellement comme ça, pourquoi ne pas remplacer les lignes que l'on veut supprimer par des commentaires ? Ainsi on garderai exactement le même poids non ?
 

asyade

Membre Actif
Inscrit
26 Avril 2013
Messages
368
Reactions
1
#45
Non car les mmentaire sont suprimer lors de la compilation mais effectivement c'est une idée il faudrais rajouter des octées au fichier pour qu'il fasse la méme taille
 

asyade

Membre Actif
Inscrit
26 Avril 2013
Messages
368
Reactions
1
#46
Si tu a un moyen efficace de modifier le client et de le recompiler (sans attendre 5ans que le décompilateur décompile tout sa serais le top) je test sa tout de suit (il me semble que j'ais un injecteur d'octées qui traine dans mes dosier)

J'ais trouver je test!
 

asyade

Membre Actif
Inscrit
26 Avril 2013
Messages
368
Reactions
1
#47
J'avance mais un petit soucis une fois recompiler le fichier et plus grand >< donc faut virer beaucoup de chose sans pour autant endomager le client sa va pas étre du gateau
 
Inscrit
22 Septembre 2013
Messages
44
Reactions
0
#48
Tu les ajoutes comment les octets ? Définir une variable, et lui attribuer une chaîne de caractères, afin d'équilibrer le nombres d'octets, ça ne marche pas ? Car 1 octet = 1 lettre non ?
 

asyade

Membre Actif
Inscrit
26 Avril 2013
Messages
368
Reactions
1
#49
Ba pours ajouter des octés rien de plus simple qun petit programme qui ajoute des octet inutile a la fin du programme pour modifer c'est simple tu click sur le boutton edite de ton decompilateur et tu edite en hex
 

Sorrow

Membre Actif
Inscrit
5 Mai 2012
Messages
376
Reactions
26
#50
Modifier le client statiquement est une mauvaise idée, il y à des checksum de taille et tout ce bazar.
Modifier le client dynamiquement c'est faisable (c'est moi qui avait créer le D2.No.RSA), mais je pense que c'est à utiliser en dernier recours.
Créer un programme qui génère la bonne signature, c'est de cela que nous avons besoins, mais je suis actuellement bloquer sur la ligne this._key.verify(sigData,decryptedHash,sigData.length);

La signature est déchiffré avec du RSA (fonction _decrypt() de RSAKey.as dans /hurlan/crypto/rsa), donc pour cela il faut que la signature soit créer avec la Public Key et déchiffré avec la Private Key. Donc je suppose que dans le client ce trouve la Private Key pour vérifier la signature, et via une Private Key on peut ré-générer la Public Key ET DONC générer nos propre signature :)

La key c'est SignedFileAdapter.defaultSignatureKey dans AuthentificationFrames.as (L.261)
Et devinez ce qui ya dans D ofus.as L.423 ? :D
Code:
SignedFileAdapter.defaultSignatureKey = SignatureKey.fromByte(new Constants.SIGNATURE_KEY_DATA() as ByteArray);
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#51
c'est pas le checksum du fichier config justement cette clef ?
parceque y'a que ca qui change quand on modifie le fichier , ou le checksum de la ligne : <entry key="connection.host">213.248.126.39,213.248.126.40</entry>
 

asyade

Membre Actif
Inscrit
26 Avril 2013
Messages
368
Reactions
1
#53
Ah jais poster un peut trop vitte je navais pas lus tout sa :p
 
Inscrit
22 Septembre 2013
Messages
44
Reactions
0
#56
Hummm une librairie en .bin, c'est pour un code en C ou ? ... Comment je fais pour m'en servir en vb.NET ?
 

Sorrow

Membre Actif
Inscrit
5 Mai 2012
Messages
376
Reactions
26
#57
ArkhAnik a dit:
Hummm une librairie en .bin, c'est pour un code en C ou ? ... Comment je fais pour m'en servir en vb.NET ?
C'est la key sous un format binaire.
C'est à dire non encoder en base64 et sans

-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
 
Inscrit
22 Septembre 2013
Messages
44
Reactions
0
#58
D'accord. Mais alors excuse moi, mais je ne comprends pas du tout comment est ce que je dois l'utiliser ? Que dois-je en faire ? A quoi me sert-elle ? :s
 
Inscrit
22 Septembre 2013
Messages
44
Reactions
0
#60
AH ! Après de longues recherches ! J'ai compris ! Enfin je crois !!

Est-ce que par hasard, je dois décompiler mon D..Inv0ker.swf, remplacé le SIGNATURE_KEY_DATA.bin, et recompiler avec ?

Et donc du coup, (j'ai compris tout le principe, avec le verify et tout), je peux indiquer 127.0.0.1 comme IP et 5555 comme port ?!

Vite ! J'avais enfin réussi à me connecter au serveur hier soir, et la, hop tout plante à cause de cette màj pourrie :(.

EDIT : Oua c'est magique ! Je crois que c'est bien ça ! Il me faut du coup, juste savoir quelle adresse IP/PORT je peux mettre !

EDIT2 : De plus, je décompile avec JPEXS decompiler (j'exporte), je remplace le SIGNATURE_KEY_DATA.bin (ou 406.bin) et je recompile avec un compiler AS3 ? Ou la manip' se fait autrement ?
 
Haut Bas