Java Forgemagie

Inscrit
9 Aout 2017
Messages
10
Reactions
0
#1
Bonjour, j'essaye de créer un bot permettant de récupérer les informations dans l'interface de forgemagie pour ensuite faire un auto click permettant de fm les items facilement.

Je code cela en Java, cependant je début dans les socket et j'ai énormément de mal à démarrer.
Au départ j'étais parti avec de l'OCR cependant j'avais énormément de mal du coup j'aimerai récupérer les information directement avec la réception des packets.

Dès la création du socket afin de lire les paquets NetBean me dit :

Java:
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.<init>(Socket.java:434)
    at java.net.Socket.<init>(Socket.java:211)
    at dod.socket.main(socket.java:26)
Sur cette simple ligne de code :

socket = new Socket("213.248.126.60", 57475);



Je ne sais pas du tout comment débuter du coup, quelqu'un peut m'aiguiller svp ?

J'ai déjà l'ID du paquet que je devrais récupérer (du moins je pense que je l'ai) c'est : 6362
Après avoir récupérer ces info je ferai un bot utilisant directement la souri afin de me faciliter la tache.
 
Inscrit
25 Février 2012
Messages
178
Reactions
3
#2
Tu devras peut-être commencer par un MITM, passe un tour sur le forum ^^
 
Inscrit
9 Aout 2017
Messages
10
Reactions
0
#3
Aurais-tu un post en particulier à me conseiller afin de m'aider à mieux comprendre tout ceci ?
J'ai pas mal traîne sur le forum avant de m'inscrire, en effet l'idée serait de faire un MITM en gros mais j'aimerai tout faire moi même en java ^^ (je voudrais éviter de tout récupérer sur un truc existant :p ) .
 

Kyu

Staff
Membre du personnel
Inscrit
4 Octobre 2009
Messages
327
Reactions
8
#4
Tu utilise quelle version du jdk?
Je te conseille netty pour le réseau.
Tu es sûr de l'ip et du port?
 
Inscrit
9 Aout 2017
Messages
10
Reactions
0
#5
J'utilise la version 1.8.
En effet Netty à l'air plutôt interessant pour ce que je veux faire, merci ça va m'être utile je pense.
Euh pour l'ip et le port je suis pas sur à 100% mais je pense que c'est bien ça, je l'ai récupéré grâce à WireShark. Le port, honnêtement j'ai des doutes mais je sais pas trop ce que ça pourrait être d'autre (je dis ça par rapport aux constatations faites sur WireShark encore une fois).
 
Inscrit
20 Juin 2016
Messages
41
Reactions
2
#6
Si tu veux recuperer les informations pour fm je te conseil de faire un mitm cela sera beaucoup plus simple et dans tout les cas un mitm sert de base a un full socket.

Sinon le port auquel tu essaye de te connecter est mauvais c'est soit 5555 soit 443
 
Inscrit
9 Aout 2017
Messages
10
Reactions
0
#7
J'ai une question, une fois que j'ai récupéré le packet de données, comment je le décortique afin d'obtenir les informations que je veux ? Vous avez un liens avec des explications svp ?

PS : merci kyu pour les bibliothèques.
Et en effet je filtrai pas le bon port !
 
Inscrit
20 Juin 2016
Messages
41
Reactions
2
#8
Inscrit
9 Aout 2017
Messages
10
Reactions
0
#9
Bonjour,
J'ai réussis à identifier les paquets et isoler ceux que je souhaite exploiter cependant j'ai du mal à décrypter ces derniers, avez-vous des solutions à me proposer ?
Je souhaite seulement exploiter les paquets d'identifiant 5516 et 3029 je ne comprends pas vraiment comment fonctionnent les fichiers AS, pouvez vous m'aider en m'indiquant des tutoriels par exemple (ou en m'expliquant directement comment les décrypter).
Voici ce que je récupère :


Merci d'avance.
 
Inscrit
20 Juin 2016
Messages
41
Reactions
2
#10
Tu vas dans les sources, tu cherche le MessageReceiver (com/ankamagames/dofus/network) et tu fais une recherche de l'id.

Par exemple pour 3029 :
upload_2017-8-23_1-31-23.png

Après tu cherche dans les imports en début de fichier le chemin de la class qui gère le paquet et il te reste plus qu'à deserializer

upload_2017-8-23_1-31-38.png
 
Inscrit
9 Aout 2017
Messages
10
Reactions
0
#11
Je dois très certainement mal m'y prendre lorsque j'importe les .as
Voici ce que l'IDE me dit lorsque j'essaye de les import :


Bien évidemment j'ai mis toutes les sources dans le package :

(l'affichage est sale car NetBean me montre tous les fichiers disponible)

J'ai cherché sur le forum et j'ai vu des gens qui, comme toi, import comme tu me montre sur ton image. Je dois donc mal m'y prendre pour importer les .as j'ai cherché sur google afin de trouver des convertisseur .as à .java par exemple mais ça m'embête plus qu'autre choses étant donné que je devrai convertir un nombre incalculable de .as...

Peux-tu m'expliquer comment tu as fais pour import les .as ainsi ?
 
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#12
Ta mal compris son message :p, ça ne sert strictement à rien d'essayer d'import les .as dans ton projet et de toute manière comme tu as pu voir cela ne fonctionne pas (normal)
Le screen que tu vois c'est avec JPEXS qu'on utilise pour voir les sources du client et il ta juste expliqué la démarche à suivre pour pouvoir lire les données d'un packet correctement en te basant sur les sources
 
Inscrit
9 Aout 2017
Messages
10
Reactions
0
#13
Ahah ok je vois, en effet j'avais mal compris !
Merci j'vais étudier ça ;)
 
Inscrit
9 Aout 2017
Messages
10
Reactions
0
#14
Est-ce que vous pouvez m'expliquer ce que fait :
readVarUhShort()

Il se retrouve partout et il m'est donc nécessaire de programmer une fonction permettant de décrypter cette partie du message, je pensais pouvoir faire sans comprendre cette partie et j'avais sauté les 16 bits qui m'embêtaient sauf que cette fonction se retrouve par la suite dans la partie qui m’intéresse... J'ai essayé de considérer ceci comme un read qui converti les 16 bits en unsigned short mais ce n'est pas le cas.

Voici le code que je retrouve :
1101011001110110
ce qui correspond à D676 en hexa ou même 54902 en décimal.

Cependant je devrai trouver :
0011101101010110
correspondant à 3B56 en hexa soit 15190 en décimal

J'ai tenté des trucs bizarre comme en complémentant à 1 ou à 2, ou en convertissant (grace à des convertisseur sur google) en signed/unsigned mais je tombe jamais sur le résultat souhaité...
J'en viens donc à croire que la fonction ajoute certaines choses mais quand je cherche dans les AS il n'y a que la description de la fonction donc ça ne m'aide pas vraiment.
 
Inscrit
20 Juin 2016
Messages
41
Reactions
2
#15
Il faut refaire la fonction, tu trouve les détails dans le CustomDataWrapper
upload_2017-8-23_16-31-27.png
upload_2017-8-23_16-30-25.png
 
Inscrit
9 Aout 2017
Messages
10
Reactions
0
#16
Ah elle est donc la !! Merci c'est elle que je cherchais !
 
Inscrit
9 Aout 2017
Messages
10
Reactions
0
#17
J'ai enfin réussit à faire ce que je souhaitais, merci à vous de m'avoir aider, sans vous je n'y serai pas arrivé !
Je posterai le résultat final lorsque j'aurai terminé le tout si vous le souhaitez.
 
Haut Bas