entaPub: leia qualquer EPUB, com segurança, até o fim
Livros danificados, antigos ou maliciosos: o motor de leitura entaPub abre EPUB com segurança, conserta o que dá para consertar e entrega o livro ao leitor como ele foi concebido.
Queremos que nenhum livro fique sem abrir. O EPUB é o formato de livro digital usado no mundo todo, mas muitos dos livros em circulação não seguem o padrão, estão danificados em parte ou têm uma estrutura antiga. O entaPub é um motor de leitura de EPUB escrito em Rust que abre também esses livros na medida do possível, sem colocar em risco o aparelho de quem lê.
Recursos#
Lê mesmo danificado
Primeiro lê de forma rigorosa, conforme o padrão; só se falhar, recupera por etapas: reparo do XML, releitura como HTML e reconstrução do livro.
Dá para saber o que foi consertado
Registra como diagnóstico em que etapa e como o livro foi consertado, junto com o grau de confiabilidade. Não se contenta com um «mais ou menos apareceu».
Abrir um livro não gera conexões externas
Não carrega CSS nem imagens externas; monta o livro só com o que ele contém.
O que é executável é removido
Remove script, iframe, javascript: e similares, e registra o que removeu.
Não toca em arquivos fora do livro
Recusa referências que apontam para fora do livro com ../ ou caminhos absolutos.
Nem um livro enorme o trava
Limita o tamanho do arquivo, o volume descompactado, a profundidade de aninhamento e o número de elementos, para que nem um livro extremo trave o aparelho.
Segurança de memória
Proíbe unsafe em Rust e testa em massa entradas danificadas com fuzzing via AFL++.
O livro do jeito que ele é
Os pontos de ênfase, a escrita vertical e os recuos fazem parte do texto. Remove só as indicações perigosas e preserva a escrita vertical, o ruby, o layout fixo e as páginas duplas.
EPUB 2 e EPUB 3
Livros novos e livros de estrutura antiga são lidos pela mesma entrada.
Ler e criar#
O entaPub também inclui um «Builder» que, a partir da mesma entrada, gera sempre o mesmo EPUB. É esse Builder que transforma em EPUB os manuscritos escritos no KuroEditor, e é o Reader que abre os livros no KuroViewer. Ao projetar com os mesmos princípios a parte que lê e a que cria, os produtos da Entamy conseguem lidar com o livro digital do começo ao fim com as próprias mãos.
| Formatos | EPUB 2 / EPUB 3 (layout fixo, escrita vertical, ruby, páginas duplas) |
|---|---|
| Recuperação | Rigoroso → reparo do XML → releitura como HTML → reconstrução do livro (cada etapa é registrada como diagnóstico) |
| Segurança | Sem conexões externas, remoção de elementos executáveis, recusa de referências para fora do livro, limites de recursos |
| Implementação | Rust (unsafe proibido), fuzzing com AFL++ |
| Produtos que o usam | KuroViewer (ler), KuroEditor (criar) |
| Forma de distribuição | Integrado aos produtos da Entamy (abertura do código ainda não definida) |
Se o código for aberto, será publicado sob a Kuro License (MIT + menção dos titulares de direitos).
