2009-09-17 6 views
4

Il existe un problème intéressant à résoudre. J'ai un jeu de rôle MMOG qui fonctionne à travers une application client (pas un navigateur) qui envoie les actions de mon lecteur à un serveur qui maintient tous les joueurs en synchronisation en renvoyant les paquets.De bons outils pour comprendre/inverser un protocole réseau de couche supérieure

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 montre tout au-delà de l'en-tête TCP comme une sauvegarde. De plus, cette sauvegarde n'a pas de chaînes de texte en clair. Bien que le jeu dispose d'une fonctionnalité de conversation, la chaîne de conversation envoyée n'est pas visible dans cette image sous forme de texte brut.

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

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

De plus, y a-t-il des outils qui peuvent aider à obtenir les données de la décharge?

+0

Si le schéma de chiffrement est SSL/TLS, vous pouvez utiliser http://crypto.stanford.edu/~ eujin/sslsniffer/index.html pour analyser les paquets sur le fil. Si c'est un cryptage d'origine locale, vous êtes hors de verrou ... – Malkocoglu

Répondre

5

Si c'est crypté avez une chance (en fait, vous avez 100% de chance si vous le manipulez correctement): la clé doit résider quelque part sur votre ordinateur. Ouvrez simplement votre débogueur favori, observez un peu (une centaine d'octets, j'espère) de données provenant d'une socket, définissez un point de contrôle sur ces données et examinez les traces de pile des éléments qui y accèdent. il. Si vous êtes vraiment chanceux, vous pourriez même le voir décrypté en place. Sinon, vous remarquerez probablement qu'ils utilisent un algorithme de cryptage standard (ils ne seraient pas du tout d'un point de vue théorique de la sécurité) soit en regardant les traces de la pile (si vous êtes chanceux), soit en en utilisant l'un des profileurs IV/S-box (évitez les profileurs académiques, la plupart d'entre eux ne fonctionnent pas sans trop de 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-Box), ce sont ce que vous recherchez en l'absence d'autres informations.Quoi que vous trouviez, google, et essayez de remplacer leur bibliothèque de chiffrement pour vider les données qui sont chiffrées/décryptées. De ces décharges, il devrait être relativement facile de voir ce qui se passe.

REing une session cryptée peut être 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 serez pas désolé si vous passez du temps à apprendre comment le faire :)

2

Meilleure estimation: cryptage ou compression.

Même telnet supporte la compression sur le réseau, même si le protocole entier est entièrement basé sur le texte (enfin, presque). Vous pouvez essayer d'exécuter le flux de données via certains utilitaires de compression courants, mais je doute que cela fasse beaucoup pour vous, car selon toute vraisemblance, ils ne transmettent pas d'en-têtes de compression, il y a simplement des valeurs prédéfinies.

Si c'est le cryptage en fait, alors vous êtes assez foutu (sans beaucoup, beaucoup plus d'effort que je ne vais même pas commencer à entrer dans).

2

Il est fort probable qu'il soit compressé ou crypté.

Si elle est cryptée, vous n'aurez aucune chance. S'il est compressé, vous devrez déterminer quelles parties des données sont compressées, où commencent les parties compressées et quel est l'algorithme de compression. Si vous avez de la chance, il y aura des en-têtes standard que vous pourrez identifier, bien qu'ils soient probablement retirés pour gagner de la place.

Rien de tout cela n'est simple. L'ingénierie inverse est difficile. Il n'y a pas d'outils standard pour vous aider, il vous suffit d'enquêter et d'essayer des choses jusqu'à ce que vous le découvriez. Mon conseil serait de demander aux développeurs une spécification de protocole et de voir s'ils sont prêts à aider ce que vous essayez de faire.

+0

+1 pour la communication, mais je doute que de nombreux MMO seraient heureux de donner leurs spécifications de protocole. –

+1

@Matthew: C'est vrai, c'est probablement long, mais beaucoup de jeux ont des communautés de modding prospères. Selon l'équipe, ils peuvent vouloir prendre en charge les extensions tierces. Regardez des jeux comme Quake & Unreal (montrant un peu mon âge), ils donnent pratiquement tout leur code source aux modders. Je ne sais pas si c'est encore pratique courante ou pas, mais ça vaut le coup de le demander. –

Questions connexes