PROJET AUTOBLOG


Korben

source: Korben

⇐ retour index

Comment récupérer les infos cachées dans un PDF censuré ?

vendredi 26 décembre 2025 à 18:07

Bon, vous avez tous vu passer cette histoire des documents Epstein mal censurés, j'imagine ?

En effet, des journalistes ont réussi à récupérer une bonne partie des informations censées être masquées dans les fichiers judiciaires... ça peut impressionner mais n'allez pas croire que ce soit quelque chose de compliqué et ces techniques sont à la portée de n'importe qui.

C'est pourquoi aujourd'hui, j'vais pas vous parler du scandale (y'a assez de monde dessus), mais des techniques pour récupérer ce qui se cache derrière ces fameux rectangles noirs. Du pur OSINT appliqué au forensique documentaire.

Commençons par le plus basique et pourtant le plus courant : le bon vieux copier-coller. Ouais, je sais, ça paraît con dit comme ça, mais vous seriez surpris du nombre de documents "confidentiels" qui sont censurés en posant simplement un rectangle noir par-dessus le texte dans Word ou Adobe Acrobat. Le texte original pourtant est encore là, bien au chaud sous cette couche graphique. Il suffit donc de sélectionner la zone, un petit Ctrl+C, et hop, on colle dans un éditeur de texte. Boom, le texte "caché" apparaît en clair.

C'est d'ailleurs exactement ce qui s'est passé avec des documents du Pentagone en 2005, et plus récemment avec des fichiers judiciaires américains. Bizarrement, les gens confondent "masquer visuellement" et "supprimer", alors que c'est pas du tout la même chose ^^.

Pour vérifier si un PDF est vulnérable à cette technique, vous pouvez utiliser pdftotext (inclus dans poppler-utils sur Linux) :

pdftotext document_censure.pdf - | less

Si le texte sous les rectangles noirs apparaît, bingo. Vous pouvez aussi utiliser PyMuPDF en Python pour extraire le texte brut :

import fitz
doc = fitz.open("document.pdf")
for page in doc:
 print(page.get_text())

Maintenant, passons aux documents scannés. Là c'est plus subtil parce que techniquement, y'a pas de "texte" à copier, juste une image. Sauf que les scanners et les logiciels de numérisation ajoutent souvent une couche OCR invisible par-dessus l'image. Cette couche contient le texte reconnu automatiquement, et elle peut inclure ce qui a été censuré AVANT le scan si le masquage était mal fait.

Mais même sans couche OCR, y'a des trucs à tenter. Si la censure a été faite avec un marqueur physique (genre un Sharpie sur le document papier avant scan), il est parfois possible de jouer avec l'exposition et le contraste de l'image pour faire ressortir le texte en dessous. Les marqueurs noirs ne sont pas toujours 100% opaques, surtout sur du papier fin.

Avec GIMP ou Photoshop, vous pouvez don extraire les pages du PDF en images (pdftoppm ou convert) puis jouer avec les niveaux, courbes et exposition, inverser les couleurs ou encore appliquer des filtres de détection de contours

Ça marche pas à tous les coups, mais quand ça marche, c'est magique ^^.

Maintenant, la technique qui a fait des ravages c'est l'exploitation des sauvegardes incrémentales. Car vous ne le savez peut-être pas mais les fichiers PDF disposent d'un système de sauvegarde qui ajoute les modifications à la fin du fichier plutôt que de réécrire le document entier. Chaque "version" est ainsi séparée par un marqueur %%EOF (End Of File).

Concrètement, si quelqu'un ouvre un PDF, ajoute des rectangles noirs de masquage, puis sauvegarde, l'ancienne version du document est souvent toujours là, juste avant le dernier %%EOF. C'est comme un système de versioning intégré, sauf que personne n'y pense jamais.

Pour exploiter ça, il faut extraire la version originale (avant la dernière modification) comme ceci :

head -c [offset_avant_dernier_EOF] document.pdf > version_originale.pdf

L'outil QPDF permet aussi d'analyser la structure interne :

qpdf --show-xref document.pdf
qpdf --json document.pdf | jq '.objects'

Et les métadonnées ?? Je vous en ai pas parlé encore mais un PDF c'est pas juste du contenu visible. C'est aussi une mine d'or d'informations cachées. Le nom de l'auteur, la date de création, le logiciel utilisé, l'historique des modifications, parfois même des commentaires ou des annotations invisibles.

Et pour cela, ExifTool est votre meilleur ami :

exiftool -a -u -g1 document.pdf

Vous pouvez aussi utiliser pdfinfo :

pdfinfo -meta document.pdf

Dans les documents judiciaires qui ont récemment fuité, les métadonnées ont révélé les noms des personnes qui avaient édité les fichiers, les dates exactes des modifications, et parfois des chemins de fichiers sur les serveurs internes... Oups.

Maintenant, la technique la plus vicieuse ça reste quand même l'analyse des positions de glyphes. En effet, des chercheurs ont publié un papier intitulé " Story Beyond the Eye " qui démontre qu'on peut parfois deviner le contenu masqué en analysant la largeur des zones masquées.

Le principe c'est que dans un PDF, chaque caractère a une largeur précise définie par sa police de caractère. Si vous savez quelle police est utilisée (et c'est souvent le cas, puisque les tribunaux américains adorent Times New Roman par exemple), vous pouvez calculer combien de caractères tiennent dans la zone noire. Et si vous avez du contexte (comme le début ou la fin d'une phrase), vous pouvez parfois deviner le mot exact.

Avec des polices à chasse fixe comme Courier, c'est encore plus facile puisque chaque caractère fait exactement la même largeur. Comptez alors les pixels, divisez par la largeur d'un caractère, vous avez le nombre de lettres.

Un outil qui facilite tout ça c'est X-Ray , développé par le Free Law Project qui est capable d'analyser les PDF et de détectre automatiquement les censures défectueuses.

Autre outil sympa que je vous conseille, c'est unredactor , qui tente de reconstruire automatiquement le texte sous les blocs de masquage en utilisant diverses heuristiques.

Ça c'est pour les PDF, mais pour les images PNG ou les captures d'écran censurées, y'a aussi des trucs à faire. Leurs métadonnées EXIF peuvent contenir des informations sur l'appareil, la géolocalisation, la date, mais surtout, si l'image a été éditée avec certains logiciels, des données résiduelles peuvent trainer.

La technique du "thumbnail" est par exemple particulièrement fourbe puisque certains logiciels génèrent une miniature de l'image AVANT les modifications et l'embarquent dans les métadonnées. Donc vous ouvrez la miniature, et vous voyez l'image originale non censurée. C'est arrivé plusieurs fois dans des affaires judiciaires. Voici comment l'extraire avec Exiftool :

exiftool -b -ThumbnailImage image_redactee.jpg > thumbnail.jpg

Pour les professionnels du forensique, y'a aussi la technique de l'analyse des données compressées. Comme les algorithmes JPEG et PNG ne sont pas parfaits, les zones éditées ont parfois des artefacts de compression différents du reste de l'image. Cela peut révéler où des modifications ont été faites.

Bon et maintenant que vous savez comment récupérer des infos censurées, parlons maintenant de comment BIEN censurer un document, histoire de pas vous planter.

En fait, la seule méthode vraiment sûre c'est de supprimer définitivement le contenu. Je répète : Ne masquez pas le contenu, supprimez le !

Adobe Acrobat Pro a par exemple une fonction "Redact" qui fait ça correctement car cette fonction supprime réellement le texte et les métadonnées associées.

Alternativement, vous pouvez aussi exporter le document en PDF (ça aplatit toutes les couches), utiliser des outils comme pdf-redact-tools qui suppriment vraiment le contenu, et le convertir en image puis le reconvertir en PDF (bourrin mais efficace)

Et SURTOUT, vérifiez toujours le résultat avec les techniques mentionnées plus haut avant de diffuser quoi que ce soit.

Voilà, vous avez maintenant un petit arsenal de techniques OSINT pour analyser des documents "confidentiels". Bien sûr, comme d'hab, utilisez ces connaissances de manière responsable et éthique car une fois encore, le but c'est de comprendre les failles pour mieux se protéger, et pas de violer la vie privée des gens.

Voilà... Et la prochaine fois que vous verrez un document officiel avec des gros rectangles noirs, vous saurez que c'est peut-être pas aussi opaque que ça en a l'air. Niark niark...

Claude Code Safety Net - Le plugin qui empêche l'IA de tout niquer

vendredi 26 décembre 2025 à 10:30

Vous utilisez Claude Code comme moi pour bosser plus vite sur vos projets de dev ? Hé bien j'espère que vous n'avez jamais eu la mauvaise surprise de voir l'agent lancer un petit rm -rf ~/ qui détruit tout votre répertoire home en 2 secondes. Parce que oui, ça arrive malheureusement, et plusieurs devs en ont fait les frais cette année...

Le problème c'est que les agents IA, aussi intelligents soient-ils, peuvent manquer de garde-fous sur ce qui est vraiment dangereux. Vous leur dites "nettoie le projet" et hop, ils interprètent ça un peu trop littéralement et une fois que c'est fait, y'a plus qu'à pleurer devant son terminal vide.

C'est pour ça qu'un développeur du nom de kenryu42 a créé Claude Code Safety Net qui est un plugin pour Claude Code qui agit comme un garde-fou mécanique. Son idée c'est de bloquer les commandes destructives AVANT qu'elles ne s'exécutent, et pas juste avec des règles bêtes genre "si la commande commence par rm -rf".

Le plugin est bien plus malin que ça puisqu'il fait une analyse sémantique des commandes. Il comprend la différence entre git checkout -b nouvelle-branche (qui est safe, ça crée juste une branche) et git checkout -- . qui lui va dégager tous vos changements non committés sur les fichiers suivis. Les deux commencent pareil, mais l'une vous sauve et l'autre vous ruine psychologiquement, vous forçant à vous réfugier dans la cocaïne et la prostitution.

Et c'est pareil pour les force push. Le plugin bloque git push --force qui peut écraser l'historique distant et rendre la récupération très difficile, mais il laisse passer git push --force-with-lease qui est la version plus sûre, car elle vérifie que la ref distante correspond à ce qu'on attend (même si ce n'est pas une garantie absolue).

Et le truc vraiment bien foutu, c'est qu'il détecte aussi les commandes planquées dans des wrappers shell. Vous savez, le genre de piège où quelqu'un écrit sh -c "rm -rf /" pour bypass les protections basiques. Le plugin parse récursivement et repère la commande dangereuse à l'intérieur. Il fait même la chasse aux one-liners Python, Ruby ou Node qui pourraient faire des dégâts.

Côté rm -rf, le comportement par défaut est plutôt permissif mais intelligent... les suppressions dans /tmp ou dans le dossier de travail courant sont autorisées parce que c'est souvent légitime, par contre, tenter de nuke votre home ou des dossiers système, c'est non négociable.

Et pour les paranos (comme moi), y'a un mode strict qu'on active avec SAFETY_NET_STRICT=1. Dans ce mode, toute commande non parseable est bloquée par défaut, et les rm -rf même dans le projet courant demandent validation. Mieux vaut prévenir que pleurer.

Si ça vous chauffe, l'installation se fait via le système de plugins de Claude Code avec deux commandes :

/plugin marketplace add kenryu42/cc-marketplace
/plugin install safety-net@cc-marketplace

Et hop, vous redémarrez Claude Code et c'est opérationnel.

Ensuite, quand le plugin bloque une commande, il affiche un message explicite genre "BLOCKED by safety_net.py - Reason: git checkout -- discards uncommitted changes permanently" donc vous savez exactement pourquoi ça a été refusé et vous pouvez décider en connaissance de cause si vous voulez vraiment le faire.

Bref, j'ai testé ce plugin sur mes projets et c'est vraiment cool alors si vous utilisez Claude Code en mode YOLO, ça vous évitera de rejoindre le club des devs qui ont tout perdu à cause d'un agent trop zélé...

Quand X récompense ceux qui propagent de fausses infos après un attentat

vendredi 26 décembre 2025 à 09:20

Pour ceux qui auraient raté l'info, deux terroristes ont ouvert le feu le 14 décembre dernier, lors d'une célébration de Hanoukka à Bondi Beach (Sydney en Australie), tuant 15 personnes. Et dans les minutes qui ont suivi, X s'est transformé, comme à son habitude, en machine à désinformation...

Un homme d'affaires pakistanais portant le même nom que l'un des tireurs (Naveed Akram) s'est alors retrouvé accusé d'être l'auteur de l'attentat. Sa photo a été partagée des milliers de fois, il a reçu des menaces de mort et sa famille a même été harcelée. Sauf que ce gars n'avait strictement rien à voir avec l'attaque, mais partageait juste un nom de famille très courant avec le vrai coupable.

Mais ça, les abrutis de cette planète n'y ont même pas pensé. C'est dire s'ils sont cons...

Après vous allez me dire : « Ouais mais y'a les Community Notes pour corriger ça » sauf que ça marche pas de fou ces notes de la communauté. A titre d'exemple, selon le Center for Countering Digital Hate , 74% de la désinformation liée aux élections américaines de 2024 n'a JAMAIS reçu de note de la communauté. Et quand une note finit par arriver, il faut compter entre 7 et 75 heures selon les cas pour qu'elle soit diffusée.

Donc autant dire une éternité à l'échelle d'Internet...

Et comme si la situation n'était pas encore assez critique, d'après une étude du MIT, les fausses infos se propagent 6 fois plus vite que les vraies sur ces plateformes. Bref, on est foutu face à la connerie humaine.

Surtout que d'après Timothy Graham , chercheur en médias numériques à l'université QUT en Australie, il y a maintenant une économie autour de la désinformation, notamment sur X car leur système de monétisation paie les créateurs en fonction de l'engagement généré par les utilisateurs vérifiés. Ainsi, Plus vos posts font réagir, plus vous gagnez d'argent.

Et devinez quel type de contenu génère le plus d'engagement ?

Hé bien les trucs faux, les trucs scandaleux, les trucs qui font monter les tensions.

Y'a même eu une vidéo de feux d'artifice présentée comme des « célébrations arabes » après l'attentat qui n'était que pure invention. C'était en fait les feux d'artifice de Noël du Rotary Club local, programmés des mois à l'avance. Le truc a fait des millions de vues avant d'être démenti. Certains parmi vous ont peut-être mordu à l'hameçon de cette fake news d'ailleurs.

Pire encore, Grok, l'IA d'Elon Musk intégrée à X, a carrément inventé le nom du héros qui a désarmé l'un des tireurs. Quand les utilisateurs lui demandaient qui avait sauvé des vies, l'IA sortait « Edward Crabtree » de nulle part, un nom totalement fictif tiré d'un site web frauduleux créé le jour même de l'attentat.

Et pendant ce temps, le vrai héros de cette tragédie, Ahmed al-Ahmed, un Australien d'origine syrienne qui a risqué sa vie pour désarmer l'un des tireurs et protéger les victimes, était à peine mentionné. Plus de 2,6 millions de dollars ont été collectés pour lui depuis, mais il a fallu creuser fort pour trouver la vraie histoire pendant que les fake news monopolisaient l'attention.

Le problème c'est que le modèle économique de X encourage les comptes à poster vite et fort, sans vérification. Avoir 5 millions d'impressions et seulement 2000 abonnés, ça permet de monétiser. Et plus on génère de réactions, plus on palpe... Du coup, poster « BREAKING : le tireur identifié » avec une photo d'un random est rentable, même si c'est faux.

Surtout si c'est faux, en fait... Vous savez ce syndrome de "Les merdias mainstream nous cachent des choses, mais heureusement j'ai vu une vérité alternative sur X.com et c'est encore la faute aux zarabes, à l'Europe et aux élites judéo-maçonique-réptiliennes qui veulent manger nos enfants" qui frappe ce genre de personnes dont le cerveau est trop atrophié pour qu'ils puissent développer une réflexion qui leur est propre.

Après, je ne pense pas être naïf, car la désinformation a toujours existé, mais là on parle quand même d'un système de merde qui récompense financièrement ceux qui la propagent. C'est plus un bug, c'est une feature et quand un innocent se fait menacer de mort parce qu'un comploplo en slip dans sa cave a voulu faire du clic, ça me fout les nerfs.

Bref, tant que l'engagement restera la métrique reine et que les plateformes paieront au buzz plutôt qu'à la véracité des faits, on continuera à subir ce genre de dérives horribles...

ddrescue + Raspberry Pi Imager - Le combo pour cloner vos cartes SD sans vous arracher les cheveux

vendredi 26 décembre 2025 à 09:00

Vous avez un parc de Raspberry Pi à déployer et vous en avez marre de refaire la config à chaque fois ? Ou pire, votre carte SD commence à faire des siennes et vous voulez la sauver avant qu'elle rende l'âme ? Hé bien j'ai le combo parfait pour vous les amis !

Je vais vous parler en réalité de deux outils complémentaires que vous connaissez déjà je pense : ddrescue pour le clonage/sauvetage de cartes SD, et Raspberry Pi Imager pour créer des images préconfigurées. Ensemble, ils forment une chaîne de production quasi "industrielle" pour vos projets Pi. Ça va vous faire gagner un temps précieux mais aussi vous sécuriser car on sait à quel point les cartes SD c'est capricieux parfois sur les Rpi (surtout quand y'a des coupures de jus ^^).

Commençons donc par ddrescue qui est l'outil libre parfait pour cloner des disques, mais avec un truc en plus que dd n'a pas : la gestion des erreurs et la reprise. Son secret, c'est le mapfile, un fichier journal qui garde trace de tout ce qui a été copié, du coup, si votre clone plante en plein milieu (câble qui se débranche, coupure de courant, carte SD qui fait la gueule), vous relancez la même commande et ça reprend exactement où ça s'était arrêté. Sans ce fichier, par contre, c'est retour à la case départ... snif.

⚠️ Attention : la destination va être écrasée. Donc vérifiez 3 fois vos /dev/... avant d'appuyer sur Entrée. Et oui, l'option --force porte bien son nom puisqu'elle autorise l'écriture sur un disque brut, donc si vous vous trompez de cible, c'est le drame.

La commande de base, c'est ça :

sudo ddrescue --force /dev/sdX /dev/sdY rescue.map

Vous remplacez /dev/sdX par votre carte source et /dev/sdY par la destination et le fichier rescue.map, c'est votre filet de sécurité, donc gardez-le précieusement à côté de vos images.

Après si vous préférez cloner vers un fichier image plutôt que directement vers une autre carte, c'est quasi pareil :

sudo ddrescue /dev/sdX raspios.img rescue.map

Et pour les cartes un peu fatiguées avec des secteurs défectueux, y'a une astuce en deux passes. D'abord une passe rapide qui saute les erreurs (le but c'est de récupérer le max sans s'acharner tout de suite) :

sudo ddrescue -n /dev/sdX raspios.img rescue.map

Puis une deuxième passe qui insiste sur les zones problématiques :

sudo ddrescue -r3 /dev/sdX raspios.img rescue.map

Le -r3 dit à ddrescue de réessayer 3 fois sur chaque secteur récalcitrant par contre, évitez de mettre --no-split par défaut. Ça peut sembler logique ("ne coupe pas"), mais sur un support vraiment abîmé, laisser ddrescue découper et isoler les zones foireuses est souvent plus efficace.

Maintenant faut vérifier que tout s'est bien passé… alors oui, on peut faire des contrôles, mais il faut être clair, si vous comparez juste un bout, vous validez juste un bout. Par exemple cette commande compare seulement 1 Go, et pas toute la carte :

sudo cmp -n 1G /dev/sdX /dev/sdY

Donc si vous voulez comparer TOUT (et que ça ne vous dérange pas d'attendre ^^), vous pouvez comparer l'image et la carte clonée en faisant un hash sur la totalité. Par exemple, pour vérifier que l'image écrite sur la carte correspond bien à l'image d'origine :

sha256sum raspios.img
sudo ddrescue /dev/sdY - | sha256sum

Si les deux hashes sont identiques, là, on parle (beaucoup plus) sérieusement. Et si vous ne voulez pas streamer le disque, vous pouvez aussi faire un hash du périphérique directement (mais ça lit tout le disque, donc c'est long).

Vous l'aurez compris, ddrescue nous sert à cloner ou à sauver une carte existante, mais pour déployer proprement une image, on va maintenant utiliser le fameux Raspberry Pi Imager. Car oui, l'outil officiel de la fondation a une fonction que beaucoup de gens ne connaissent pas qui est la personnalisation avancée. Comme ça, avant de flasher votre carte, vous pouvez préconfigurer plein de trucs.

Par exemple, le hostname du Pi, genre pi-cuisine ou pi-garage, l'utilisateur et son mot de passe, le Wi-Fi avec SSID et mot de passe, le SSH activé avec mot de passe ou clé publique, le fuseau horaire et la config clavier. Et précision importante, Imager prépare tout ça pour que ce soit appliqué au premier boot (c'est injecté pour l'initialisation), ce qui revient au même pour vous, mais ça explique pourquoi c'est si pratique en mode headless.

Du coup, vous flashez la carte, vous la mettez dans le Pi, vous branchez l'alimentation, et souvent c'est accessible en SSH très vite :

ssh pi@pi-cuisine.local

C'est le mode headless parfait puisque ça vous évite d'avoir à brancher un écran + clavier + souris sur votre Rpi. Notez que l'extension en .local de mon exemple ci-dessus dépendra du mDNS (Bonjour / Avahi)... Sur certains réseaux (ou certains PC), ça pourra ne pas résoudre donc dans ce cas-là, vous passez par l'IP ou votre DNS/DHCP habituel.

Et maintenant, roulements de tambours, voici le workflow magique pour déployer un parc de Pi. Cela consiste tout simplement à configurer un Pi de référence avec tout ce qu'il vous faut dedans (paquets, services, configs...). Ensuite vous l'éteignez proprement, vous clonez sa carte avec ddrescue, et vous dupliquez cette image à volonté.

MAIS (et là c'est le point qui évite des sueurs froides), cloner une carte Linux telle quelle, ça clone aussi des identifiants qui devraient être uniques, typiquement :

  • le machine-id
  • les clés SSH hôte (host keys)

Donc si vous déployez 10 Pi clonés à l'identique, vous vous retrouvez avec 10 machines qui se présentent pareil, et côté SSH vous pouvez avoir des alertes cheloues (et côté admin, c'est pas propre).

La solution la plus simple c'est donc de préparer votre image "master" pour que chaque nouveau Pi régénère ça au premier démarrage. Sur votre Pi de référence (avant de cloner), vous pouvez faire :

sudo rm -f /etc/machine-id
sudo truncate -s 0 /etc/machine-id
sudo rm -f /etc/ssh/ssh_host_*

Comme ça, au prochain boot, le système régénère un machine-id propre, et OpenSSH régénère ses clés hôte. (Si jamais ça ne se régénère pas automatiquement sur votre variante d'OS, un redémarrage + réinstallation/relance SSH règle généralement le truc.)

Après ça, à chaque nouveau Pi, vous flashez l'image.

Maintenant si vous n'avez pas de parc à déployer, mais que vous voulez simplement personnaliser le hostname, le Wi-Fi, le user, etc., le plus simple ça reste donc de passer par Raspberry Pi Imager au moment du flash avec ses options avancées car si vous écrivez l'image avec dd/ddrescue directement sur la carte, Imager ne pourra évidemment pas appliquer ses paramètres.

Et SURTOUT, avant de lancer quoi que ce soit, pensez à identifier vos disques pour pas faire de bêtises (c'est une commande Linux, btw) :

lsblk -o NAME,SIZE,MODEL,MOUNTPOINT

Ah et désactivez aussi l'automontage sur votre machine, sinon vous allez avoir des soucis avec la destination qui se retrouvera occupée par l'OS.

Bref, avec ddrescue et Raspberry Pi Imager, vous avez maintenant de quoi cloner vos cartes SD beaucoup plus sereinement (et pas juste "les yeux fermés").

Enjoy !

Quand l'IA vous aider à hacker la mémoire des jeux

vendredi 26 décembre 2025 à 07:42

Les vieux de la vieille connaissent forcement Cheat Engine puisque c'est LE logiciel culte pour tripatouiller la mémoire des jeux , trouver l'adresse où est stockée votre santé, votre or, vos munitions, et la modifier à la volée. Sauf que manuellement, c'est un travail de fourmi... Trouver un pointeur stable qui ne change pas à chaque redémarrage du jeu, ça peut prendre des jours, voire des semaines de bidouillage.

Hé bien quelqu'un a eu l'idée un peu folle de brancher Claude directement sur Cheat Engine et visiblement le résultat est au rendez-vous.

Le projet s'appelle cheatengine-mcp-bridge et c'est un pont entre les IA compatibles MCP (Claude, Cursor, Copilot) et Cheat Engine. Concrètement, ça veut dire que vous pouvez maintenant demander à Claude de faire le boulot de reverse engineering à votre place, en langage naturel.

Dans cet outil, y'a trois couches qui communiquent ensemble : l'IA qui reçoit vos questions en langage humain, un serveur Python qui traduit tout ça en commandes techniques, et un script Lua côté Cheat Engine qui exécute les opérations sur le processus ciblé.

Et les possibilités sont dingues puisque l'outil expose pas moins de 39 "tools" MCP différents. Vous pouvez lire la mémoire (entiers, floats, strings, pointeurs), suivre des chaînes de pointeurs complexes du genre [[base+0x10]+0x20]+0x8, scanner des valeurs, analyser du code désassemblé, identifier des objets C++ via les infos RTTI, et même poser des breakpoints hardware. Il y a même le support du DBVM, le mode hyperviseur de Cheat Engine qui permet un traçage niveau Ring -1 , beaucoup plus difficile à détecter pour les protections anti-cheat classiques.

Avec ce MCP, vous lancez un jeu, vous demandez à Claude "Scanne l'or, j'en ai 15000". L'IA trouve alors 47 résultats. Vous dépensez un peu d'or dans le jeu, vous dites "Maintenant j'en ai 15100". Claude filtre et garde 3 adresses. Ensuite vous demandez "C'est quoi qui écrit sur la première adresse ?", et hop, breakpoint hardware posé automatiquement. Ensuite, un petit "Désassemble moi cette fonction", et vous avez tout le code de la fonction AddGold devant les yeux.

Tout ce processus qui prenait des heures de tatonnement se fait maintenant en mode conversation.

Pour l'instant c'est en lecture seule, pas d'écriture mémoire possible (probablement une sage précaution) et l'outil utilise les registres de débogage hardware DR0 à DR3, ce qui limite à 4 breakpoints simultanés mais garantit une compatibilité maximale avec les protections anti-cheat basiques.

Côté prérequis, c'est Windows only (à cause des canaux nommés ), Python 3.10 minimum, et Cheat Engine 7.5 ou plus récent. Et l'installation demande quelques étapes également... Il faut d'abord activer DBVM dans les settings de Cheat Engine, charger le script Lua, et configurer le chemin du serveur MCP dans votre IDE. Et n'oubliez pas de désactiver l'option "Query memory region routines" sinon vous risquez un joli écran bleu CLOCK_WATCHDOG_TIMEOUT.

C'est un projet encore frais mais j'ai trouvé ça cool, d'où le partage ici. Bon évidemment, on reste dans le domaine du reverse engineering et du modding de jeux et comme toujours, c'est destiné à un usage éducatif et de recherche donc ne venez pas pleurer si vous vous faites bannir d'un jeu en ligne, hein.

Mais en tout cas, pour les passionnés de rétro-ingénierie, les créateurs de trainers, ou simplement les curieux qui veulent comprendre comment fonctionne un jeu sous le capot, c'est un outil incroyable ! L'IA qui se met au hacking de jeux, on n'arrête vraiment plus le progrès.

Source