Multi-compte Ilyzaelle : MITM - Node.JS : Authentification OK mais connexion au serveur impossible

Inscrit
30 Octobre 2019
Messages
78
Reactions
68
#1
Hello,

Je suis entrain d'essayer de coder un MITM. Aucun problème pour rediriger l'authentification avec un hook (https://github.com/ProtonOverflow/NoAnkama) seulement pour la connexion au serveur (ilyzaelle) que ce soit avec un deuxième hook ou avec le code ci-dessous qui modifie l'ip du serveur dofus par l'ip de mon serveur (j'imagine que c'est plus compliqué que ça mais même avec le 2nd hook ca ne fonctionne pas), rien ne marche. Pourriez-vous m'aider ? Merci.

JavaScript:
const net = require('net'),
            constants = require('./constants'),
            log = require('./logs');

const authServer = new net.Server(), gameServer = new net.Server();

authServer.listen(5555);

gameServer.listen(443);

authServer.on('connection', function(socket) {

    socket['myclient'] = null;

    connectClient(socket, constants.dofusIp, constants.dofusPort);

    socket.on('data', function(data) {
        try{
            const s = data.toString();
            log("FROM DOFUS CLIENT: " + s);
            socket['myclient'].write(data);
        }catch(e){
            console.log(e);
        }
    });

    socket.on('end', function() {
        log('close connection with dofus client');
    });

    socket.on('error', function(err) {
        log('error connection with dofus client');
    });

});

gameServer.on('connection', function(socket) {

        socket['myclient'] = null;

        connectClient(socket, constants.ipGameServer, constants.dofusPort);

        socket.on('data', function(chunk) {
                try{
                        const s = chunk.toString();
                        log("FROM DOFUS CLIENT: " + s);
                        socket['myclient'].write(s);
                }catch(e){
                        console.log(e);
                }
        });

        socket.on('end', function() {
                // log('Closing connection with the dofus client');
        });

        socket.on('error', function(err) {
                // log('Error connection with the client');
        });

});

function connectClient(socket, ip, port){
    socket['myclient'] = new net.Socket();

    socket['myclient'].connect({
        host: ip,
        port: port
    });

    socket['myclient'].on('connect', function(){
        log('connected with dofus authServer');
    });

    socket['myclient'].on('data', function(data) {
        const s = data.toString();
        log('FROM DOFUS SERVER: ' + s);
        if(s.indexOf(constants.ipGameServer) > -1){
            console.log('contient lip du serveur');
            data = Buffer.from(s.replace(constants.ipGameServer, constants.myIp));
        }
        socket.write(data);
    });

    socket['myclient'].on('close', function() {
        log("close connection with dofus server");
    });

    socket['myclient'].on('error', function(err) {
        log("error connection with dofus server");
    });
}
 
Inscrit
30 Octobre 2019
Messages
78
Reactions
68
#2
Petite mise à jour.

Modifier les paquets est bien un peu plus complexe qu'un simple replace... Quelqu'un sait si un serializer/deserializer existe en JS car j'ai rien trouvé / ou mal cherché :(

Sinon, j'ai aussi tenté de seulement hook la connexion au serveur du jeu sans hooker l'authentification et ça fonctionne. Je pense rester sur cette méthode en essayant de quand même hook l'authentification si j'arrive pas à modifier l'ip dans le paquet.
 
Dernière édition:
Inscrit
26 Janvier 2016
Messages
99
Reactions
34
#3
je ne sais pas si ça existe en tout cas tu vas en avoir besoin , pacque c’est bien beau de te connecter mais si tu ne peux ni lire ni écrire de message bah ... spas trop utile :/
 
Inscrit
2 Janvier 2016
Messages
13
Reactions
1
#4
Je ne suis pas certains d'avoir bien compris ta demande, de ce que j'ai saisie tu a besoin de lire/écrire les données. Donc tu cherche une implémentation du ByteArray d'ActionScript en JS.

Je te conseil d'allez voir ce package, et de lire les sources pour mieux comprendre son fonctionnement.
Dans les grandes lignes, c'est une classe qui contient un Buffer et implémente les méthodes du ByteArray en manipulant le Buffer

[Package Node: ByteArray]
https://www.npmjs.com/package/bytearray-node
 
Inscrit
26 Janvier 2016
Messages
99
Reactions
34
#5
Ah oui j'avais essayé ausssi bêtement avec vm + vpn et ça fonctionnait pas non plus :'(
 
Haut Bas