Linux dans un fichier PDF ? C’est incroyable, mais c’est réel…

Linux dans un fichier PDF ? C'est incroyable, mais c'est réel…

Un étudiant audacieux a réussi à intégrer un système Linux dans un document PDF, défiant les attentes du monde technologique. Cette réalisation étonnante met en lumière la possibilité d’exécuter des environnements virtuels à l’intérieur de fichiers PDF, une innovation qui soulève tant des questions de sécurité que d’enthousiasme pour les passionnés de technologie.

On pensait que rien ne pouvait surprendre dans le domaine de la technologie, mais aujourd’hui, un projet captivant mérite notre attention. Un étudiant a réussi à insérer un système Linux dans un fichier PDF. Cela paraît incroyable, n’est-ce pas ? À découvrir par vous-même.

Linux dans un fichier PDF ? C'est fou, mais c'est réel...

Le code C peut être compilé pour fonctionner dans un PDF

Ce « hack » allie bizarrerie et ingéniosité. Un étudiant a réussi à inclure une distribution Linux dans un PDF à l’aide du projet TinyEMU. Bien que l’on puisse penser que les fichiers PDF ne sont que des documents statiques, le format supporte en réalité JavaScript avec sa propre bibliothèque standard.

L’implémentation complète de JavaScript dans les PDF a été réalisée uniquement par Adobe Acrobat, offrant des fonctionnalités surprenantes comme le rendu en 3D, l’envoi de requêtes HTTP et la détection de tous les moniteurs connectés au système. Toutefois, dans Chromium et d’autres navigateurs, une version très limitée de cette API est disponible, principalement pour des raisons de sécurité. Cela permet de réaliser divers calculs, mais avec des entrées et des sorties très restreintes.

Le code C peut être compilé pour s’exécuter dans un PDF en utilisant une ancienne version de Emscripten qui génère du code asm.js plutôt que du WebAssembly. Cela a permis de compiler une version modifiée de l’émulateur RISC-V TinyEMU pour asm.js, exécutable dans le PDF. Pour les entrées, un clavier virtuel est intégré avec plusieurs boutons et une zone de texte où l’utilisateur peut saisir des commandes pour interagir avec la machine virtuelle.

Linux dans un fichier PDF ? C'est fou, mais c'est réel...

Cependant, le principal défi réside dans la performance de l’émulateur. Par exemple, le Core de Linux met entre 30 et 60 secondes à démarrer dans le PDF, soit plus de cent fois plus lent que d’habitude. Malheureusement, il n’existe pas de solution à ce problème, car la version du V8 utilisée par le moteur PDF de Chrome a désactivé son compilateur JIT, ce qui impacte fortement les performances.

Pour le système de fichiers, des options en 64 et 32 bits sont disponibles. La version par défaut est un Buildroot 32 bits (précompilé et basé sur les exemples originaux de TinyEMU), mais une version d’Alpine Linux en 64 bits est également disponible. Cependant, l’émulateur 64 bits est environ deux fois plus lent, ce qui explique pourquoi il est rarement utilisé. Vous pouvez télécharger le PDF ici.