Перейти к содержанию
Old Phone Forum
  • Вход

    Вы сейчас не залогинены на форуме.

    Для возможности комментариев, загрузки файлов, подписок на ответы - вам надо войти.

Файловая система новых Swift (*.xz)


Рекомендуемые сообщения

Формат файлов .XZ (очередной формат дистрибутива файловой системы Swift, встречается например у C3782 - файл C3782XX_Open_Europe_Common_FS_1.xz).

 

Формат заметно проще чем .Image, .XZ это фактически развитие хорошо знакомого .TFS+.CFG, только .XZ состоит из одного файла и оптимизирован.

 

В начале 0x2000 байт заголовка, в основном из нулей:

 

+0x00 и +0x18 - одинаковое значение, равное размеру файла минус 0x2000.

Я подозреваю (по аналогии с QMDC) что одно из чисел размер несжатых данных, а второе - сжатых. Но в случае с C3782 - пока данные не сжимают - оба числа одинаковы…

 

+0x08 - там лежит 0xB0000000, не понятно что за число… У QMDC там было Load address, но тут к чему это?

 

+0x28 - там лежит 0x61, но я подозреваю что это не число, а буква «a» - имя диска для которого этот архив. Особенно учитывая что у QMDC в этом оффсете как раз тоже лежит имя партиции.

 

Остальные поля (где пока нули) видимо можно предполагать по аналогии с QMDC… И есть основания предполагать что в будущем файлы .xz будут ещё вдобавок запакованы аналогично…

 

 

Вобщем далее пропускаем (filesize-[+0x00]) = 0x2000…

Там +0x00 = 0 - непонятно пока

+0x04 = кол-во текстовых строк

+0x08 = начинается массив текстовых строк - имён папок и файлов. Строки разделены нулём. Иногда есть по несколько нулей подряд - их считать все вместе как один конец строки.

 

относительно заголовка +0x9C48 - индексный массив имён. Это порядковые номера строк (от вышеупомянутого текстового массива) и режим (1 если это каталог, 2 если после каталога надо взять имя файла). Правда пока не очень понятно как формируются сложные имена, там очень запутанная логика, и на примерено единственного файла от C3782 я не уверен что это будет верно для остальных файлов.

 

массив файлов лежит с +0xEA68 относительно заголовка (в данном примере это 0x10A68 абсолютное) и выглядит так:

4 байта размер, тело файла,

4 байта размер, тело файла,

4 байта размер, тело файла,

………

до самого конца XZ-файла, каких-либо ещё посторонних байт, EOF и прочего - нет.

 

 

Вобщем есть два вопроса:

 

1. в каких прошивках ещё есть эти .XZ-файлы?

Не понятно насколько стандартны упомянутые оффсеты +0x9C48 и +0xEA68… Надо их как-то вычислять или это константа.

 

2. вот пример распаковки индекса - XZ_from_file.txt и листинг с соседней мобилы которые более-менее аналогичен - XZ_sample_from_java.txt

xz1.rar

Есть идеи по алгоритму построения директорий?

Вот вся инфа в файле - наглядно показана в XZ_from_file.

На основании этого должно строится дерево файловой системы, но инфа очень неудобная, получается что надо постоянно помнить все вышестоящие уровни, и при новом уровне ("1") каждый раз его искать в истории - если был - то это подъём на 1 уровень вверх, если не было - то это создать папку уровнем ниже…

 

Spoiler

1 a

1 a

1 bt

1 bpp

2 icon - New_icon_B_1.jpg

2 icon - New_icon_B_10.jpg

2 icon - New_icon_B_11.jpg

2 icon - New_icon_B_12.jpg

2 icon - New_icon_B_2.jpg

2 icon - New_icon_B_3.jpg

2 icon - New_icon_B_4.jpg

2 icon - New_icon_B_5.jpg

2 icon - New_icon_B_6.jpg

2 icon - New_icon_B_7.jpg

2 icon - New_icon_B_8.jpg

2 icon - New_icon_B_9.jpg

2 icon - New_icon_Calendar_Title.jpg

2 icon - New_icon_Contact_man.jpg

2 icon - New_icon_Contact_Title.jpg

2 icon - New_icon_Email_Title.jpg

2 icon - New_icon_logo.jpg

2 icon - New_icon_Message_Title.jpg

2 icon - New_icon_T_1.jpg

2 icon - New_icon_T_10.jpg

2 icon - New_icon_T_11.jpg

2 icon - New_icon_T_12.jpg

2 icon - New_icon_T_2.jpg

2 icon - New_icon_T_3.jpg

2 icon - New_icon_T_4.jpg

2 icon - New_icon_T_5.jpg

2 icon - New_icon_T_6.jpg

2 icon - New_icon_T_7.jpg

2 icon - New_icon_T_8.jpg

2 icon - New_icon_T_9.jpg

2 icon - New_icon_T_title.jpg

2 icon - New_icon_T_title_S.jpg

1 bpp

2 temp - _dummy_

1 bpp

2 template - PrinterList.txt

2 template - tp_bpp_email_4x6.htm

2 template - tp_bpp_email_a4.htm

2 template - tp_bpp_image_4x6.htm

2 template - tp_bpp_image_a4.htm

2 template - tp_bpp_mms_4x6.htm

2 template - tp_bpp_mms_a4.htm

2 template - tp_bpp_MOBILE_DB_vcard_4x6.htm

2 template - tp_bpp_MOBILE_DB_vcard_a4.htm

2 template - tp_bpp_SMPB_vcard_4x6.htm

2 template - tp_bpp_SMPB_vcard_a4.htm

2 template - tp_bpp_sms_4x6.htm

2 template - tp_bpp_sms_a4.htm

2 template - tp_bpp_vcal_4x6.htm

2 template - tp_bpp_vcal_a4.htm

1 a

1 customer

1 images

2 GreetMsgImg - GreetImg.ifg

1 images

2 hstoolbar - home_screen_toolbar_arrow_L.ifg

2 hstoolbar - home_screen_toolbar_arrow_R.ifg

2 hstoolbar - home_screen_toolbar_empty.ifg

2 hstoolbar - home_screen_toolbar_menu_title_bg.ifg

2 hstoolbar - hstoolbar_alarm.ifg

2 hstoolbar - hstoolbar_application.ifg

2 hstoolbar - hstoolbar_application_bluetooth.ifg

2 hstoolbar - hstoolbar_application_browser.ifg

2 hstoolbar - hstoolbar_application_dictionary.ifg

2 hstoolbar - hstoolbar_application_fmradio.ifg

2 hstoolbar - hstoolbar_application_gameandmore.ifg

2 hstoolbar - hstoolbar_application_imageeditor.ifg

2 hstoolbar - hstoolbar_application_stopwatch.ifg

2 hstoolbar - hstoolbar_application_synchronise.ifg

2 hstoolbar - hstoolbar_application_timer.ifg

2 hstoolbar - hstoolbar_application_torch.ifg

2 hstoolbar - hstoolbar_application_videoeditor.ifg

2 hstoolbar - hstoolbar_application_voicerecorder.ifg

2 hstoolbar - hstoolbar_browser_myview.ifg

2 hstoolbar - hstoolbar_browser_playnet.ifg

2 hstoolbar - hstoolbar_calllog.ifg

2 hstoolbar - hstoolbar_camera.ifg

2 hstoolbar - hstoolbar_chaton.ifg

2 hstoolbar - hstoolbar_clock.ifg

  • Like 5

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Алгоритм парсинга индексного массива примерно такой:

Один элемент массива состоит из двух dword -

+0 = тип (может быть 1 или 2)

+4 = порядковый номер (ID) имени из массива строк.

 

если тип = 1 то

ищем ID в текущем пути директорий

если нашли - устанавливаем эту директорию дефолтной

если не нашли - создаём эту директорию в текущей дефолтной, и её назначаем дефолтной

 

если тип = 2 то всё тоже самое, тоже создаём директорию если надо. Но ещё создаём файлы в этой директории! Имя файла - запоминаем когда после тип1 появился тип2 - и далее инкрементируем том самый первый ID (который был у первого появления тип2).

 

Всё внимательно проверяем, есть такие сложные вот штуки в логике:

2 warp - warp_speedyweed.wrp

1 multimedia

2 test_mp3 - 1kHz_Left.mp3

2 test_mp3 - Right.mp3

2 multimedia - fakecall_dumy.amr

2 multimedia - fakecall_dumy2.amr

 

Ну а тела файлов - просто по порядку берём и записываем…

 

Вобщем, распаковщик .xz создан! Правда надо всё тщательно проверить на других прошивках, а не только C3782

Ну и в принципе формат вполне очевидный, каких-либо непонятных байт в нём нет - в теории можно и упаковщик сделать…

  • Like 1

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

B7722XE_Open_Europe_Slav_LFS.rc1, B7722_Open_Europe_Slav_OXE_SystemCSC.csc - Это не известный CSC (который просто переименованный TFS)… Заголовки у них как у .xz, однако там явная компрессия и соответствующие флаги… А внутри видимо такая же структура как у .xz…

 

Компрессия причём типа 0, для других прошивок тип 0 это было ZLib, но тут это не похоже на ZLib. И кстати основная прошивка 7722 ведь в quram, однако тут и Q-сигнатур нет… Короче пока не понятно, видимо ещё какой-то новый вариант компрессии.

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Заголовки у них как у .xz

Заголовки у них как у PAGE.

 

Компрессия причём типа 0, для других прошивок тип 0 это было ZLib, но тут это не похоже на ZLib.

Сигнатуры QMDC присутствуют...

Если в распаковщике указать тип компрессии 2 и режим PAGE - файлы распаковываются во что-то осмысленное.

В CSC, например, видны какие-то конфиги, текстовые ресурсы.

Но это очередной неизвестный формат ФС.

 

И кстати основная прошивка 7722 ведь в quram, однако тут и Q-сигнатур нет…

Где "тут" их нет?

Если помнишь, в PAGE идут сначала неупакованные блоки, сигнатуры будут чуть дальше.

  • Like 1
5073IA3.png
Ссылка на комментарий
Поделиться на другие сайты

Да, странно, мой распаковщик QMD это в режиме PAGE распаковывает ;-)

Но тогда получается что о поле +0x20 (Compression type) я ошибаюсь везде…

 

А формат ФС то более-менее очевиден - имена файлов, после них лежит абсолютный оффсет до тела файла и его размер. Несколько .png вычислил - вроде сходятся, сигнатуры PNG где и ожидалось… Для папок - лежит оффсет на имена файлов… Вобщем его не сложно будет читать.

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Распаковщик файлов .XZ

SwiftDiskXzUtil.png

SwiftDiskXzUtil_20120807.rar

  • Like 7

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

  • 9 месяцев спустя...

а запаковать то как обратно?)

Ну публичный запаковщик врядли будет - я не считаю что он нужен. Вообще формат более-менее описан выше, можешь сам написать запаковщик :)

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

Разгадан смысл .XZ

Туда вынесены те файлы которые не надо писать, а только читать и при этом читать часто.

Этот диск доступен только для чтения, и он компактно грузится в ОЗУ (по адресу partition_load_address) в том виде как есть.

 

Применительно к патчам - последовало два явления:

- Java Access не работает с таким диском. На примере E2252 - вход в диск-A приводит к ребуту (вход в диски B-C-D-E - всё нормально). В итоге облом с заменой тем оформления через яву (т.к. они лежат на /A/). Для замены тем у подобных мобил - придётся дописать и упаковку .XZ… Более того - для замены тем им вообще патчи не нужны, нужен только XZ-упаковщик.

- мастерпатч тоже соответственно, убирать с /A/user/ например на /B/customer/nvmgr/

  • Like 4

Нужен какой-то патч на C3322i, C3322, C3592, B5722, S5610, E1080, E1081, и прочие Swift/Infineon ? Обращайтесь в ЛС или E.F2065@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


×
×
  • Создать...