Résolu NodeJS connexion instable

Inscrit
3 Mai 2020
Messages
31
Reactions
11
#1
Salut,

Je reviens pour poser une question un peu plus générale. Je fais mon bot MITM en nodejs mais je rencontre quelques difficulités. Souvent la connexion est "instable". C'est à dire que je me connecte au serveur d'auth, je reçois les paquets 1 et 3 que je transmets bien au client mais ensuite plus rien, je client ne fait rien.

Ca arrive aussi parfois quand je switch de serveur. Je me connecte au serveur de jeu, je reçois le paquet 1 et 101 puis le serveur de jeu ferme la connexion ... Et des fois ça passe. J'ai du mal à saisir pourquoi. J'utilise ma connexion 4G, pensez vous que ça vienne de ça ? Ou alors y'a t il des choses à faire en nodejs pour rendre sa connexion "plus robuste" ?

Merci pour votre aide :)
 
Inscrit
22 Juillet 2018
Messages
83
Reactions
7
#2
Probablement une solution de framing - ta solution doit partir du principe que 1 send = 1 receive alors que 1 send = n receive, du coup tu n'arrives pas à lire le message en entier (ou qu'il y a plusieurs messages)

La solution se trouve ici : https://blog.stephencleary.com/2009/04/message-framing.html
Une implémentation possible et élégante se trouve en .NET : System.IO.Pipelines (attention, elle couvre un spectre plus large)
 
Inscrit
3 Mai 2020
Messages
31
Reactions
11
#3
Merci pour ta réponse DrBrooklyn :)
J’ai deja un « packet buffer » qui me découpe les packets en messages quand ils sont complets.
Je pense que mon probleme vient de la connexion. Demain je vais essayer de monter un serveur openvpn pour voir si je peux utiliser ma connexion fibre a travers un vpn plutot que ma 4g
 
Inscrit
3 Mai 2020
Messages
31
Reactions
11
#4
Re !

Bon je comprends toujours pas pourquoi mon client reste bloqué comme ça mais par contre c'est toujours aux mêmes endroits, à savoir au moment où il doit communiquer pour la première fois avec le serveur (soit celui d'auth soit celui du jeu).

Ce qui se passe c'est que le serveur m'envoit les premiers paquets, que je transmets bien au client mais celui ci ne fait juste rien ... Après quelques secondes le client envoit un BasicPingMessage et là ça marche, le message passe par mon bot puis est envoyé au serveur. Le serveur répond le BasicPongMessage et le client le reçoit bien.

Quand je regarde combien de bytes sont lus/écrit de chaque côté j'ai bien les même nombres ... Est ce que qqun a déjà un problème similaire ? Que le client ne réponde pas aux messages ?

Je pense pas que ça vienne de mes reader/writer car des fois tout marche bien ... Ci dessous je vous mets les logs de mon bot (les bytes entrants / sortants)

Bytes reçu du serveur / client (donc les paquets "officiels") à partir du message 42 (là ou ça bug le plus souvent)
Code:
Origin      : server
Message ID  : 42
Length type : 1
Length      : 65
Instance ID : null
00a9413200166f6d6272652e616e6b616d612d67616d65732e636f6d0002b32bbb030120773dbf58c720bc0b797261d19507c4469b6ef0429a1879194842739f7999026c
       

Origin      : server
Message ID  : 1
Length type : 1
Length      : 8
Instance ID : null
000508000007ae000007ae0194
       

Origin      : client
Message ID  : 182
Length type : 1
Length      : 1
Instance ID : 12
02d90000000c0101
       

Origin      : client
Message ID  : 182
Length type : 1
Length      : 1
Instance ID : 13
02d90000000d0101
Et la les bytes sortants (ceux que je réécris)
Code:
Origin      : server
Message ID  : 42
Length type : 1
Length      : 50
Instance ID : null
00a9323200093132372e302e302e310001c03e0120773dbf58c720bc0b797261d19507c4469b6ef0429a1879194842739f7999026c
       

Origin      : server
Message ID  : 1
Length type : 1
Length      : 8
Instance ID : null
000508000007ae000007ae
       

Origin      : server
Message ID  : 101
Length type : 0
Length      : 0
Instance ID : null
0194
       

Origin      : client
Message ID  : 182
Length type : 1
Length      : 1
Instance ID : 15
02d90000000f0100
       

Origin      : client
Message ID  : 182
Length type : 1
Length      : 1
Instance ID : 16
02d9000000100100
J'ai un petit décalage dans le global instance Id je sais pas si c'est ça le problème ?? Et aussi les paquets groupés sont dégroupés et envoyés l'un à la suite de l'autre par mon bot

PS: Impossible d'activer le mode debug de mon client dofus, quand je veux cocher la case dans Settings > Support elle est grisé et au survol ça me dit "Votre client est déjà configuré pour la génération de rapport de bug via un fichier debug" mais rien n'est écrit dans le fichier debug.txt que j'ai créé à la racine de mon dossier dofus
 
Inscrit
3 Mai 2020
Messages
31
Reactions
11
#5
Avec RawCap je viens de regarder si j'écrivais bien le paquet 1 et 101 sur la socket et si ils arrivaient bien au client et oui, RawCap me confirme que ces deux paquets sont bien envoyés au client. Mais le client ne réagit pas .... Incompréhension totale ??

C'est une question de timing ? Je dois temporisé un peu ?
 
Inscrit
3 Mai 2020
Messages
31
Reactions
11
#6
J'ai résolu mon problème. Ca venait de mon script frida qui était mal fait.
 
Haut Bas