Question

Il y a un problème intéressant à résoudre. J'ai un MMOG de jeu de rôle fonctionnant via une application cliente (pas un navigateur) qui envoie les actions de mon lecteur à un serveur qui garde tous les joueurs synchronisés en renvoyant des paquets.

Maintenant, le jeu utilise un protocole de couche supérieure sur TCP / IP pour envoyer les données. Cependant, Wireshark ne sait pas quel protocole est utilisé et affiche tout au-delà de l'en-tête TCP sous forme de vidage.

En outre, ce cliché ne contient aucune chaîne de texte en clair. Bien que le jeu dispose d'une fonctionnalité de discussion, la chaîne de discussion en cours d'envoi ne s'affiche nulle part dans ce vidage.

Ma tâche consiste à inverser un peu le protocole pour trouver des informations de base sur les données contenues dans les paquets.

Quelqu'un sait-il pourquoi la chaîne de discussion n'est pas visible en texte brut et s'il est probable qu'un protocole standard de niveau supérieur est utilisé?

De même, existe-t-il des outils permettant d’obtenir les données du cliché?

Était-ce utile?

La solution

Si c'est crypté, vous aurez une chance (en fait, vous avez 100% de chances si vous le gérez correctement): la clé doit résider quelque part sur votre ordinateur. Ouvrez simplement votre débogueur préféré, recherchez quelques données (d’une centaine d’octets ou plus, j’espère) versées par un socket, définissez un point de contrôle sur ces données et examinez les traces dans la pile de données accédant. il. Si vous êtes vraiment chanceux, vous pourrez même le voir décrypté sur place. Sinon, vous remarquerez probablement qu'ils utilisent un algorithme de chiffrement standard (ils ne seraient pas fous du point de vue de la sécurité théorique) en regardant les traces de pile (si vous êtes chanceux) ou en en utilisant l’un des profileurs IV / S-Box (évitez les plus académiques, la plupart ne fonctionnent pas sans problèmes). De nombreux algorithmes de chiffrement utilisent des blocs de "données standard". qui peuvent être détectés (ce sont les IV / S-boîtes), ce sont ce que vous recherchez en l'absence d'autres informations. Quoi que vous trouviez, recherchez-le sur Google et essayez de remplacer leur bibliothèque de chiffrement pour transférer les données chiffrées / déchiffrées. À partir de ces décharges, il devrait être relativement facile de voir ce qui se passe.

La lecture d’une session chiffrée peut s’avérer très amusante, mais elle nécessite des compétences avec votre débogueur et beaucoup de lecture. Cela peut être frustrant, mais vous ne le regretterez pas si vous passez du temps à apprendre à le faire:)

Autres conseils

Meilleure estimation: chiffrement ou compression.

Même telnet prend en charge la compression sur le réseau, même si tout le protocole est entièrement basé sur du texte (enfin, presque).

Vous pouvez essayer d'exécuter le flux de données avec certains utilitaires de compression courants, mais je doute que cela fasse beaucoup pour vous car, selon toute vraisemblance, ils ne transmettent pas les en-têtes de compression, certaines valeurs prédéfinies sont simplement appliquées.

Si le cryptage en fait, alors vous êtes passablement foutu (sans beaucoup, beaucoup plus d’efforts que je ne vais même pas commencer à faire).

Il est très probablement compressé ou crypté.

Si c'est crypté, vous n'aurez aucune chance.

S'il est compressé, vous devez déterminer quelles parties des données sont compressées, à quel démarrage elles démarrent et quel est l'algorithme de compression. Si vous avez de la chance, vous pourrez identifier des en-têtes standard, même s’ils sont probablement supprimés pour économiser de l’espace.

Rien de tout cela n’est simple. L'ingénierie inverse est difficile. Il n'y a pas d'outils standard pour vous aider, vous aurez juste à faire des recherches et à essayer des choses jusqu'à ce que vous vous en rendiez compte. Mon conseil serait de demander aux développeurs une spécification de protocole et de voir s'ils sont disposés à aider à soutenir ce que vous essayez de faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top