Épreuve OSINT du Midnight Flag 2026 (CTF joué en équipe, 13 au 15 mars), scénario fictif dans un cadre explicitement autorisé. Reproduction à fins pédagogiques ; aucune personne réelle n'est visée.
L'énoncé fournit une photo et le nom d'une victime, Lin Xiayu, retrouvée morte sur les lieux. Objectif : identifier précisément l'endroit montré, situé en Chine.
Localiser le lieu de la photo en partant d'un cliché sans métadonnées exploitables et d'un pseudonyme, par recherche d'image inversée puis enchaînement de pivots entre comptes publics.
1 · Analyse initiale
Le premier réflexe est la recherche d'image inversée (TinEye, Yandex, Google Images). Comme le lieu est annoncé en Chine, on ajoute Baidu Images, mieux indexé sur le territoire chinois. Aucun des moteurs ne donne de résultat concluant : il faut un autre point d'entrée.
2 · L'indice caché dans le pseudo
La photo n'est pas la seule piste : un pseudonyme est fourni, LinXiayu35170. Décomposé, il révèle un code postal placé devant le nom : 35170, celui de Bruz, près de Rennes. Hypothèse : Lin étudie à Rennes. Or Rennes est jumelée avec Jinan, en Chine, ce qui pourrait situer la scène. L'hypothèse est mise de côté et on part chercher les comptes rattachés au pseudo.
Un pseudonyme encode souvent un indice (date, code postal, initiales). On le décompose avant de le pivoter.
3 · De pseudo en pseudo
Un balayage multi-plateformes sur LinXiayu35170 (WhatsMyName) renvoie quatre comptes. Celui sur X (Twitter) porte les marqueurs classiques d'un challenge OSINT : compte très récent, un seul abonné, photo de profil générée par thispersondoesnotexist. C'est bien le profil cible.
Sur ses trois publications, un commentaire provient de son unique abonné, Lucas Juillet. Son profil affiche les mêmes marqueurs (compte récent, avatar Mr Robot, pseudo orienté cyber) : il joue un rôle. Son pseudonyme technique, heaprunner, devient le pivot suivant.
whatsmyname LinXiayu35170 → X, ...
[*] X : compte récent, avatar thispersondoesnotexist
pivot commentaire → Lucas Juillet → heaprunner
4 · Le dépôt GitHub
heaprunner mène à un compte GitHub récent, avec un seul projet, pattern-analysis. L'équipe repère que le fichier pattern_model.py cache une information en ligne 9 : un nouveau pseudonyme, lulu kicourt.
WhatsMyName ne renvoie rien d'exploitable sur ce dernier. Un agrégateur d'empreintes (type OSINT Industries) révèle en revanche un compte Strava.
5 · Le trajet Strava
Le profil Strava expose un trajet partagé. Son point d'arrivée, recherché sur une carte, correspond au Zhaoyuan Park. Les photos publiques du parc contiennent un cliché quasi identique à celui de l'énoncé : le lieu est confirmé.
lieu Zhaoyuan Park (trajet Strava → carte → photos)
flag MCTF{Zhaoyuan_Park}
Toute la chaîne repose sur des comptes et dépôts publics, sans jamais interagir avec eux (pas d'abonnement, pas de message). Chaque pivot est tracé et horodaté.
6 · À retenir
- Quand l'image ne parle pas, le pseudonyme parle : décomposer avant de pivoter.
- Un fil OSINT se remonte de proche en proche : pseudo → réseau → code caché → nouveau pseudo → plateforme.
- Les activités de sport (Strava) et les photos de lieux publics sont des mines pour la géolocalisation.