Розбирання та збирання прошивки wdtv live

Я ж давав посилання зі скриптами і утилітами для збирання і розбирання прошивки. У мене за допомогою цього набору все працює. Файл md5sum.txt завжди перестворює командою:

find -type f -print0 | xargs -0 md5sum> md5sum.txt


Цю команду треба виконувати перебуваючи в корені розпакованої прошивки. Потім з отриманого файлу md5sum.txt я видаляю рядок із сумою файлу md5sum.txt.

По-моєму все гранично просто.


Наша людина
В онлайні

Цим то набором і користуюся, ось порядок їх використання, це інше, це якщо хотіти все рівно, що мейк squid НЕ сконфігурованої його на роботу AD, що як оказиваеться значно простіше ніж зібрати прошивку. Ось наприклад то що

find -type f -print0 | xargs -0 md5sum> md5sum.txt

Треба робити в корені самої прошивки тобто в папці wstvlive я від вас сдеся чую в перші.

Знаєте, я вже переконався на своєму гіркому досвіді, що відсутність нормальної документації і веде до моря дурних і не дуже питань. Можна привести пв приклад мене. Я знаю, що Вам здається, що я задаю дуже багато дурних питань. АЛЕ. Біда в тому, що перевіреної, повної і зведеної документації з розбирання та збирання в WIN і LInux, в одному пості або в FAQ просто немає. Хто пише, що і без Мейджика все йде, а у кого-то. Хтось перевіряє суму з зібраного образу, а потім котить його вже в бінарник, хтось робить на вашу методу. У кого то збирається і працює все на 5 +, а у кого то ні гу-гу, хоч і робив як треба. І в підсумку повний розбрід і купа запитань. Я б навіть сам написав FAQ по розбору і збору в іксах, якби зумів зрозуміти і розібрати в цій каші істину. Каші і ні як по іншому не назвеш.

З цього прошу не сердитися, а просто чітко пояснити, що звідки випливає.

HOW-TO Збірка розбирання прошивки
З приводу використання Linux для таких цілей - однозначно вірно.
Єдино рекомендував би ще варіант. Чи не хочете встановлювати другий операционкой Linux (а давно пора було) - можна використовувати LiveCD Ubuntu.
Тепер до справи. (Все що нижче практично переклад поста b-rad)
Маємо офіційну прошивку а саме wdtvlive.bin
З теорії (викладеної b-rad) прошивка має структуру:

[32 Byte md5sum] [fw cramfs image] [16 Byte signature]


отримати перші 32 байта допоможе команда md5sum
отримати сам cramfs образ допоможуть cramfsck-16k і mkcramfs-16k
Одержати останні 16 байт допоможе скрипт signFW

[ "$ 1" == "" -o "$ 2" == ""] echo "usage: $ 0 " exit 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 = ""
for i in 6 4 2 0; do
FS = "$ FS \ x $"
done
FS = "$ FS \ x00 \ x00 \ x00 \ x00"
/ Bin / echo -e -n $ FS | head -c 8 >> $ 2


і можемо зробити його виконуваним командою

Отже маємо в нашому робочому каталозі (ls -l).


Поїхали.
За ідеєю далі маніпулювати коштує від рута - але це нюанси для тих хто щось збирається правити в прошивці і сам розуміє що б не було проблем з пермішном - в прошивці все права на рута. (Тому робимо наприклад sudo su під Убунту)
1) Розпаковуємо. Укорочуємо на перші 32 байта вихідний бін і розпаковуємо вміст прошивки в каталог dump.


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


доповнено
а краще ось так, що б распаковщик не лаявся (укорочуємо на 32 спереду і на 16 ззаду)


dd if = wdtvlive.bin of = wdtvlive.stripped.bin bs = 16 skip = 2 count = "$ (($ (stat -c% s wdtvlive.bin) / 16-3))"
./ Cramfsck-16k -x dump wdtvlive.stripped.bin


2) Тепер можете заходити в dump. там розкрита ФС офпроші, і правити що вам потрібно, але з розумом (не забуваємо повернутися звідти сюди)
І yoще ньюанс. якщо таки щось поправили треба ще перегенеріть файлик md5sum.txt що в корені dump командою (перебуваючи в dump)

find -not -name "md5sum.txt" -type f -exec md5sum # '<># ' # '; #'> Md5sum.txt


Я пункт 2 в рамках експерименту по чистій збірці / расборке пропускав і переходив до 2а
Але перевіряв - генерітся файл того ж розміру, але опису відсортовані в іншому порядку і мабуть з цього контрольні суми самого md5sum.txt відрізняються один від одного - тут слизький момент але окрема тема (до того що загальна сума всього способу таки зміниться якщо перегенеріть самостійно md5sum .txt навіть незайманого дампа.). А можливо не сортування винна в неидентичности а розбіжності контрольної суми реального файлу з тим що описано в WDшном md5sum.txt (чого теоретично не повинно бути - Проша б була мабуть не робоча, або цей текстовік нічого не означає).

2а) Оскільки даний топік створений що б показати ідентичність вихідної і розібратися-зібраної прошивки то я нічого не змінюю в dump. а відразу ж збираю назад. Але попередньо приберу вихідний бін що б не заважав, і для подальшого порівняння.


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

3) Збираємо прошивку

/ Mkcramfs-16k dump / newFW.bin


newFW.bin ця той самий [fw cramfs image] з теорії.
Тобто треба до нього попереду додати 32 байта контрольної суми і ззаду 16 байт підпису.

4) генерітся підпис (signature) і ліпити до newFW.bin.

/ SignFW newFW.bin signature
cat newFW.bin signature> newFWx.bin


5) Підраховуємо контрольну суму підписаного newFWx.bin і складаємо її в поки ще маленький (32байта) wdtvlive.bin

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


6) Тепер ліпити до малюка залишок - newFWx.bin (ну і видаляємо непотрібний вже сміття)

cat newFWx.bin >> wdtvlive.bin
rm newFW.bin newFWx.bin signature

7) Отримали робочий wdtvlive.bin
Звіримо його контрольну суму з тим що в old / кинули раніше.
md5sum wdtvlive.bin
0f3359690dbd5ff15c9d5c3aed53ffdc

md5sum old / wdtvlive.bin
0f3359690dbd5ff15c9d5c3aed53ffdc

Збігається - експеримент вдався

Радіємо від того що щось прояснилося і на радощах пригощаємо мене пивом: о)
WMZ114867333413
WMR161810775332
WMU219453404899

WD TV Live (1.02.21 -..- 0.4.7.3)
Для пива: WM R161810775332 (руб); WM Z114867333413 ($); WM U219453404899 (грн); Я.Money: 410011402801986
Filmsonline, російський пошук -> Мейл <- IPTV

значить неуважно
я давав роз'яснення від чого вона може бути різна. (якщо щось змінити в dump або якщо перегенеріть внутрішній md5sum.txt самостійно, у вдшніков якась дивна послідовність вибору файлів)
І не треба плутати md5sum.txt з 2-го пункту і md5sum з 5-го
це різні речі.
md5sum.txt з 2-го пункту це файл в якому зберігаються контрольні суми всіх файлів прошивки.
а підрахунок контрольної суми в 5-му пункті це "файл" з 32 байт містить контрольну суму стисненого образу. природно якщо щось міняємо всередині образу то і контр сума зміниться.
-----
з приводу викусиванія чистого іміджу без перших 32 і останніх 16 (1-й пункт хаутушкі) то можна як альтернативу таке застосувати:

dd if = wdtvlive.bin of = wdtvlive.stripped.bin bs = 16 count = yoёёёёё skip = 2


де yoёёёёё треба замінити на розмір wdtvlive.bin (в байтах) розділений на 16 і відняти 3. (Тобто дізнаємося кількість блоків по 16 байт і віднімаємо 2 перших і 1 останній.). Розмір дивимося хоча б ls -l
Можна це і в скрипт загорнути але лінь. і як виявилося для справи неособо і потрібно - всерівно распаковщик Ворнінг дає.

WD TV Live (1.02.21 -..- 0.4.7.3)
Для пива: WM R161810775332 (руб); WM Z114867333413 ($); WM U219453404899 (грн); Я.Money: 410011402801986
Filmsonline, російський пошук -> Мейл <- IPTV


Наша людина
В онлайні

А у мене така помилка -

root @ inetka-desktop: / home / inetka / wdtvlive / wdtvtools # ./unpack.sh
1728000 + 1 результатів лічено
1728000 + 1 результатів написано
скопійовано 55296016 байт (55 MB), 13,6543 c, 4,0 MB / c
./ Cramfsck: 3: Syntax error: "(" unexpected
хоча
root @ inetka-desktop: / home / inetka / wdtvlive / wdtvtools # ls
cramfsck magic.bin mkcramfs pack.sh signFW unpacked.img unpack.sh wdtvlive.bin wdtvlive.stripped.bin
ніби все є.


Наша людина
В онлайні

Мдя зібрати то зібрав, навіть встановилося, а ось скопірование модулі не встали і Фаля не відкривається. Може хто підкаже як правильно дрова для вафлі вшити або витягнути з офф прошивки?

Gastello
брати брадовскую або оф версію підмінити номер на більший і прошити.
а з приводу модулів вайфая. де це вони взялися (нові потрібні)? щось я пропустив момент коли їх хтось Компільо з початкових кодів для МІПС архітектури відра.
Vlad55123
./ Cramfsck: 3: Syntax error: "(" unexpected
такі питання зазвичай говорять про недостатню підготовленість для распотрошіванія прошивок вже соррі
Але якщо таки сильно хочеться. то можна видати сюди що показує ls -l (і плюс на якій системі виконується)
І не варто було б смешавать методи різних постерів, слідувати какойто однієї (це я дивлячись на вміст папки).

WD TV Live (1.02.21 -..- 0.4.7.3)
Для пива: WM R161810775332 (руб); WM Z114867333413 ($); WM U219453404899 (грн); Я.Money: 410011402801986
Filmsonline, російський пошук -> Мейл <- IPTV


Поділіться зі своїми друзями в соціальних мережах: