Dr Emixam

Hack Snapmatic

Recommended Posts

Salut les jeunes,

Je bossais depuis quelques temps sur un système à base de détournement de connexions en utilisant la même astuce que le célèbre hack "DNS" (qui lui est maintenant totalement inefficace) ayant pour but d'enregistrer sur mon serveur plutôt que sur les serveurs de rockstar les photos que je prends dans le jeu.

Ce système nous est indispensable au Liberty Tree puisque nous avons besoin de prendre beaucoup de photos pour illustrer convenablement nos articles.

Je suis un peu bloqué, du coup je poste ici l'idée et les explications histoires de voir si des gens seraient en mesure d'aider.

Histoire de pas perdre trop de monde je vais expliquer l'idée de la chose.

Un peu (beaucoup) de théorie

Comment marche Snapmatic ?

Les photos enregistrées sur snapmatic sont présentes à la fois sur votre console et sur les serveurs de Rockstar. Votre console, elle, ne peut enregistrer que 96 photos et interdit toute prise de nouvelles photos lorsque cette limite est atteinte.

Donc en résumé :

  • Vous allumez la console et lancez le jeu
  • Le jeu fait une requête sur les serveurs cloud de rockstar pour savoir combien de slots sont utilisés
  • Le serveur de rockstar répond
  • La console mémorise ce compte une fois pour toute
  • Vous prenez une photo
  • La console vérifie que la limite n'est pas atteinte (si la limite est atteinte elle ne propose pas l'enregistrement)
  • Vous enregistrez
  • La photo est envoyée au serveur de rockstar avec ses métadonnées (1040 octets contenant date de création, nom, tags, quartier, coordonnées, musique écoutée, mode de jeu, plateforme)
  • Le serveur enregistre la photo et répond à la console que l'enregistrement s'est bien déroulé
  • la console incrémente son compteur de photos de 1

Chaque fois que vous reprendrez une photo, ce sont les étapes de 5 à 10 qui seront répetées, le compte enregistré dans la console n'est mis à jour que lors du lancement du jeu. Si le réseau n'est pas disponible au lancement, à la première ouverture de l'appareil photo.

Lorsque vous allez dans la galerie, les photos sont donc déja présentes dans la console, elles ne sont donc pas chargées via le réseau, SAUF SI par exemple vous avez pris ces photos avec une autre console (il y a surement d'autres cas où c'est possible je n'y ai pas réfléchi). Dans ce cas la console demandera les photos aux serveurs de rockstar.

Donc c'est quoi le truc ?

Comme dans le cas du hack "DNS", il s'agit tout d'abord de duper la console en utilisant les DNS.

Pour ceux qui l'ignorent, les DNS sont le système sur Internet qui permet de "traduire" les noms de domaines (google.fr www.gtanf.com etc) en adresses IP (173.194.40.152 pour google ou 88.190.53.96 pour gtanf). Chaque machine sur internet se renseigne auprès d'un serveur spécifique qui dépend généralement de la configuration de son réseau. Si vous n'avez rien bidouillé chez vous, c'est généralement votre box qui joue ce role pour les ordinateurs branchés chez vous.


Donc pour revenir au hack, l'idée va être de créer un serveur DNS "menteur", c'est à dire un serveur DNS qui va remplir son rôle la plupart du temps mais qui dans certains cas va volontairement fournir une information erronée.

L'idée va être pour ce serveur de donner sa propre adresse IP lorsqu'on va lui demander l'adresse IP des serveurs de Rockstar. Ainsi, la console enverra les requêtes non pas à rockstar mais à votre serveur.

C'est de cette manière que fonctionnait le hack "DNS", le serveur était configuré pour fournir une version falsifiée du fichier tunables.json qui est un fichier qui contient des coefficients que la console va chercher au démarrage du jeu. Comme la console demandait le fichier au serveur pirate plutôt qu'a rockstar, elle avait la version falsifiée des coefficients.

Et les photos là dedans ?

Pour les photos, l'idée est quasiment la même, sauf qu'au lieu de simplement fournir un fichier il va falloir traiter les données que la console envoie.

En pratique

Quand une photo est envoyée à Rockstar, elle l'est via cette URL :
http://prod.ros.rockstargames.com/gta5/11/gameservices/ugc.asmx/CreateContent

Il faut donc détourner les connexions destinées au serveur prod.ros.rockstargames.com vers votre serveur. Relayer toutes les requetes destinées à d'autres pages vers le serveur de Rockstar et lancer un script PHP (ou autre, je ne suis pas dogmatique) qui va faire le boulot lorsque c'est la bonne page.


Dans mon cas, j'ai donc utilisé un serveur sous Ubuntu Server 12.04 avec dnsmasq comme serveur DNS, nginx comme serveur web et php5-fpm

Donc en résumé l'idée de ce que j'aimerais parvenir à faire, ce serait :

  • Vous prenez une photo
  • Vous sauvegardez la photo
  • La console envoie la photo à mon serveur au lieu de celui de Rockstar
  • Mon serveur enregistre la photo et répond que tout s'est bien passé

De cette manière, la photo n'arriverait jamais chez Rockstar. Il est même possible que le serveur réponde par une erreur, de cette manière le compteur ne serait pas incrémenté et vous vous retrouveriez donc avec des photos illimitées enregistrées sur votre propre serveur.

Sauf que…


Voilà le problème, mon script PHP intercepte bien les données et est en mesure de les enregistrer, mais je n'arrive pas à leur donner un sens. Je ne retrouve aucun en-tête ni rien qui pourrait m'aider à savoir à quoi elles correspondent, c'est juste un gros paquet binaire.

Du coup j'ai modifié mon script PHP pour qu'après avoir intercepté les données, il les relaie au serveur de Rockstar. Les photos sont alors bien enregistrées chez Rockstar et ça m'a permis deux choses :

  • La première, c'est de découvrir que le paquet de données que j'intercepte fait systématiquement 1040 octets de plus que le PNG affiché sur le site socialclub. J'en ai donc déduit que ce paquet contenait bien la photo, plus 1041 octets dans lesquels sont contenus les méta données de la photo puisqu'elles ne sont pas envoyées à un autre moment. Peut être des en têtes liées à un chiffrement ou à la structure qui contient les données. C'est là que je suis perdu.
  • La seconde je vais la détailler ensuite.

Photos illimitées sur le site Social Club ?

Avec cette méthode, la réponse du serveur Rockstar n'est pas relayée jusqu'a la console, qui pense alors qu'une erreur est survenue pendant l'enregistrement de la photo. Le compteur de photo interne de la console n'est donc pas incrémenté. De cette manière, il suffit que j'ai un slot vide à l'allumage de ma console pour avoir la possibilité de prendre autant de photos que je le souhaite sans être limité (et tout sera correctement enregistré sur le SC).

Là où ca devient vraiment intéressant, c'est que lorsque vous effacez une photo, la console diminue le compteur de la même manière, du coup même si vous avez 400 photos sur SnapMatic, il vous suffit d'effacer l'une des photos chargées dans votre console pour faire croire à celle ci que vous n'en avez plus que 95 et donc que la limite n'est pas atteinte.

De cette manière, j'en suis à environs 450 photos sur Snapmatic et je ne suis plus toujours en train de chercher quoi supprimer avant de partir faire une séance de shoot. Quelques journalistes du LT profitent actuellement de ce système même si je préférerais ne pas le généraliser.

Pour aller plus loin

Voici un petit exemple de ce qu'on peut obtenir avec ce dispositif :

Les données capturées (fichier binaire)
L'image affichée sur SC pour ces données

 

Si quelqu'un à une idée de ce que peut contenir ce fichier binaire et de comment le lire, je suis preneur. Pour les non-anglophobes, il y a ce forum sur lequel j'ai déja posté (mais je n'ai pas eu beaucoup de réponses utiles)

 

En espérant que la communauté FR comporte les bons éléments qui auront les connaissances et les idées qui nous permettront de trouver la solution à ce problème. Histoire de plus avoir de limite de photos sans pour autant prendre le risque d'énerver Rockstar en floodant leurs serveurs de photos.

 

Merci d'avoir lu ce pavé jusqu'au bout.

 

Pour ceux qui veulent plus d'infos, n'hésitez pas à demander. Mais ne demandez pas un "code DNS" qui permet de faire ca, ce message est essentiellement dirigé vers ceux qui ont un minimum de connaissances et qui permettront de faire avancer l'idée.

Modifié par Dr Emixam

Partager ce message


Lien à poster
Partager sur d’autres sites

Wahou. Enfin des gens qui savent comment tout ça fonctionne :)

 

As-tu essayé de comparer (idée de base débile mais des fois en informatique c'est comme ça qu'on avance) le fichier .png du site de R* avec les trames que tu as reçues sur ton script php ?

 

Je veux dire, si tu fais juste un diff basique, tu dois bien pouvoir voir les différences contenues dans ces fameux 1040 bytes... La question que je me pose, c'est si elles semblent exploitables, ou cryptées ; pour cela, l'idée serait de prendre deux photos, au même endroit, en visant la même chose, avec la même musique (ou sans musique) en fond, que ton php récupère, et que tu puisses analyser les différence entre les deux meta data de 1040 bytes. De fait, les différences ne devraient être que la date et l'heure, et tu pourrais commencer à délimiter les champs (à imaginer qu'ils soient à longueur fixe, vu que les meta data font toujours 1040 bytes).

 

Si tu peux me fournir ces meta data (+ données correspondantes affichées sur le R* SC), je veux bien y jeter un œil :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Justement, je suppose qu'il y a des meta-data mais j'ai vraiment un paquet d'octets duquel je n'arrive rien à tirer. (Je n'ai pas pu séparer ces supposées méta data de l'image)

 

J'ai mis à la fin de mon post les liens vers le paquet de données capturées et l'image qui a été affichée sur le social club avec ce paquet de données. Je n'ai plus l'image en question sur mon compte snapmatic malheureusement donc je ne pourrais pas en dire plus sur les meta de cette image.

 

Pour avoir une idée des meta qui sont contenues là dedans, on peut voir celles qui sont contenues dans ce fichier json je pense. Mais ça n'aide pas beaucoup.

 

 

J'ai bien sûr essayé de retrouver des suites d'octets présentes dans la PNG finale sans succès.

 

Je vois plusieurs raisons pour lesquelles cela pourrait arriver

  1. Ce sont des données chiffrées. Mais je ne vois pas l'intérêt de chiffrer les photos pour les envoyer sur snapmatic. Surtout en le faisant au niveau logiciel quand une simple signature aurait suffit à assurer qu'aucune photo altérée ne soit envoyée sur les serveurs de R*.
  2. Ce sont des données sérialisées dans un format de sérialisation binaire qui m'est inconnu. Le script appelé pour l'enregistrement de la photo a une extension .asmx ce qui correspond aux techno web de microsoft. Mais je ne connais rien dans ces technos là, peut être que quelqu'un de plus calé que moi sur le sujet pourra m'éclairer.

Partager ce message


Lien à poster
Partager sur d’autres sites

Super sympa ça, mais fait gaff....

Même si tu fais rien de méchant çest également du piratage si tu commences à trafiquer, ça serait con que tu te retrouve en mauvais joueur pour des photos.. faudrait vite trouvé un moyen de pas envoyé trop de photos...

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, c'est à ca que je pense essentiellement. J'avais déjà eu des contacts avec les équipes de R* (en particulier celles du Social Club) et j'hésite presque a leur demander leur aide.

Partager ce message


Lien à poster
Partager sur d’autres sites

Sinon j'ai remis les liens sur mon serveur, devraient pas être bloqués ceux là je pense :

Les données capturées

L'image générée


Si seulement c'etait a portée de tous o_O

 

Parce que le "attendez les mecs gardez la pose, je supprime une photo" cest chiant !

 

Le but ultime, c'est de pouvoir le rendre à la portée de tous.

Partager ce message


Lien à poster
Partager sur d’autres sites

beh pas des photo prise avec snapmatic en fête mdr ,

 

 

 

edit: honte a moi, je viens de découvrir que l'ont peut écrire sur les photos, Ok je sort >>>>>

 

 

Pour-tend j'avais chercher a le faire , mais sans réussir. bref..

Modifié par iceteax

Partager ce message


Lien à poster
Partager sur d’autres sites

La première fois que j'ai vu ce genre de photos je m'étais dit la même chose puisque je n'avais pas trouvé comment le faire moi même dans le jeu.

Partager ce message


Lien à poster
Partager sur d’autres sites

La première fois que j'ai vu ce genre de photos je m'étais dit la même chose puisque je n'avais pas trouvé comment le faire moi même dans le jeu.

Merci :D j'avait vraiment honte...

Partager ce message


Lien à poster
Partager sur d’autres sites

Est-tu sûr que les photos sont enregistrées dans la console?

 

Pour moi tout est sur le cloud car:

  • Je pense que si c'était en local le chargement des pics via le menu pause serait plus... Réactif
  • En cas d'erreur d'upload la console réessayerait ultérieurement. (avec des "if..." on en fait des choOoses)
  • Quand le cloud est indispo, on a pas accès aux pics

 

J'ai conscience que ça fait pas avancer ton projet mais ce petit point me chagrinait.

Partager ce message


Lien à poster
Partager sur d’autres sites

He les gars vous m'aver perdu au bout du 3 eme topic . Quest que les glitchs belge , pourquoi tu di enfin quelqun qui c'est comment tous marche , etc ....

 

Sinon , :jesors:

Partager ce message


Lien à poster
Partager sur d’autres sites

a mon avis c'est pas une photos qui es envoyer, ça doit être une "capture" brut, et traiter sur un serveur pour la transformation en photos..


Moi j'utilise la méthode du hack belge. C'est un peu extreme comme méthode mais ça permet de pas avoir trop d'emmerde avec Rockstar.

 

quand ta plus de place tu supprime via le menu

quand ta plus d'argent tu joue

quand tu veut mourir ya le menu suicide

 

et etc...

Partager ce message


Lien à poster
Partager sur d’autres sites

Est-tu sûr que les photos sont enregistrées dans la console?

 

Pour moi tout est sur le cloud car:

  • Je pense que si c'était en local le chargement des pics via le menu pause serait plus... Réactif
  • En cas d'erreur d'upload la console réessayerait ultérieurement. (avec des "if..." on en fait des choOoses)
  • Quand le cloud est indispo, on a pas accès aux pics

 

J'ai conscience que ça fait pas avancer ton projet mais ce petit point me chagrinait.

 

Alors, oui et non.

En fait la liste de photos est enregistrée dans la console, la photo elle même est retéléchargée (mais uniquement le fichier PNG, pas les informations de la photo qui elles sont contenues dans la liste).

L'essentiel est que la console conserve une liste qu'elle ne met à jour auprès des serveurs que quand il lui manque une information.

 

a mon avis c'est pas une photos qui es envoyer, ça doit être une "capture" brut, et traiter sur un serveur pour la transformation en photos..

Moi j'utilise la méthode du hack belge. C'est un peu extreme comme méthode mais ça permet de pas avoir trop d'emmerde avec Rockstar.

 

quand ta plus de place tu supprime via le menu

quand ta plus d'argent tu joue

quand tu veut mourir ya le menu suicide

 

et etc...

 

Je suis pas un adepte de cette manière de penser, si personne cherchait à aller plus loin que ce qui est acquis on vivrait toujours de chasse et de cueillette à poil dans les bois non ?

Partager ce message


Lien à poster
Partager sur d’autres sites

a mon avis c'est pas une photos qui es envoyer, ça doit être une "capture" brut, et traiter sur un serveur pour la transformation en photos..

 

C'est ce que je pensais au départ mais en fait le "paquet" de données envoyé par la console fait toujours pile 1041 octets de plus que le PNG généré. La compression PNG est déjà faite lors de l'envoi ça c'est évident du coup. Après peut être que le serveur rajoute les en tête etc… J'en sais rien.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant