Vous avez accès aux derniers messages que Monsieur Déchiffre a échangés avec sa
femme avant de disparaitre.
Peut-être que vous y trouverez un indice important...
Le célèbre journaliste Henry Déchiffre a soudainement disparu alors qu'il
enquêtait pour sa prochaine affaire.
Sa femme a fait un signalement inquiétant indiquant qu'il a complètement arrêté
de répondre à ses messages du jour au lendemain alors qu'il était en voyage.
Monsieur Déchiffre ne dévoile généralement pas sa position exacte par téléphone,
de peur que ses échanges ne puissent être interceptés.
Même sa femme ne sait pas où il se trouvait exactement.
Néanmoins, celle-ci est persuadée qu'un indice important se cache parmi les SMS
qu'il lui a envoyés.
Elle a donc collaboré avec les forces de l'ordre et vous a transmis une copie de
leurs échanges par messages sur les 30 derniers jours dans l'espoir que vous
puissiez le retrouver.
Téléchargez cette copie, et retrouvez l'adresse de la dernière position du
journaliste avant sa disparition.
(Le format de l'adresse à suivre est celui donné par Google Maps.)
La première étape est de restaurer la copie des messages pour qu'ils puissent
être lus.
On peut le faire ainsi :
# Terminal 1
mkdir ./db
mongod -dbpath ./db
# Terminal 2
mongorestore -d message_dump ./message_dump
mongosh
On peut à présent lire le contenu de la base de données.
test> use message_dump
switched to db message_dump
message_dump> db.messages.countDocuments()
125
On peut obtenir les identifiants utilisateurs avec :
db.users.find()
On remarque que le journaliste a l'ID utilisateur 3258270385, et sa femme a
l'ID 3258026835.
Les messages peuvent être ensuite remis dans le bon ordre avec :
db.messages.find().sort({createdAt: 1})
On peut alors lire les derniers échanges pour essayer de retrouver des
informations pertinentes.
En lisant les échanges, on se rend compte que le journaliste est arrivé à son
hôtel et a envoyé au même moment une image qui a l'ID 894843567.
On peut récupérer le contenu du fichier avec cette commande
mongosh --norc --quiet --eval "db=db.getSiblingDB('message_dump'); db.medias.findOne({_id: 894843567}).media" > IMAGE
Ainsi, l'image se retrouve dans le fichier IMAGE.
Mais il faut maintenant la reconvertir dans un format lisible, car elle est
actuellement encodée en base 64.
La bibliothèque python base64 permet de très simplement décoder notre image.
def extract(path: str, output: str):
with open(path) as file:
media = file.read()
with open(output, "wb") as out_file:
out_file.write(base64.b64decode(media))
Dans la base de données de médias, on voit que l'image était au format PNG.
On exporte l'image dans ce format avec le code python ci-dessus.
Il ne reste plus qu'à lire les informations EXIF de l'image.
On obtient la position 41 deg 3' 4.66" S, 145 deg 54' 2.72" E qui correspond à
la position du Wellers Inn Backpacker Hostel, dont on peut récupérer
l'adresse.