entaPub – jedes EPUB sicher und bis zum Ende lesen
Beschädigte, veraltete oder bösartige Bücher: Die Lese-Engine entaPub öffnet EPUB sicher, repariert, was sich reparieren lässt, und übergibt das Buch in seiner ursprünglichen Gestalt.
Kein Buch soll sich mehr nicht öffnen lassen. EPUB ist das weltweit verbreitete Format für E-Books, doch viele tatsächlich verbreitete Bücher halten sich nicht an den Standard, sind teilweise beschädigt oder veraltet gebaut. entaPub ist eine in Rust geschriebene EPUB-Lese-Engine, die auch solche Bücher so weit wie möglich öffnet – ohne das Gerät der Lesenden zu gefährden.
Merkmale#
Lesbar, auch wenn beschädigt
Zuerst wird streng nach Standard gelesen. Nur wenn das scheitert, folgt die Wiederherstellung Schritt für Schritt: XML reparieren, als HTML neu einlesen, das Buch neu zusammensetzen.
Nachvollziehbar, was repariert wurde
In welchem Schritt was wie repariert wurde, wird samt Zuverlässigkeit als Diagnose festgehalten. Ein „irgendwie wird es angezeigt“ gibt es nicht.
Kein Netzwerkzugriff beim Öffnen
Externes CSS oder Bilder werden nicht nachgeladen; das Buch wird nur aus dem aufgebaut, was es selbst enthält.
Ausführbares wird entfernt
script, iframe, javascript: und Ähnliches werden entfernt, und das Entfernen wird protokolliert.
Keine Dateien außerhalb des Buchs
Verweise, die mit ../ oder absoluten Pfaden aus dem Buch hinauszeigen, werden abgelehnt.
Auch riesige Bücher bringen nichts zum Stillstand
Dateigröße, entpackte Datenmenge, Verschachtelungstiefe und Anzahl der Elemente sind begrenzt, sodass auch extreme Bücher das Gerät nicht einfrieren.
Speichersicher
unsafe in Rust ist verboten, und mit Fuzzing durch AFL++ werden massenhaft beschädigte Eingaben getestet.
Das Buch in seiner Gestalt
Betonungspunkte, vertikaler Satz und Einzüge gehören zum Text. Nur gefährliche Angaben werden entfernt; vertikaler Satz, Ruby, festes Layout und Doppelseiten bleiben erhalten.
EPUB 2 wie EPUB 3
Neue Bücher und alt gebaute Bücher lassen sich über denselben Einstieg lesen.
Lesen und Erstellen#
Zu entaPub gehört auch der „Builder“, der aus derselben Eingabe stets dasselbe EPUB erzeugt. Mit KuroEditor geschriebene Manuskripte macht dieser Builder zu EPUB, Bücher in KuroViewer öffnet der Reader. Weil Lese- und Erstellungsseite nach demselben Prinzip gebaut sind, können Entamys Produkte E-Books von Anfang bis Ende selbst verarbeiten.
| Formate | EPUB 2 / EPUB 3 (festes Layout, vertikaler Satz, Ruby, Doppelseiten) |
|---|---|
| Wiederherstellung | Streng → XML-Reparatur → Neu einlesen als HTML → Buch neu zusammensetzen (jeder Schritt wird als Diagnose protokolliert) |
| Sicherheit | Kein externer Zugriff, Entfernen ausführbarer Elemente, Ablehnen von Verweisen außerhalb des Buchs, Ressourcengrenzen |
| Implementierung | Rust (unsafe verboten), Fuzzing mit AFL++ |
| Eingesetzt in | KuroViewer (Lesen), KuroEditor (Erstellen) |
| Bereitstellung | In Entamy-Produkte eingebaut (Veröffentlichung als Open Source noch offen) |
Falls entaPub als Open Source veröffentlicht wird, geschieht das unter der Kuro License (MIT + Nennung der Rechteinhaber).
