Site icon TátaGeek.blog

Jak fungují BNL soubory pro Albi tužku

Jak fungují BNL soubory pro Albi tužku

Po Vánocích se na jednom hardwarovém fóru objevil dotaz, jak vlastně Albi tužka funguje. Jeden z prvních odkazů vedl sem, na článek Táty Geeka „Jak funguje Albi tužka“. Text rozebírá, co tužka obsahuje uvnitř, jakým způsobem jsou konstruované kódy a odkaz na německý projekt TipToiReveng, který rozebírá podobný, ale dostatečně jiný systém pera a knih. V české kotlině se nic nevyskytovalo, a nebylo zřejmé, jak hluboké úpravy německého projektu by byly potřeba, kdyby člověk chtěl vyrobit vlastní BNL soubor nebo úplně celou knihu.

Proč?

Přece proto! Jak je u šťourů obvyklé, tohle je dostatečný důvod k vrtání se v něčem zajímavém. Ačkoli v navazujících debatách bylo zřejmé, že německá a česká tužka používá jiné soubory, a tudíž nelze jejich nástroje přímo využít, naivně jsem usoudil, že bude třeba pár drobných úprav a bude to. Stephen King by teď napsal něco takového jako „a to bylo naposledy, kdy ho někdo spatřil živého“. Naštěstí, i když to nešlo zcela hladce, až tak daleko to nezašlo.

Hacking a cracking

Rozbít cizí formát, bývá různě složité a někdy prakticky nemožné. Stačí, aby někde byla použita asymetrická šifra a už se bez crackování vlastního firmware tužky nelze dostat dále. Proto před tím, než jsem se do něčeho pustil, jsem provedl důkladný průzkum terénu.

Existují ještě jiné BNL soubory?

Stáhl jsem si několik souborů BNL od Albi, ze kterých bylo na první pohled zřejmé, že neodpovídají německému TipToi. Proto jsem použil silné google-fu, abych pohledal jiné BNL soubory v cizině. A už tady jsem narazil. Systémů pro tyto pera je vícero, prakticky všechny jsou vyrobeny v Číně a Albi u nás dává dohromady český obsah – není to původní výrobek. V cizině je souborových formátů pro tato pera více. Například zmiňovaný německý GME, nalezl jsem AOG, pro německé pero Ting je ještě jiný formát apod.

Existuje nějaká jiná verze formátu BNL, například zde, zde, zde nebo zde. Ta se nám ale nehodí.

Albi vydává knihy na 7 trzích: CZ, SK, PL, RO, HU, SI a HR. Co se týče kompatibilních ne-Albi BNL souborů, našel jsem soubory ke stažení jen tady.

Firmware Albi tužky

Dál jsem si řekl, že se podívám na firmware. Z českých stránek zmizelo, na slovenských je, ale temné a špinavé hlubiny uloz.to vydaly dvě různé verze pro obě verze hardware, jak pro čipy Sonix SNP70032, tak pro SN95300FG. Další pak vytáhl Táta Geek z Archive.org.

Takto vypadala část webu Kouzelnéčtení.cz v roce 2015

Z popisu čipů plyne, že používají nějaké vlastní 16bitové DSP jádro zvané S9KE, pro které jsem nenalezl žádné nástroje – kromě tohoto experimentálního. Bohužel, zatím jsem nebyl úspěšný ve zjištění, co přesně firmware dělá – ačkoli je zřejmé, jak se natahuje do paměti a odkud startuje, vlastní chip obsahuje i 64KW ROM s kódem na obsluhu periferií. Sice existuje dokumentace, které funkce ROM obsahuje, i jaké jsou parametry, nejsou k dispozici hlavičkové soubory, které by dokázaly „spojit“ jednotlivé adresy ROM se jmény těch funkcí. Z analýzy je zřejmé, že jsou i mnohé nedokumentované runtime funkce pro vlastní běh programu. Takže jsem sice byl schopen rozluštit nějaké názvy uložených písní, rozřezat většinu firmware na mp3 soubory, ale nikam dál jsem nepokročil. Další podrobnosti jsou v dokumentaci firmware. Tento popis přikládám jako samostatný dokument pro zvídavé.

Když to nešlo přes firmware v tužce, pustil jsem se do analýzy samotných souborů. Ze začátku jsem zkoumal jen stažené soubory, později jsem přidal i zkoušení upravených BNL souborů ve vypůjčené tužce.

Zjištění z analýzy BNL souborů

Tato zjištění zde budu publikovat postupně. Na základě analýzy jsem vytvořil popis formátu a napsal jednoduchý skript, který umí rozkrájet BNL soubor na prvočinitele. Ten jsem potřeboval vyzkoušet. Stáhl jsem tedy všechny BNL soubory a prohnal je tímto skriptem. V současné době se už mému popisu nevzpírají žádné soubory BNL, i když řada hodnot má neznámý význam a nedá se vyloučit, že systém toho zvládá více, než Albi používá.

Generátor BNL souborů

Na základě výstupu „disassembleru“ jsem napsal jednoduchý generátor. Ten ze vstupních souborů seskládá zpět BNL soubor, který lze nahrát do tužky.

Generátor OID kódů a jejich tisk

Při pokusu o tisk OID kódů pomocí nástrojů od TipToiReveng jsem zjistil dvě mrzutosti. Kontrolní součet v deváté tečce neodpovídá německému systému TipToi, ale systému Ting (horní bit je invertovaný). A pak jsem při „měření“ výtisků a scanů zjistil, že Albi kódy jsou větší. Německý kód má 1 mm včetně mezer, český 1,35 mm.

Albi OID kód a jeho rastr 1,35mm
Albi OID kód, pokus o tisk na laserové tiskárně 600 dpi

Generátor jsem upravil, ale s tiskem jsou potíže. Rozhodně to moje inkoustovka nedává vůbec, i když papírově má rozlišení podstatně vyšší, než požadovaných 1200dpi. Body jsou chlupaté a každý jinak velký.

Ani laserovka v místním copycentru ty tečky nevytiskla vůbec. Obsluha bohužel neovládala pokročilá nastavení, takže ani více pokusů nedokázalo body vytisknout. Tím myslím, že se jednalo o zásah ovladače, který úplně tečky vypustil z tisku. Nevylučuji tím možnost, že je někde v ovladači nastavení, přes které by tisk prošel. Bylo ale ověřeno na černobílé laserovce Samsung M2070, že generátor kódů funguje a tužka výtisky přečte.

Závěr a nedořešené otázky

Závěr je tedy mírně optimistický. Soubory lze rozkrájet, lze je zpátky složit, zvukové soubory jde nahradit a měla by jít tisknout vlastní kniha.

Nějaké nedořešené body ještě zbývají:

Exit mobile version