Description
Vous êtes invité par un collègue à venir tester son nouveau modèle miniature de sous-marin. Ce modèle est équipé d’une caméra « vue à la première personne » et d’un système adéquat pour diffuser ce flux vidéo.
Pour vous appâter, votre collègue précise que sa carte embarquée est basée sur un cœur Risc-V. Vous acceptez donc immédiatement. Le soir venu, vous passez plusieurs minutes à explorer les fonds marins du bassin du campus. Néanmoins, au bout d’une demi-heure, le système de supervision panique et vous perdez la communication. Vous vous jetez dans le bassin pour récupérer le modèle. Votre collègue voit au loin des étudiants partir en courant avec du matériel radio en main. Mais que s’est-il passé ? Est-ce que ces étudiants auraient compromis le système du sous-marin à distance ? Vous proposez d’aider votre collègue à extraire le contenu de sa mémoire Flash et à l’analyser.
Le lendemain, après une douche et une courte nuit de repos, votre collègue dépose la carte électronique du sous-marin sur votre bureau. Il vous confirme qu’il a implémenté un port série en mode 8-N-1, mais il précise qu’il a potentiellement fait une erreur d’implémentation dans la logique du port série synthétisé, mais il ne s’en souvient plus trop.
Parce que le sous-marin n’est pas sous l’eau, son électronique n’est pas correctement refroidie. Vous ne pouvez pas le garder allumé plus que quelques minutes avant qu’il ne s’éteigne par sécurité.
Vous prenez un adaptateur port série vers USB pour vous connecter sur le système et vous commencez à investiguer…
Pour s’interfacer avec le port série à distance, vous aurez besoin de Telnet.
Votre collègue a réussi à retrouver une sauvegarde du chargeur de démarrage
bootloader.bin
et vous indique que vous pouvez émuler la séquence de démarrage
avec la commande qemu-system-riscv64 -M sifive_u -m 45M -kernel bootloader.bin
(port série disponible dans View > Serial 0
). Cela vous permet de prototyper
des idées avant de risquer d’abîmer le sous-marin.
Il faut QEMU 5.1 ou ultérieur pour pouvoir émuler ce challenge.
Fichiers
- docker-compose.yml
-
bootloader.bin
318.20 KiB – e06c7b272736c0d34617e9f62fd4e4c1a8d56d6df6e4f1ee83492999c4a65e6c
Auteur
Instructions
- Pour commencer, téléchargez le fichier docker-compose.yml :
curl https://hackropole.fr/challenges/fcsc2023-hardware-sous-marin/docker-compose.public.yml -o docker-compose.yml
- Lancez l'épreuve en exécutant dans le même dossier :
docker compose up
- Dans un second terminal, accédez à l'épreuve via Netcat avec :
nc localhost 4000
Si vous rencontrez des problèmes, veuillez consulter la FAQ.
Flag
Soumettez votre solution
Vous pouvez envoyer votre solution rédigée pour cette épreuve. La FAQ contient la marche à suivre.
Vous avez besoin d'être identifié(e) pour soumettre une solution.