Ten projekt tip-toi-reveng nefunguje na "nase" Albi pera. Aj tak poskytne zakladny navod na OID (teda ako tlacit rozne kody). Zostava nam vyriesit, ako funguje firmware pera.
Trochu som sa s tym hral a toto su moje zavery:
Zvuky su v dvoch (troch) miestach - vo firmware a potom v bnl suboroch. Posledna moznost su WAV subory, ktore maju specialne kody, daju sa nahravat a prehravat a je po nich stopa vo firmware. Tie pouzivaju na vlastne nahravky.
Firmware obsahuje nejaky kod a neviem, o aku architekturu ide. Pero u seba nemam - mozno ho skus otvorit a najst typ CPU.
Okrem toho firmware obsahuje zvuky (MP3 subory), ktore nie su nijak chranene a struktura sa da zistit tym, ze sa na to pozries. V strukture ide o offsety do suboru a mensie detaily k tomu. Neskusal som to, ale prepisat data vo firmware by malo byt mozne.
BNL su narocnejsie. Tiez su v nich ulozene komplet MP3 subory. Su chranene "specialnou" ochranou, ktoru uz len podla struktur tipujem a opisem ju tu. XORuju sa niektore byty. Pozor, nie vsetky. Vyzera to, ze 0x00 a 0xFF nechavaju tak ako boli; offsety a XORy okrem toho vyzeraju na prvy pohlad nahodne. Podla ocakavanej struktury MP3 sa zda, ze ziskaju prvu hodnotu z hlavicky - tu hodnotu este viem zistit. Z tejto hodnoty generuju keystream a offsety, ktore sa maju XORovat. Aby sa keystream nedal prenasat medzi roznymi BNL suborami, tak funkcia keystreamu vyzera nejak takto:
key(n+1) = neznama_funkcia(key(n), ?)+cislo_bnl
takze z keystreamu jedneho BNL pri znalosti key(0) sa da spravit keystream pre druhe BNL s rovnakym key(0), offsety boli tusim tiez rovnake.
Odvodenie dalsich klucov nie je uplne zrejme - skusal som kongruencie nasobenia mod nieco a jednoduchsie "sifry", ale nic mi nevyslo. Je to vzdy jeden byte, takze ani nie je velmi co skusat.
Velmi problematicke pri analyze je to, ze nie je pristupny desifrovany subor, takze moje tvrdenia o BNL stoja na vode a na pozerani do suboru. Keby mal niekto cas a HW na vycitanie komplet firmwaru z pera (teda co sa naozaj vola), tak by to dost pomohlo. Skusal som zistovat, ako sa tam firmware nahrava a cez to som este uplne nepresiel.