En mode MITM, pour « homme du milieu » (man-in-the-middle), vous jouez à Dofus comme d'habitude et un bot se place entre votre jeu et les serveurs d'Ankama, en transmettant tout dans les deux sens. Le bot voit toute la session et peut lancer des paquets, et Asterobot n'a jamais besoin de vos identifiants Ankama. Votre premier bot détaille une première configuration.
Caution
Un bot en mode MITM reste un bot. Utiliser des bots enfreint les conditions d'utilisation d'Ankama, et Ankama peut sanctionner les comptes concernés. Lisez d'abord Comptes et sécurité.
Quand l'utiliser
- Pour suivre ou enrichir la partie que vous jouez : lire votre chat et votre inventaire, observer les messages, lancer un paquet pendant que vous jouez.
- Pour les comptes protégés par Ankama Shield ou par l'authentification à deux facteurs, que le mode Full socket ne prend pas en charge.
- Quand vous n'avez pas de script de connexion. Votre jeu s'est déjà identifié, donc le bot est en jeu dès que la session lui parvient. Un script démarré sur une session relayée est informé qu'il reprend une session en cours, ce qui fait sauter l'étape d'identification à un script de connexion. Voir Identifier et lancer.
Il n'est pas fait pour des bots qui jouent sans vous : chaque session relayée commence par quelqu'un qui lance Dofus et se connecte.
Ce qu'il vous faut
- Dofus 3 installé avec l'Ankama Launcher, sur l'ordinateur où tourne Asterobot. Pour un Dofus sur un autre ordinateur, voir MITM sur plusieurs machines.
- La même version de Dofus dans le Gestionnaire de jeux, téléchargée et extraite. Voir Télécharger une version de jeu.
- Un bot qui utilise cette version, avec ou sans compte Ankama. Voir Ajouter un bot.
- Asterobot connecté à asterobot.net.
server.tlsdésactivé etserver.basicAuthvide, ce qui correspond à leurs valeurs par défaut.
Warning
Le mode MITM ne fonctionne pas tant que server.tls est activé ou que server.basicAuth est défini, même avec Dofus et Asterobot sur le même ordinateur. Dofus récupère sa configuration de connexion auprès d'Asterobot, à l'adresse indiquée dans la ligne ConfigUrl décrite plus bas. Cette adresse commence toujours par http:// : avec server.tls activé, Asterobot ne répond qu'en HTTPS, donc la requête échoue. Avec server.basicAuth défini, Asterobot demande un identifiant et un mot de passe que Dofus n'envoie jamais. Dans les deux cas, le bot se met en attente normalement, puis reste sur En attente de votre client de jeu pendant que vous jouez. Remettez ces deux réglages à leurs valeurs par défaut dans Serveur > Config et redémarrez Asterobot. Référence des réglages décrit ces deux réglages, et MITM sur plusieurs machines couvre les installations où d'autres appareils doivent joindre Asterobot.
La même version
Le Dofus que vous jouez indique sa version sur la ligne Version= du fichier Dofus_Data/StreamingAssets/version, dans son dossier. Quand un bot se met en attente, Asterobot compare ce numéro avec la version de sa propre copie et refuse s'ils diffèrent. Seul le numéro de version compte : un client Linux ou macOS de la même version convient donc.
Quand vos bots utilisent des versions de jeu différentes, Asterobot peut comparer votre jeu avec n'importe laquelle d'entre elles, pas forcément celle du bot qui attend. Gardez tous vos bots sur la version que vous jouez tant que vous utilisez le mode MITM. Après un patch d'Ankama, suivez Quand Dofus se met à jour.
Commencer l'attente
- Ouvrez la page du bot et cliquez sur Commencer l'attente. Le bouton se trouve aussi dans le menu du bot dans le Gestionnaire de bots, et Attendre mon client de jeu fait la même chose juste après l'ajout d'un bot.
- L'état passe à En attente de votre client de jeu, et la console du bot affiche
Waiting for a game client. Le bot peut rester ainsi aussi longtemps que vous le souhaitez. - Lancez Dofus depuis l'Ankama Launcher et connectez-vous. Si Dofus était déjà ouvert, fermez-le et relancez-le.
Quand votre session parvient au bot, l'état passe à Connecté au serveur de jeu. La console affiche Attached to Ankama account la première fois, puis A client is being sent to us et Relaying a game session. Votre jeu se comporte exactement comme d'habitude.
Rien ne se lance tout seul : pour exécuter un paquet sur la session relayée, appuyez sur Lancer. Voir Lancer un paquet.
Quand le bot ne peut pas se mettre en attente
Asteroboard affiche Impossible de mettre le bot en attente et le bot reste Déconnecté. Le message n'en donne pas la raison, alors passez les causes en revue :
| Cause | Ce qu'il faut vérifier |
|---|---|
| Le Dofus que vous jouez n'est pas la version présente dans le Gestionnaire de jeux | Comparez la ligne Version= de votre fichier version avec le Gestionnaire de jeux, et téléchargez la version que vous jouez. |
Asterobot ne peut pas lire le fichier version |
botmanager.mitmGamePath doit désigner le dossier de Dofus lui-même, celui qui contient Dofus_Data. |
Le fichier version n'a pas de ligne ConfigUrl |
Ce n'est pas un fichier version normal de Dofus. Vérifiez le dossier indiqué dans botmanager.mitmGamePath. |
La ligne ConfigUrl pointe encore vers Asterobot depuis une exécution précédente, et la copie du jeu d'Asterobot n'a pas de fichier version où relire la ligne d'origine |
Remettez la ligne d'origine à la main, comme l'explique Problèmes en mode MITM, ou cliquez sur Télécharger plus de fichiers sur la version de jeu du bot avec le filtre par défaut. |
| Un autre programme utilise le port 5555 ou 5556 | Fermez ce programme, ou modifiez botmanager.mitmSignInPort et botmanager.mitmSessionPort, puis redémarrez Asterobot. |
| Les deux réglages de port ont la même valeur | Donnez-leur deux ports différents, puis redémarrez Asterobot. |
Problèmes en mode MITM détaille chaque cas.
La ligne qu'Asterobot modifie dans votre dossier Dofus
Pour faire passer votre jeu par Asterobot, Asterobot modifie une seule ligne d'un seul fichier : Dofus_Data/StreamingAssets/version, dans votre dossier Dofus. La ligne ConfigUrl de ce fichier indique à Dofus où récupérer sa configuration de connexion. Quand le premier bot se met en attente, Asterobot retient la ligne d'origine et la remplace. Avec les réglages par défaut, elle devient :
ConfigUrl=http://127.0.0.1:8080/botmanager/mitm/dofus3.json
L'adresse qu'elle contient est botmanager.mitmAdvertiseHost, ou botmanager.mitmBindHost quand le premier est vide, et le port est celui de server.listenAddress. Le reste du fichier n'est pas modifié.
Quand Dofus interroge cette adresse, Asterobot lui répond avec la vraie configuration de connexion d'Ankama, modifiée à un seul endroit : le serveur de connexion devient le port 5555 d'Asterobot. Votre jeu se connecte à travers Asterobot, et Asterobot transmet tout à Ankama. Son journal, dans le terminal et dans Serveur > Console, affiche Pointed the played game at Asterobot quand il modifie la ligne.
Asterobot remet la ligne d'origine :
- quand plus aucun bot n'attend, parce que vous avez déconnecté ou supprimé le dernier ;
- quand Asterobot s'arrête normalement, avec Ctrl+C ou Éteindre le serveur ;
- au prochain démarrage d'Asterobot, s'il a été arrêté brutalement et n'a pas pu le faire à ce moment-là. Le journal affiche
Restored a game install left pointing at Asterobot by a previous run. Asterobot lit la ligne d'origine dans sa propre copie du jeu, qu'il trouve grâce à un bot rechargé au démarrage : il faut donc au moins un bot restauré au démarrage etbotmanager.mitmGamePathdéfini. Sinon, remettez la ligne à la main.
Les deux premiers cas affichent Pointed the played game back at Ankama. Si un bot se met en attente et trouve la ligne qui pointe encore vers Asterobot depuis une exécution précédente, Asterobot lit l'adresse d'origine dans sa propre copie du jeu et la corrige d'abord, en affichant Recovering a ConfigUrl left pointing at Asterobot by a previous run.
Tant que la ligne pointe vers Asterobot, un jeu connecté avec un compte qu'aucun bot n'attend passe sans être touché et se joue normalement. En revanche, quand Asterobot ne tourne pas du tout, Dofus ne peut pas se connecter. Relancez Asterobot : il remet la ligne en place au démarrage, à condition qu'un de vos bots soit rechargé avec lui. Sinon, voir Dofus ne peut pas se connecter.
Où Asterobot cherche votre dossier Dofus
Le dossier est défini par le réglage botmanager.mitmGamePath, dans Serveur > Config. Par défaut, c'est le dossier habituel de l'Ankama Launcher :
| Système | Par défaut |
|---|---|
| Windows | %AppData%\Ankama\Dofus-dofus3 |
| Linux | ~/.config/Ankama/Dofus-dofus3, ou le même dossier sous XDG_CONFIG_HOME quand cette variable est définie |
| macOS | Aucun |
La valeur par défaut n'est remplie que si ce dossier existe au démarrage d'Asterobot. Si vous avez installé Dofus après avoir démarré Asterobot, redémarrez Asterobot, ou indiquez le dossier vous-même.
Sur macOS, et chaque fois que votre Dofus se trouve ailleurs, réglez botmanager.mitmGamePath sur le dossier qui contient Dofus_Data/StreamingAssets/version. Le réglage s'applique sans redémarrage, dès qu'aucun bot n'attend : déconnectez chaque bot en attente, modifiez le réglage, puis cliquez à nouveau sur Commencer l'attente.
Warning
Quand botmanager.mitmGamePath est vide, un bot se met quand même en attente, mais rien n'est modifié et votre jeu ne lui parvient jamais. Si le journal n'affiche pas Pointed the played game at Asterobot après la mise en attente d'un bot, vérifiez d'abord ce réglage.
Quel bot reçoit quelle session de jeu
Chaque jeu qui se connecte à travers Asterobot est associé à un bot en attente d'après le compte Ankama avec lequel il s'est connecté :
- Un bot en attente déjà attaché à ce compte reçoit la session.
- Sinon, le premier bot en attente qui n'est attaché à aucun compte, par ordre alphabétique des noms, la prend et s'attache à ce compte.
- Sinon, aucun bot ne la prend. Le jeu va directement chez Ankama et se joue normalement, et le journal d'Asterobot affiche
A game client signed in that no bot is waiting for.
La durée d'un attachement dépend du bot :
- Un bot sans compte Ankama reste attaché pour de bon. L'attachement est enregistré : après un redémarrage, le bot ne prend toujours que les sessions de ce compte. Asteroboard n'affiche le compte attaché qu'à l'arrivée d'une session, dans l'onglet Informations du bot, et ne permet pas de détacher un bot. Pour relayer un autre compte, ajoutez un autre bot.
- Un bot avec un compte Ankama s'attache de la même façon, au premier compte qui se connecte, même si ce n'est pas le compte enregistré pour lui. Cet attachement n'est pas enregistré : il dure jusqu'au redémarrage d'Asterobot, ou jusqu'à ce que vous changiez le compte ou la version de jeu du bot.
Si une nouvelle session arrive pour un compte dont le bot en relaie déjà une, elle remplace la session que le bot transportait. Plusieurs bots montre comment configurer plusieurs clients.
Quand vous quittez Dofus
La session relayée prend fin : la console affiche Game connection lost et l'état revient à En attente de votre client de jeu. Un script en cours s'arrête, avec Le comportement s'est arrêté sur une erreur sur la page du bot. Le bot continue d'attendre votre prochaine session, et la ligne de votre dossier Dofus continue de pointer vers Asterobot.
La prochaine fois que vous jouez, lancez Dofus et connectez-vous : le bot reprend la session. Appuyez sur Lancer si vous voulez que son paquet tourne.
Pour arrêter pour de bon, cliquez sur Déconnecter. Le bot cesse d'attendre et, s'il était le dernier, Asterobot remet la ligne d'origine. Si vous êtes en jeu à ce moment-là, votre jeu est déconnecté, car le bot transportait sa session. La même chose se produit quand vous supprimez le bot ou arrêtez Asterobot.
Un bot qui attend votre client de jeu ou qui le relaie ne peut pas en même temps se connecter tout seul : déconnectez-le d'abord pour utiliser le mode Full socket.
Ports et réglages
Tous ces réglages se trouvent dans Serveur > Config.
| Réglage | Par défaut | Rôle | Redémarrage nécessaire |
|---|---|---|---|
botmanager.mitmSignInPort |
5555 |
Port sur lequel votre Dofus se connecte. | Oui |
botmanager.mitmSessionPort |
5556 |
Port sur lequel votre Dofus ouvre sa session de jeu, après la connexion. Un seul port sert tous les bots : Asterobot distingue les sessions d'après ce qu'elles envoient. | Oui |
botmanager.mitmBindHost |
127.0.0.1 |
Interface réseau sur laquelle les deux ports écoutent. 127.0.0.1 n'accepte que les connexions venant de cet ordinateur. |
Oui |
botmanager.mitmAdvertiseHost |
Vide | Adresse à laquelle votre Dofus doit se connecter. Vide, c'est botmanager.mitmBindHost qui est utilisé, ou 127.0.0.1 quand celui-ci vaut 0.0.0.0. |
Oui |
botmanager.mitmGamePath |
Voir plus haut | Le dossier Dofus dont le fichier version est lu et modifié. Rien d'autre n'y est lu : les données de jeu viennent toujours de la copie d'Asterobot. |
Non |
server.tls et server.basicAuth ne sont pas des réglages du mode MITM, mais tous deux doivent rester à leurs valeurs par défaut pour que le mode MITM fonctionne, comme l'explique l'avertissement sous Ce qu'il vous faut.
Les deux ports ne s'ouvrent que tant qu'au moins un bot attend, et se ferment dès qu'aucun n'attend plus. À leur ouverture, le journal d'Asterobot affiche Ready for game clients avec les adresses utilisées, y compris la valeur ConfigUrl dont a besoin un Dofus installé sur un autre ordinateur.
Relayer un Dofus qui tourne sur un autre ordinateur implique de modifier botmanager.mitmBindHost, et de modifier vous-même la ligne ConfigUrl sur cet ordinateur, puisqu'Asterobot ne peut modifier que les fichiers de sa propre machine. MITM sur plusieurs machines explique toute l'installation, et Sécurité ce qu'implique l'ouverture des ports.
Pour aller plus loin
- Lancer un paquet sur votre session relayée.
- Trafic réseau, pour observer les messages de votre jeu.
- Plusieurs bots, pour relayer plusieurs clients Dofus.