Dezasamblarea și asamblarea firmware-ului live wdtv

Am dat un link către scripturi și utilitare pentru a construi și a dezasambla firmware-ul. Folosesc acest set pentru a funcționa. Fișierul md5sum.txt este întotdeauna re-creat cu comanda:






găsi -type f -print0 | xargs -0 md5sum> md5sum.txt


Această comandă trebuie executată la rădăcina firmware-ului despachetat. Apoi, din fișierul rezultat md5sum.txt șterg linia cu suma fișierului md5sum.txt.

În opinia mea, totul este extrem de simplu.


Omul nostru
off-line

Acest lucru apoi setați și utilizați-l, e ordinea utilizării lor, este diferit, totul dacă doriți exact ca Meiko calmari să-l configurați cu privire la operațiunea AD că ambele okazyvaetsya mult mai ușor de colectat decât firmware-ul. Iată un exemplu de așa ceva

găsi -type f -print0 | xargs -0 md5sum> md5sum.txt

Este necesar să se facă la rădăcina firmware-ului în sine. în dosarul wstvlive vă aud de la prima.

Știi, am fost deja convins de experiența mea amară că lipsa documentației normale conduce la marea de întrebări stupide și nu foarte multe. Vă pot da un exemplu despre mine. Știu că ți se pare că pun foarte multe întrebări stupide. DAR. Problema este că documentația verificată, completă și completă pentru dezasamblare și asamblare în WIN și LInux, într-un post sau în FAQ nu există. Cine scrie că chiar și fără meijik totul merge și cineva. Cineva verifică suma din imaginea colectată, apoi o dă deja în binar, o face cineva conform metodei. La cineva se adună și lucrează totul pentru 5 +, și care nu are nici un gugu, deși el a făcut bine. Și în cele din urmă, confuzie completă și multe întrebări. Aș scrie chiar și întrebările frecvente despre parsarea și colectarea în X dacă aș putea înțelege și dezasambla adevărul în această mizerie. Kashe și nici în caz contrar nu vei mai numi.

Prin urmare, vă rugăm să nu vă supărați, ci pur și simplu explicați în mod clar ce provine.

HOW-TO Asamblarea
În ceea ce privește utilizarea Linux în astfel de scopuri - cu siguranță adevărat.
Singura recomandată ar fi o altă opțiune. Nu doriți să instalați al doilea sistem de operare Linux (și este timpul să fie) - puteți utiliza LiveCD Ubuntu.
Acum până la capăt. (Tot ceea ce este sub traducerea practică a postului b-rad)
Avem firmware-ul oficial, și anume wdtvlive.bin
Din teoria (b-rad), firmware-ul are structura:

[32 Byte md5sum] [Imaginea fw cramfs] [16 semnătură octet]


primiți primii 32 de octeți din comanda md5sum
pentru a obține cramfs ele însele imaginea va ajuta cramfsck-16k și mkcramfs-16k
obțineți ultimii 16 octeți de semn script helpFW

["$ 1" == "" -o "$ 2" == ""] echo ": $ 0 " ieșirea 1

/ bin / echo -e -n "\ xCE \ xFA \ xBE \ xBA \ x02 \ x00 \ x00 \ x00"> $ 2
FS = "stat -c% s $ 1"
xFS = `echo 'ibase = 10; obase = 16; $ FS" | bc | tr -d # '\ n #' '
wc = "echo $ xFS" tr -d # '\ n #' | wc -m`
[$ wc -eq 7] xFS = "0 $ xFS"
FS = ""
pentru i în 6 4 2 0; face
FS = "$ FS \ x $"
făcut
FS = "$ FS \ x00 \ x00 \ x00 \ x00"
/ bin / echo -e -n $ FS cap -c 8 >> 2 $


și poate face o comandă executabilă

Așa că avem în directorul nostru de lucru (ls -l).


Să mergem.
Ideea este în valoare de manipulat în continuare ca root - dar este nuanțe pentru cei care urmează să se pronunțe în firmware-ul, și el înțelege că nu au existat probleme cu permishnom - în firmware toate drepturile la rădăcină. (deci facem de exemplu sudo su sub ubuntu)
1) Despachetați-l. Scurtați coșul de sursă la primele 32 de octeți și despachetați conținutul firmware-ului în directorul de stocare.


tail -c +33 wdtvlive.bin> wdtvlive.stripped.bin
./ cramfsck-16k -x dump wdtvlive.stripped.bin


completate
dar este mai bine ca unpacker-ul să nu jure (scurtează 32 în față și 16 în spate)


dd if = wdtvlive.bin de = wdtvlive.stripped.bin bs = 16 = 2 sări peste count = "$ (($ (stat -c% s wdtvlive.bin) / 16-3))"
./ cramfsck-16k -x dump wdtvlive.stripped.bin








2) Acum puteți introduce dump. este dezvăluit FS izproshi și editați ceea ce aveți nevoie, dar cu mintea (nu uitați să reveniți de aici până aici)
Și mai mult nuanță. dacă totuși trebuie să remediați acest lucru, trebuie să regenerați fișierul md5sum.txt, care se află în rădăcina comenzii de stocare (fiind în dump)

găsi -not -name "md5sum.txt" -type f -exec md5sum # '<># ' # '; #'> md5sum.txt


Am trecut punctul 2 în cadrul experimentului de asamblare / dezasamblare curate și am continuat la 2a
Dar dublu control - acesta generează un fișier de aceeași dimensiune, dar descrierile sunt sortate într-o ordine diferită, și se pare că pe checksum de md5sum.txt diferă unul de altul - aici momentul alunecos, ci o chestiune separată (la valoarea totală a tuturor imaginii s-au schimbat în cazul în care peregenerit md5sum proprii . chiar și o dumpă neatinsă.). Sau poate sa nu vina pentru sortarea non-identitate și hash nu se potrivesc cu fișierul real, astfel încât este descris în WDshnom md5sum.txt (care, teoretic, nu ar trebui să fie - întreb b a fost aparent nu funcționează, sau textier nu înseamnă nimic).

2a) Deoarece acest subiect este creat pentru a afișa identitatea sursei și a firmware-ului asamblat dezasamblat, nu schimb nimic în dump. dar îl recuperez imediat. Dar, în prealabil, voi elimina coșul original care nu ar interfera și pentru compararea ulterioară.


mkdir vechi
mv wdtvlive.bin vechi /
rm wdtvlive.stripped.bin

3) Colectăm firmware-ul

/ mkcramfs-16k dump / newFW.bin


newFW.bin aceasta este aceeași imagine [fw cramfs image] din teorie.
Ie Este necesar să se adauge în continuare 32 de octeți ai sumelor de control și în spatele 16 octeți ai semnăturii.

4) Generați o semnătură și atașați la newFW.bin.

/ signatureFW newFW.bin semnătura
pisică newFW.bin semnătură> newFWx.bin


5) Se calculează suma de control a semnatului newFWx.bin și se adaugă la micul (32 bytes) wdtvlive.bin

md5sum newFWx.bin | cap -c 32> wdtvlive.bin


6) Acum rămânem la copil restul - newFWx.bin (bine, ștergem gunoiul inutil)

pisică newFWx.bin >> wdtvlive.bin
rm newFW.bin newFWx.bin semnătură

7) Ai un wdtvlive.bin de lucru
Să verificăm suma de control cu ​​faptul că în vechiul / aruncat mai devreme.
md5sum wdtvlive.bin
0f3359690dbd5ff15c9d5c3aed53ffdc

md5sum vechi / wdtvlive.bin
0f3359690dbd5ff15c9d5c3aed53ffdc

Coincide - experimentul a fost un succes

Ne bucurăm de faptul că ceva clarificat și tratamente ne tratează la bere: o)
WMZ114867333413
WMR161810775332
WMU219453404899

WD TV Live (1.02.21 -..- 0.4.7.3)
Pentru bere: WM R161810775332 (frecare); WM Z114867333413 ($); WM U219453404899 (uah); YaMoney: 410011402801986
Filmsonline, rusă căutare -> Mail <- IPTV

înseamnă în mod intact
I-am dat o explicație a modului în care acesta poate fi diferit. (În cazul în care ceva sa schimbat în groapa de gunoi sau în cazul în care peregenerit proprii, vdshnikov kakayato de selectare a fișierului de secvență ciudat md5sum.txt internă)
Și nu confundați md5sum.txt din al doilea element și md5sum din 5
acestea sunt lucruri diferite.
md5sum.txt din al doilea element este un fișier în care sunt stocate sumele de control ale tuturor fișierelor firmware.
și calculul sumelor de control din al cincilea paragraf este un "fișier" de 32 octeți care conține suma de control a imaginii comprimate. Bineînțeles, dacă schimbăm ceva în interiorul imaginii, suma contului se va schimba.
-----
despre mușcătura unei imagini curate, fără primele 32 și ultimele 16 (primul punct al hautushka), atunci este posibil ca o alternativă să aplicăm acest lucru:

dd if = wdtvlive.bin din = wdtvlive.stripped.bin bs = 16 count = ityouyou skip = 2


în care se oooooo înlocuit cu dimensiune wdtvlive.bin (în octeți) împărțită la 16 și scade 3. (Ie învețe Max 16 blocuri de octeți, și scade primele 2 și ultima.). Dimensiunea arată cel puțin ls -l
Este posibil și într-un script să se întoarcă, dar lenea. și așa cum sa dovedit pentru cazul nesosbo și ai nevoie - vseravno unpacker vornning dă.

WD TV Live (1.02.21 -..- 0.4.7.3)
Pentru bere: WM R161810775332 (frecare); WM Z114867333413 ($); WM U219453404899 (uah); YaMoney: 410011402801986
Filmsonline, rusă căutare -> Mail <- IPTV


Omul nostru
off-line

Și am o astfel de greșeală -

rădăcină @ inetka-desktop: / home / inetka / wdtvlive / wdtvtools # ./unpack.sh
1728000 + 1 înregistrări citite
1728000 + 1 intrări scrise
copiat 55296016 octeți (55 MB), 13,6543 c, 4,0 MB / c
./ cramfsck: 3: Eroare de sintaxă: "(" neașteptat
deși
rădăcină @ inetka-desktop: / home / inetka / wdtvlive / wdtvtools # ls
cramfsck magic.bin mkcramfs pack.sh signFW unpacked.img unpack.sh wdtvlive.bin wdtvlive.stripped.bin
ca totul este acolo.


Omul nostru
off-line

Opunând să colecteze ceva colectat, chiar instalat, dar modulele copiate nu s-au ridicat și fișierul nu a început. Poate cineva să-mi spună cum să foc lemn în mod corespunzător pentru vafe sau să scot din firmware off?

Gastello
ia Brad sau de versiune pentru a înlocui numărul cu unul mai mare și flash-l.
ci despre module. unde au reușit (noi sunt necesare)? ceva ce mi-a ratat momentul când cineva le-a compilat din sursa pentru arhitectura mopului găleții.
Vlad55123
./ cramfsck: 3: Eroare de sintaxă: "(" neașteptat
astfel de întrebări indică de obicei o lipsă de pregătire pentru eviscerarea firmware-ului așa de rău
Dar dacă chiar vrei. atunci este posibil să se dea aici care arată ls -l (și plus la ce sistem este îndeplinită)
Și nu ar trebui să amestecați metodele diferitelor postere, urmați unul (mă uit la conținutul dosarului).

WD TV Live (1.02.21 -..- 0.4.7.3)
Pentru bere: WM R161810775332 (frecare); WM Z114867333413 ($); WM U219453404899 (uah); YaMoney: 410011402801986
Filmsonline, rusă căutare -> Mail <- IPTV


Trimiteți-vă prietenilor în rețelele sociale:







Trimiteți-le prietenilor: