Перейти к содержимому


Фотография

Как Извлечь Cramfs Из Dff-Файла Прошивки ?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 18

#1 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 24 July 2019 - 13:24

Понадобилось поглядеть потроха старых и новых (относительно установленной у меня)прошивок (скрипты, бинари, скины и т.д.) без накатывания оных на дюну. Анализ dff-файла показал, что в него зашита cramfs, которая перемашана с двоичными данными (вот только неясно необходимость ли это или сделано намеренно), которые рушат всю структуру контейнера. После каждых 2032 байт идут 16 байт "лишних" данных с нарастающим индексом

00 10 00 00 01 01 00 00 01 00 00 00 F0 07 00 00
00 10 00 00 01 01 00 00 02 00 00 00 F0 07 00 00

***

00 10 00 00 01 01 00 00 10 00 00 00 F0 07 00 00
00 10 00 00 01 01 00 00 11 00 00 00 F0 07 00 00

которые включены на всём протяжении контейнера. Ближе к концу файла данные "метки" слегка меняют свой вид и возможно, расположение - этот момент я не прорабатывал.

Пока думаю над алгоритмом очистки cramfs-контейнера, решил поинтересоваться - существуют ли готовые решения для распаковки/запаковки dff ? Для dsf тулзы есть, мб есть и для dff ?

p.s. Если не затруднит - поделитесь /app/tango.cramfs от b6 и r11 102-й (не v2 и не 102p), если есть в наличии :)
Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует

#2 cup20

cup20

    Опытный комментатор

  • Пользователи
  • PipPipPipPipPip
  • 217 сообщений
  • Gender:Male

Отправлено 25 July 2019 - 09:19

Понадобилось поглядеть потроха старых и новых (относительно установленной у меня)прошивок (скрипты, бинари, скины и т.д.) без накатывания оных на дюну. Анализ dff-файла показал, что в него зашита cramfs, которая перемашана с двоичными данными (вот только неясно необходимость ли это или сделано намеренно), которые рушат всю структуру контейнера. После каждых 2032 байт идут 16 байт "лишних" данных с нарастающим индексомкоторые включены на всём протяжении контейнера. Ближе к концу файла данные "метки" слегка меняют свой вид и возможно, расположение - этот момент я не прорабатывал.

Пока думаю над алгоритмом очистки cramfs-контейнера, решил поинтересоваться - существуют ли готовые решения для распаковки/запаковки dff ? Для dsf тулзы есть, мб есть и для dff ?

p.s. Если не затруднит - поделитесь /app/tango.cramfs от b6 и r11 102-й (не v2 и не 102p), если есть в наличии :)

И на чисто 102-й и 102v2 (на обеих была b9) извлекал коммандой cp /app/tango.cramfs /D/tango.cramfs согласно документации. При сравнении с файлом прошивки видно его местонахождение, но как брать с самого файла прошивки не знаю - вопрос этот поднимался давно.



#3 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 25 July 2019 - 09:36

И на чисто 102-й и 102v2 (на обеих b9) извлекал коммандой cp /app/tango.cramfs /D/tango.cramfs согласно документации

Одно дело скопировать с дюны, другое дело - извлечь из dff. Я не хочу лишний раз насиловать флеш переустановками прошивок далеко не молодой дюны, потому и решил попросить контейнеры у форумчан, у кого он есть в наличии, дабы использовать в качестве эталона при распаковке dff.
Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует

#4 miouser

miouser

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 607 сообщений
  • Gender:Male
  • Location:Германия

Отправлено 25 July 2019 - 22:37

ответил на сигмаплеере  ;)


// TV-204 (200207_1901_r11) // SoloLite (190919_0242_r11) // Neo4k+ (210210_0331_r15) // 
 
OTTClub - SovokTV - Shara-TV - IP-TV.club - Еdеm TV - iptv.online - iTV - Sharavoz.tv

#5 gusav

gusav

    Пользователь

  • Пользователи
  • PipPip
  • 25 сообщений

Отправлено 21 April 2020 - 21:44

#!/bin/bash
var=22548992
mkdir extract
touch cramfs
while [ $var -lt 128190976 ] #размер прошивки в байтах
do
dd if=file_in of=extract/file-$var bs=1 skip=$var count=2032 #file_in - имя файла прошивки
cat cramfs extract/file-$var >> cramfs
rm -rf extract/file-$var
var=$(($var+2048))
done
rm -rf extract

Если еще актуально


Dune 301 (150721_0136_B9) Сист.флешка присутствует


#6 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 22 April 2020 - 02:34

Если еще актуально

Актуально :)

И я даже сваял тогда что-то похожее, только у меня использовался for вместо while, плюс там нужна ручная обрезка до начала cramfs через HEX, плюс я не выяснял, что там с cramfs ближе к концу файла т.к. метки меняют свой характер и их надо обрабатывать по иному, иначе будет нарушена структура контейнера, плюс весь процесс по причине однопоточности (вычёрпывание ванной чайной ложкой :lol:) может занимать часов 6-8, а то и больше. Поэтому я свернул все работы и отложил проект до лучших времён.
Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует

#7 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 07 May 2020 - 03:46

На сигма-форуме появился новый билд (V3.03a (2020-02-24) ) утилиты extract_smp86xx. Теперь можно распаковывать под win без заморочек. Респект разработчику.

Прикрепленные файлы


Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует

#8 sleik

sleik

    Пользователь

  • Пользователи
  • PipPip
  • 18 сообщений
  • Gender:Male

Отправлено 16 August 2020 - 23:53

Может кто-то знает, как потом это все запаковывать?



#9 miouser

miouser

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 607 сообщений
  • Gender:Male
  • Location:Германия

Отправлено 17 August 2020 - 01:08

@sleik

наверно как то так
// TV-204 (200207_1901_r11) // SoloLite (190919_0242_r11) // Neo4k+ (210210_0331_r15) // 
 
OTTClub - SovokTV - Shara-TV - IP-TV.club - Еdеm TV - iptv.online - iTV - Sharavoz.tv

#10 sleik

sleik

    Пользователь

  • Пользователи
  • PipPip
  • 18 сообщений
  • Gender:Male

Отправлено 17 August 2020 - 07:36

Эту инструкцию я читал наверное лет 5 назад(если не больше). В то время она мне очень помогла. Только это все не о том. Как собрать образ прошивки, файлы которые мы извлекли с помощью утилиты что была выше?



#11 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 17 August 2020 - 10:59

Эту инструкцию я читал наверное лет 5 назад(если не больше). В то время она мне очень помогла. Только это все не о том. Как собрать образ прошивки, файлы которые мы извлекли с помощью утилиты что была выше?

Пока никак. Разработчик обещал реализовать обратную сборку когда-нибудь в будущем. Зарегайтесь, поинтересуйтесь. Может чего изменилось.

 

При "ручной" пересборке основная проблема это забивка контейнера спустя каждые 2032 байта 16 байтами двоичных данных, распложенных по так до конца и неясному алгоритму (мне), плюс генерация контрольной суммы и её встраивание в прошивку. Для 101/301 пересобрать прошивку реально т.к. там нет этой набивки, но сам я этим не занимался и информация у меня лишь из вторых рук.


Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует

#12 Brigadir

Brigadir

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 4651 сообщений
  • Gender:Male
  • Location:Russia

Отправлено 17 August 2020 - 14:10

16 байтами двоичных данных

 

32 если верить. Вроде же только индекс инкременируется? Интересно насколько отличаются данные у разных прошивок.


Dune HD Pro 4K II (200710_1329_r15)
Dune HD Sky 4K Plus (200415_0403_r13)
Dune HD Base 3D (190919_0242_r11) Сист. флешка присутствует
Dune HD 303D (190919_0242_r11) Сист. флешка присутствует, тестовая
Dune HD TV-102 (n3ru_140722_1114_b8) Сист. флешка присутствует, тестовая
Dune HD TV-102 (150721_0136_b9) Сист. флешка присутствует, тестовая
-----------------------------------
Keenetic Giga (KN-1010)

Актуальная версия плагина Домашнее ТВ: v3.0.2 (06.03.2021)
Все мои (и не только) плагины Dune HD
Краткий обзор Pro 4K II
Краткий обзор Dune HD Neo 4K с картинками

(ЮMoney для благодарностей)

#13 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 18 August 2020 - 02:02

32 если верить.

Да, 32. Просто я считал первый блок не изменяемых данных до индекса, а это 16 байт, вот цифра в голове и засела :/ Пардон.

Вроде же только индекс инкременируется?

ХЗ. Знаю лишь только то, что "набивка" данных в начале контейнера имеет один формат, а ближе к концу - другой.

Интересно насколько отличаются данные у разных прошивок.

ХЗ. Не изучал данный вопрос :/
Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует

#14 sergiodbx

sergiodbx

    Пользователь

  • Пользователи
  • PipPip
  • 11 сообщений
  • Gender:Male
  • Location:Moscow

Отправлено 16 December 2020 - 10:22

Всем привет. Никто не подскажет какими командами можно извлечь, отредактировать и записать обратно squashfs из dff файла прошивки.

#15 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 24 December 2020 - 22:37

Всем привет. Никто не подскажет какими командами можно извлечь, отредактировать и записать обратно squashfs из dff файла прошивки.

Извлечь можно. Запаковать назад контейнер 102/303 из-за включённых данных (вероятно посредством хэширования) без воспроизведения алгоритма не представляется возможным. Пересобрать прошивку для 101-й, где нет "мусора" - реально (но я этим не занимался ибо у меня банально нет 101-й, а лишь переписывался с человеком который занимался данным вопросом). Напишите автору упомянутой в треде тулзы. Возможно произошли какие-то подвижки в решении даного вопроса.
Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует

#16 sergiodbx

sergiodbx

    Пользователь

  • Пользователи
  • PipPip
  • 11 сообщений
  • Gender:Male
  • Location:Moscow

Отправлено 07 January 2021 - 23:13


Извлечь можно. Запаковать назад контейнер 102/303 из-за включённых данных (вероятно посредством хэширования) без воспроизведения алгоритма не представляется возможным. Пересобрать прошивку для 101-й, где нет "мусора" - реально (но я этим не занимался ибо у меня банально нет 101-й, а лишь переписывался с человеком который занимался данным вопросом). Напишите автору упомянутой в треде тулзы. Возможно произошли какие-то подвижки в решении даного вопроса.


В dff файле прошивки 102/303 раздел tango.cramfs соответствует файлу mtd4 дампа. При этом 16 байтную «набивку» имеет только этот раздел. Мне удалось этот предварительно вырезанный в Winhex tango.cramfs разделить на собственно файл и «набивку» и затем собрать обратно. Дальше как я понял при помощи утилиты из сообщения #7 из cramfs извлекаются содержащиеся в ней файлы, которые можно редактировать. А вот как запаковать отредактированные данные обратно кто нибудь может подсказать ?

Координаты участника, который занимался переборкой прошивки можете дать ?

#17 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 08 January 2021 - 06:03

Мне удалось этот предварительно вырезанный в Winhex tango.cramfs разделить на собственно файл и «набивку» и затем собрать обратно

Если исходить из того, что "набивка" сделана путём некоего рехеша cramfs - контейнера, то "набивка" от старого контейнера бесполезна ибо тогда по идее не сойдутся контрольные суммы.

Координаты участника, который занимался переборкой прошивки можете дать ?

Так он занимался лишь 101-й, где нет этой "набивки".
Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует

#18 sergiodbx

sergiodbx

    Пользователь

  • Пользователи
  • PipPip
  • 11 сообщений
  • Gender:Male
  • Location:Moscow

Отправлено 09 January 2021 - 23:58

Если исходить из того, что "набивка" сделана путём некоего рехеша cramfs - контейнера, то "набивка" от старого контейнера бесполезна ибо тогда по идее не сойдутся контрольные суммы. Так он занимался лишь 101-й, где нет этой "набивки".


Я же выше написал, что «набивку» отделил от cramfs и теперь очищенный от «мусора» cramfs от 102 выглядит примерно также как и от 101. У меня также имеется cramfs от 101. Если я пойму, как пересобирается cramfs от101, то думаю что смогу пересобрать его и для 102. Ну и если все получится, смогу поделиться опытом с нуждающимися.

#19 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 10 January 2021 - 13:25

Я же выше написал, что «набивку» отделил от cramfs и теперь очищенный от «мусора» cramfs от 102 выглядит примерно также как и от 101.

"Набивку" от cramfs отделить не проблема. Это можно сделать и утилитой и скриптом. Проблема собрать "матрёшку" назад. Если это хеширование, то набивка от старого файла тупо не прокатит т.к. нужен рехеш файла по тому же алгоритму. Вы сравнивали "набивку" от других релизов 102/303 ? Она совпадает ? Байт в байт ? Если да, то такой подход прокатит, если нет, то без знания алгоритма вы будете бороться с ветряными мельницами.

У меня также имеется cramfs от 101. Если я пойму, как пересобирается cramfs от101, то думаю что смогу пересобрать его и для 102.

Весь трюк со 101-й в том, что контейнер там вклеен без каких-либо модификаций и особых проблем пересборка не должна составить, в отличии от 102-й.

Ну и если все получится, смогу поделиться опытом с нуждающимися.

В ЛС скинул контакт. Даже если не получится, то всё равно пишите. Это может помочь кому-нибудь продвинуться дальше и добить этот вопрос.
Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует