entaPub — lire n’importe quel EPUB, en toute sécurité, jusqu’au bout
Livres abîmés, anciens ou malveillants : le moteur de lecture entaPub ouvre les EPUB en toute sécurité, répare ce qui peut l’être et remet le livre au lecteur tel qu’il a été conçu.
Plus aucun livre impossible à ouvrir. L’EPUB est le format de livre numérique utilisé dans le monde entier, mais bon nombre des livres en circulation ne respectent pas la norme, sont en partie abîmés ou de facture ancienne. entaPub est un moteur de lecture EPUB écrit en Rust qui ouvre autant que possible ces livres aussi, sans jamais mettre en danger l’appareil du lecteur.
Fonctionnalités#
Lisible même abîmé
Il lit d’abord strictement selon la norme ; seulement en cas d’échec, il restaure par étapes : réparation du XML, relecture en HTML, puis reconstruction du livre.
On sait ce qui a été réparé
À quelle étape et de quelle manière la réparation a eu lieu est consigné comme diagnostic, avec un degré de fiabilité. Pas question de s’arrêter à « ça s’affiche, à peu près ».
Aucune connexion à l’ouverture
Il ne va chercher ni CSS ni images externes et construit le livre uniquement avec ce qu’il contient.
Tout ce qui s’exécute est retiré
script, iframe, javascript: et autres sont retirés, et chaque retrait est consigné.
Aucun accès aux fichiers hors du livre
Les références qui pointent hors du livre via ../ ou des chemins absolus sont refusées.
Même un livre énorme ne bloque rien
Taille du fichier, volume décompressé, profondeur d’imbrication et nombre d’éléments sont plafonnés : même un livre extrême ne fige pas l’appareil.
Sûreté mémoire
unsafe est interdit en Rust, et un fuzzing avec AFL++ teste massivement des entrées corrompues.
Le livre tel qu’il est
Les points d’emphase, l’écriture verticale et les retraits font partie du texte. Seules les indications dangereuses sont retirées ; écriture verticale, ruby, mise en page fixe et doubles pages sont préservées.
EPUB 2 comme EPUB 3
Livres récents et livres de facture ancienne se lisent par la même entrée.
Lire et créer#
entaPub comprend aussi un « Builder » qui produit toujours le même EPUB à partir de la même entrée. C’est ce Builder qui transforme en EPUB les manuscrits écrits dans KuroEditor, et c’est le Reader qui ouvre les livres dans KuroViewer. En concevant lecture et création selon les mêmes principes, les produits Entamy peuvent traiter le livre numérique de bout en bout par eux-mêmes.
| Formats pris en charge | EPUB 2 / EPUB 3 (mise en page fixe, écriture verticale, ruby, doubles pages) |
|---|---|
| Restauration | Strict → réparation du XML → relecture en HTML → reconstruction du livre (chaque étape consignée comme diagnostic) |
| Sécurité | Aucune connexion externe, retrait des éléments exécutables, refus des références hors du livre, limites de ressources |
| Implémentation | Rust (unsafe interdit), fuzzing avec AFL++ |
| Produits qui l’utilisent | KuroViewer (lire), KuroEditor (créer) |
| Mode de mise à disposition | Intégré aux produits Entamy (passage en open source non décidé) |
Si entaPub passe en open source, il sera publié sous la Kuro License (MIT + mention des titulaires des droits).
