Ebook-Ripper Secretele cititorului de cărți sony prs-505

Scopul nostru este să vedem cum este folosit Linux în "adult", în masă
dispozitive, să evalueze constatările de "locale" profesionale Linux,
pentru a câștiga experiență în studiul software-ului altcuiva, și poate adăuga la dispozitiv






ceva de-al său.

Deci, mai întâi vom efectua o scanare offline a programului intern.
Producătorul de cărți electronice pune periodic site-ul oficial
firmware-ul proaspăt, fixând glitches vechi și adăugând altele noi. Pentru a nu
pentru a evita conținutul cardurilor flash ale dispozitivului, trebuie doar să descărcați unul nou

versiune. Acesta este programul pe care ne-a furnizat-o fabricantul
clipește cititorii. Acesta conține imaginea sistemului de fișiere pentru
dispozitiv. Executivul este doar o arhivă Win-Zip cu auto-extragere, și anume
nu este necesar să o rulați, ci să o despachetați cu utilitarul linux
dezarhivați:

$ dezarhivați PRS-505 \ Updater \ 1.1.00.18040.exe
$ ls
sumă de control eBookMSCDeviceUpdater.dll fsk.dll kconfig.xml msvcr71.dll ssleay32.dll
cramfs.Fsk.img eBookUpdater FskImage.dll libeay32.dll PRS-505 Updater
1.1.00.18040.exe USBDLL.dll
cramfs.Rootfs.img eBookUpdater.xsb Fskin.dll MSCEncComm.dll PRS-505 Updater.exe
DriveManager.dll FskCore.xsb FskPower.dll msvcr70.dll raw.BootImg.img
$ rm PRS-505 \ Updater \ 1.1.00.18040.exe

În plus față de fișierele auxiliare dll-ek și de configurare xml (pentru ele suntem încă
ne vom întoarce), în arhiva despachetată vor trăi imaginile necesare ale FS, care
sunt turnate în dispozitiv ca rezultat. Au extensia * .img. Să le ignorăm
imaginile prin programul de fișiere și vedeți ce gândește despre ele:

$ fișier * .img
cramfs.Fsk.img: Fișierul comprimat din sistemul de fișiere ROM Linux, dimensiune endian mică 65536
CRC 0xc3e97789, ediția 2768907732, 3306537355 blocuri, 1718735798 fișiere
cramfs.Rootfs.img: Fișierele comprimate din sistemul de fișiere ROM Linux, dimensiune mică endian
65536 CRC 0xdb11801f, ediția 3444324402, 2364302859 blocuri, 491549572 fișiere
raw.BootImg.img: executabil DOS (driver de dispozitiv) pentru DOS

Conținutul celui de-al treilea fișier părea suspicios pentru mine, evident că nu
Driverul DOS. Dimensiunea este de 480 mii octeți, aproape complet blocată de cele (pentru
mai rapidă în culoare, așa cum presupun) și are o anumită sumă
impregnări de ceva de mică semnificație. La început am decis că este vorba de un bootloader
(adevăratul scop va deveni clar mai târziu).

Fișierele cramfs.Fsk.img și cramfs.Rootfs.img, evident - imagini ale sistemelor de fișiere în
format CramFS. Să încercăm să le monurăm:

$ mkdir Fsk.FS
$ cd Fsk.FS
# mount -t cramfs -o bucla. /cramfs.Fsk.img.

În interiorul - directorul sony / ebook, și în el - aplicația subdirectoare, bin și FONT.
Să aruncăm o privire la prima și să vedem o grămadă de biblioteci dinamice compilate pentru
arhitectura arhitecturii și o grămadă de fișiere xml-umbrite. În directorul / bin - 4 binar,
și în fonturile FONT.

Acum, montați fișierul cramfs.Rootfs.img. În ea - un dosar cu drepturi depline
un sistem GNU cu următoarele directoare: bin, date, dev, etc, acasă, lib, mnt, opt, opt0, opt1,
proc, rădăcină, sbin, tmp, usr, var. Ce este interesant aici, puteți săturați? Ei bine,
În primul rând, conținutul fișierului / etc / issue ne va oferi o versiune a mediului Linux -
proiect comercial MontaVista
versiunea 3.0. Fișierele / etc / passwd și / etc / sudoers vă vor spune despre singurul
utilizator al acestui sistem: "libro" cu parola criptată "/ ET3mqgcE1NTQ".
Subdirectorul /etc/rc.d va identifica toate serviciile și daemoanele care rulează
dispozitiv. Aici totul este standard, dacă nu este ascuns în scriptul rcS.d
S20libromount. Privind în ea, puteți afla că montează sistemele de fișiere
(in / opt, / opt0 și / opt1), încarcă driverele pentru ecran, sunet, usb-storage și
flash-card-uri, afișează un salut și stabilește ora implicită. În
În general, tot ceea ce depinde cititorul de cărți se face aici.

Aproape am părăsit subdirectorul / etc în continuare pe sistemul de fișiere, dar în
Ultimul moment a observat scriptul rc.d / rc3.d / S98librostart, care se lansează
fișierul tinyhttp.sh, care trăiește în sistemul de fișiere anterior pe care l-am studiat. şi aici
aici este deja interesant. De ce un dispozitiv care nu are interfață de rețea,
unele http? Bine, ia o notă și accesează cu crawlere sistemul de fișiere.

kernel_version = 2.4.17_n12
autor = E Cerneală
descriere = 8track Driver FrameBuffer
VGA e-cerneală 600x800

În consecință, cerneala electronică este prezentată pe Linux ca grafică
Afișaj compatibil cu Framebuffer! Deci, dacă vrem să împingem dispozitivul și
Pentru a forța să deduce pe ecran ceva diferit de cărți, este necesar să se îndrepte numai
ieșiți programul nostru grafic la / dev / fb0. De asemenea, apare sensul fișierului
raw.BootImg.img este ceea ce este trimis la framebuffer atunci când boot-urile OS, adică
O imagine cu sigla și inscripția "Pornirea ...". Dimensiunea fișierului este doar
800 × 600 (= 480000), octet per pixel.

Una dintre caracteristicile dispozitivului - dezvoltatorii fizic plasate pe diferite
sistemele de fișiere GNU propriu (ca software universal) și dependente de dispozitive
Cochilia Fsk este ceea ce face cititorul de cărți un editor de cărți. A făcut-o ca să poți
A fost rapid să se completeze actualizările programului de citire, fără a se atinge întregul sistem și
sporind siguranța.

Dezasamblam ...

Interiorul dispozitivului a fost studiat de mult timp de tovarășii igorsk, boroda și
alți entuziaști de pe forum

www.the-ebook.org. Trebuie doar să repetăm ​​faptele lor, bine,






instrucțiunea de dezasamblare acolo.

Cu o inimă scufundată, dezmembrez bunul meu prieten și înăuntru aflu:

  • Procesor central FreeScale (Dragonball) MX-1 cu arhitectura ARM926
  • NAND Flash chip Samsung (256 MB)
  • NOR-memorie flash Spansion (2 MB)
  • Două cipuri de memorie Samsung
  • Card de memorie SD / MMC + MemoryStick Ricoh
  • Controller de afișare pe FPGA Actel ProASIC3
  • Convertor digital-analogic pentru ieșirea audio
  • Controler USB Epson S1R72V17
  • Un pin pentru un conector de depanare proprietate (100 picioare), marcat ca
    CN1501

În general, planurile de bord și designerii de caroserie sunt lauda și invidia mea. toate
este reglat incredibil de precis, și nicăieri nu există nicio extravaganță. Intră în
trupul altui lucru decât ceea ce este în el mi se părea imposibil.
Pe scurt, nici nu adăugați și nici nu vă duceți.

Ne vom ocupa de conectorul de depanare. Evident, interfețele JTAG sunt afișate pe ea
microcircuite + orice porturi, cum ar fi un debug serial cu UART cu
procesorul central. Așa este. Băieții de pe forum, numiți mai sus, deja
a făcut o treabă murdară, sub forma unei lovituri pe un osciloscop, și a calculat
Portul DBG al piciorului. Rămâne doar să le lipiți. Solzi argint subțire
cabluri până la 6 (Transmit) și 7 (Receive), de asemenea, nu uitați de "pământ"
contact, care poate fi luat de la cel de-al 5-lea pin al conectorului sau - doar grabbing
pentru cazul dispozitivului. Prin adaptorul RS-232 / UART se conectează la portul COM
calculator.

Porniți dispozitivul. Dacă portul este configurat corect și totul este sigilat cu atenție,
observăm jurnalul de încărcare Linux. Odată ce descărcarea a fost terminată, conectați-vă la cea recunoscută
de la / etc / passwd cu rechizitele (libro: librie). Sistemul ne permite să ieșim și să fugim
mesajul:

### fskLoad
### fcLoaded
ultimele nblconfig citite de la 0x0003b800
ultimele nblconfig scrise la 0x0003c000
#### xs_switcher_usbWatcher_endUSBThread
# avertisment: global în loc de local!
# avertisment: global în loc de local!
SYSNPM: sysnpm_pm_callback (): 163 Mem, oprirea procesorului.

După aceea, nu mai răspunde la comenzi! Totul este bine, ar trebui să fie așa
Tinyhttp proces-shell a observat inactivitatea procesorului și a tăiat-o
economisiți bateria. Puteți "mări" procesorul făcând clic pe butoane
volumul. Pentru a lucra atât de tare, așa că ucidem în plus:

$ killall tinyhttp.sh
$ killall tinyhttp

De acum încolo, avem un sistem real, complet GNU / Linux pe bază
2.4!

Din jurnalul de descărcare (comanda dmesg) putem învăța multe despre hardware
dispozitiv: de exemplu, dimensiunea memoriei RAM este de 64 Mb și memoria flash
este împărțită în foarte multe secțiuni pentru toate ocaziile. Să aruncăm o privire asupra caracteristicilor
procesor:

root @ (niciunul): / proc # cat / proc / cpuinfo

Procesor. ARM / CIRRUS Arm920Tsid (wb) rev 0 (v4l)
BogoMIPS. 98.09
Caracteristici. swp jumătate de 26bit
Tipul cache-ului. write-back
Cache-ul este curat. cp15 c7 ops
Blocarea cache-ului. format A
Cache unificat. harvard
.
Hardware. Motorola DragonBall MX1 (eBook-2)

Se pare că acesta funcționează la o frecvență de 100 MHz și are arhitectura ARM9.

Și iată ce a montat Linux:

/ dev / root pe / tip cramfs (rw)
proc pe / proc tip proc (rw)
tmpfs pe / dev / shm tip tmpfs (rw)
tmpfs pe / tmp tip tmpfs (rw)
tmpfs pe / var tip tmpfs (rw)
tmpfs pe / etc tip tmpfs (rw)
/ dev / mtdblock10 pe / opt1 / chei de tip cramfs (rw)
/ dev / mtdblock11 pe / opt1 / tip info cramfs (rw)
/ dev / mtdblock15 pe / opt cramfs (rw)
/ dev / mtdblock16 pe / opt0 tip jffs2 (rw)
devpts pe / dev / pts tip devpts (rw)

Apropo, ceea ce are sistemul de fișiere cramfs este doar pentru citire.
O caracteristică specială a sistemului de fișiere este că indiferent dacă șoferul crede pentru el însuși.

Fonturile Ttf se află în directorul / opt / sony / ebook / FONT. În mod ideal, ar trebui să fie
redenumiți la tt0003m_.ttf, tt0011m_.ttf, tt0419m_.ttf și, de asemenea,
nume:

Font familii - Swis721 BT, Dutch801 Rm BT, Courier10 BT
Font subfamilie - Roman, Roman, Roman
Numele fontului complet - Swis721 BT Roman, Dutch801 Rm BT Roman, Courier10 BT Roman

Aceste nume sunt înregistrate în aplicația / kconfig.xml și
aplicație / resurse / script-uri / main.xml. În imaginea și asemănarea scrisă acolo
puteți modifica propriile stiluri sugerate:


În aceleași config-uri, jucând cu scripturi și marcare, puteți adăuga
oportunități în coajă. Coardă finală - împachetăm un FS nou într-o imagine:

# mkfs.cramfs ./new_opt ./new_opt.img

intermitent

Pur și simplu pentru a înlocui fișierul necesar cu cramfs actualizate comprimat sistem de fișiere
nu permite. Va fi necesar să îl despachetați pe un PC, să faceți modificări și cu ajutorul lui
mkfs.cramfs pentru a împacheta înapoi, ceea ce sa făcut în secțiunea anterioară.
Tovarășul igorsk a scris un set de scripturi (Universal Flasher, swing

de aici). Cu ajutorul lor, puteți înlocui imaginea veche cu cea creată și, de asemenea
(atenție!) pentru a înlocui fișiere individuale, dacă doriți să experimentați, nu
chinuit de aspectul imaginilor. Doar aruncați o grămadă de fișiere pe cardul Flash,
înlocuiți imaginea lui new_opt.img cu a noastră, introduceți-o în cramă și reporniți-o. În cazul în care
totul a mers bine și nu există erori în configurații, atunci vom avea o interfață actualizată.

Cel mai adesea, atunci când completați o imagine coruptă, sistemul nu eșuează și dă
avem o șansă de a rezolva problema. Deși uneori coajă este deteriorată atât de mult
fără artilerie grea (lipire la portul de depanare) este indispensabilă. Dar de fapt
Restul sistemului de fișiere cu GNU nu este ucis, deci cu o consolă completă
este ușor să refresh dispozitivul cu un firmware de lucru manual, în prealabil
la unitatea flash a imaginii corespunzătoare (următoarea secvență de acțiuni
sugerat de boroda):

// Creați un disc temporar în memorie de 32 MB
rădăcina @ (niciuna):

# mount -o remount -t tmpfs -o dimensiune = 32m / dev / shm / tmp
/ / Montați cardul Flash
rădăcina @ (niciuna):

# mkdir / tmp / sd_card
rădăcina @ (niciuna):

# mount / dev / sdmscard / r5c807a1 / tmp / sd_card
// Scoatem imaginea pe discul temporar
rădăcina @ (niciuna):

# cp /tmp/sd_card/new_opt.img / tmp
// Verificați suma de control
rădăcina @ (niciuna):

# md5sum /tmp/new_opt.img
// Software-ul proprietar Sony pentru lucrări la nivel inferior cu carduri NAND-flash
rădăcina @ (niciuna):

# / usr / local / sony / bin / nblsdm șterge Fsk
rădăcina @ (niciuna):

# / usr / local / sony / bin / nblsdm crează -i /tmp/new_opt.img -d 1 Fsk
// Comparați completarea
rădăcina @ (niciuna):

# / usr / local / sony / bin / nblsdm cmp -i / tmp / new_opt.img Fsk
rădăcina @ (niciuna):

# / usr / local / sony / bin / nblconfig -ksel normal
rădăcina @ (niciuna):

Spațiu pentru experimente

Obiceiul de a dezasambla pe cei care vin sub brat (și colectează înapoi!) Gadgets
adaugă experiență și ajută la crearea a ceva de-al său. Am luat dispozitivul
lectură cărți electronice, dar în loc de lectură a început să exploreze software-ul său și
esență hardware. Ei bine, proiectat și creat pe baza unei cunoștințe familiare și
Reader-ul Linux, cititorul de cărți Sony PRS-505 oferă o gamă largă de funcții
experimente și creativitate.

UART - acest mecanism simplu vă permite să transferați mai multe
bytes. Într-una din emisiunile anterioare ale revistei, Serghei Dolin a scris în detaliu despre el
la rubrica "Phreaking".

Cititorul de carte Sony PRS-505 este un calculator portabil care are un standard
Ecran LCD sau OLED așa-numitul e-cerneală afișat pe cerneală electronică.

Un site bun despre e-cărți cu un forum minunat -
www.the-ebook.org.

Mai multe informații despre interiorul dispozitivului:

wiki.mobileread.com/wiki/Sony_Reader_hack.

Distribuiți acest articol cu ​​prietenii dvs.:







Articole similare

Trimiteți-le prietenilor: