entaPub: lee cualquier EPUB, con seguridad, hasta el final
Libros dañados, antiguos o maliciosos: el motor de lectura entaPub abre EPUB con seguridad, repara lo que se puede reparar y entrega el libro al lector tal como fue concebido.
Queremos que ningún libro se quede sin abrir. EPUB es el formato de libro electrónico que se usa en todo el mundo, pero muchos de los libros que circulan no siguen la norma, están dañados en parte o tienen una factura antigua. entaPub es un motor de lectura de EPUB escrito en Rust que abre también esos libros en la medida de lo posible, sin poner en peligro el dispositivo de quien lee.
Características#
Se lee aunque esté dañado
Primero lee de forma estricta según la norma; solo si falla, recupera por etapas: reparación del XML, relectura como HTML y reconstrucción del libro.
Se sabe qué se reparó
Registra como diagnóstico en qué etapa y cómo se reparó, junto con su grado de fiabilidad. No se conforma con un «más o menos se ve».
Abrir un libro no genera conexiones externas
No carga CSS ni imágenes externas; construye el libro solo con lo que contiene.
Lo ejecutable se elimina
Quita script, iframe, javascript: y similares, y registra lo que ha quitado.
No toca archivos fuera del libro
Rechaza las referencias que apuntan fuera del libro con ../ o rutas absolutas.
Ni un libro enorme lo detiene
Limita el tamaño del archivo, el volumen descomprimido, la profundidad de anidamiento y el número de elementos, para que ni un libro extremo congele el dispositivo.
Seguridad de memoria
Prohíbe unsafe en Rust y prueba de forma masiva entradas dañadas con fuzzing mediante AFL++.
El libro tal como es
Los puntos de énfasis, la escritura vertical y las sangrías forman parte del texto. Solo quita las indicaciones peligrosas y conserva la escritura vertical, el ruby, la maquetación fija y las páginas dobles.
EPUB 2 y EPUB 3
Libros nuevos y libros de factura antigua se leen por la misma entrada.
Leer y crear#
entaPub incluye también un «Builder» que, a partir de la misma entrada, genera siempre el mismo EPUB. Este Builder convierte en EPUB los manuscritos escritos en KuroEditor, y el Reader abre los libros en KuroViewer. Al diseñar con los mismos principios la parte que lee y la que crea, los productos de Entamy pueden tratar el libro electrónico de principio a fin con sus propias manos.
| Formatos | EPUB 2 / EPUB 3 (maquetación fija, escritura vertical, ruby, páginas dobles) |
|---|---|
| Recuperación | Estricto → reparación del XML → relectura como HTML → reconstrucción del libro (cada etapa se registra como diagnóstico) |
| Seguridad | Sin conexiones externas, eliminación de elementos ejecutables, rechazo de referencias fuera del libro, límites de recursos |
| Implementación | Rust (unsafe prohibido), fuzzing con AFL++ |
| Productos que lo usan | KuroViewer (leer), KuroEditor (crear) |
| Forma de distribución | Integrado en los productos de Entamy (publicación como código abierto sin decidir) |
Si se publica como código abierto, será bajo la Kuro License (MIT + mención de los titulares de derechos).
