entaPub — leggi qualsiasi EPUB, in sicurezza, fino in fondo
Libri danneggiati, vecchi o malevoli: il motore di lettura entaPub apre gli EPUB in sicurezza, ripara ciò che si può riparare e consegna il libro al lettore così com’è stato pensato.
Nessun libro deve restare impossibile da aprire. EPUB è il formato di libro elettronico usato in tutto il mondo, ma molti dei libri in circolazione non rispettano lo standard, sono danneggiati in parte o sono di vecchia fattura. entaPub è un motore di lettura EPUB scritto in Rust che apre per quanto possibile anche questi libri, senza mettere a rischio il dispositivo di chi legge.
Caratteristiche#
Leggibile anche se danneggiato
Prima legge in modo rigoroso secondo lo standard; solo se fallisce, recupera per fasi: riparazione dell’XML, rilettura come HTML e ricostruzione del libro.
Si sa cosa è stato riparato
In quale fase e come è avvenuta la riparazione viene registrato come diagnosi, insieme al grado di affidabilità. Non ci si ferma a un «in qualche modo si vede».
Aprire un libro non genera connessioni esterne
Non carica CSS né immagini esterne e costruisce il libro solo con ciò che contiene.
Ciò che è eseguibile viene rimosso
Rimuove script, iframe, javascript: e simili, e registra ciò che ha rimosso.
Nessun accesso ai file fuori dal libro
I riferimenti che puntano fuori dal libro con ../ o percorsi assoluti vengono rifiutati.
Nemmeno un libro enorme lo blocca
Dimensione del file, volume decompresso, profondità di annidamento e numero di elementi hanno un limite, così nemmeno un libro estremo blocca il dispositivo.
Sicurezza della memoria
unsafe è vietato in Rust, e il fuzzing con AFL++ mette alla prova moltissimi input danneggiati.
Il libro così com’è
I punti di enfasi, la scrittura verticale e i rientri fanno parte del testo. Vengono rimosse solo le indicazioni pericolose, mantenendo scrittura verticale, ruby, layout fisso e doppie pagine.
EPUB 2 ed EPUB 3
Libri nuovi e libri di vecchia fattura si leggono dallo stesso accesso.
Leggere e creare#
entaPub comprende anche un «Builder» che, dallo stesso input, genera sempre lo stesso EPUB. È questo Builder a trasformare in EPUB i manoscritti scritti con KuroEditor, mentre è il Reader ad aprire i libri in KuroViewer. Progettando con gli stessi principi la parte che legge e quella che crea, i prodotti Entamy possono gestire il libro elettronico dall’inizio alla fine con le proprie mani.
| Formati supportati | EPUB 2 / EPUB 3 (layout fisso, scrittura verticale, ruby, doppie pagine) |
|---|---|
| Recupero | Rigoroso → riparazione XML → rilettura come HTML → ricostruzione del libro (ogni fase registrata come diagnosi) |
| Sicurezza | Nessuna connessione esterna, rimozione degli elementi eseguibili, rifiuto dei riferimenti fuori dal libro, limiti alle risorse |
| Implementazione | Rust (unsafe vietato), fuzzing con AFL++ |
| Prodotti che lo usano | KuroViewer (leggere), KuroEditor (creare) |
| Modalità di fornitura | Integrato nei prodotti Entamy (pubblicazione open source da decidere) |
Se verrà pubblicato come open source, lo sarà con la Kuro License (MIT + indicazione dei titolari dei diritti).
