LINUX.ORG.RU

Примонтировать образ FAT32(?) — прошивка классных часов!

 ,


1

2

Привет, друзья!

Имеются надёжные, добротные, классные по многим параметрам спортивные часы с GPS (фирму писать не буду, ибо не реклама). Хотя и стоят недёшево, но разработчики на мои просьбы не обращают внимания – выходят новые прошивки без учёта фич-запросов. Выходит, что самому нужно дорабатывать.

Прошивки достать довольно просто. Очень вас прошу посмотреть файлик. Forssa-fw_2.0.40.2163-B.zip. Это zip-архивчик, в котором наиболее интересный файлик – Amsterdam.bin. Это образ файловой системы устройства.

Встречающиеся слова MSDOS5.0, FAT32, NO LABEL как бы намекают, что файловая система – FAT. Изучил структуру, пробовал, нет – бился с монтированием, но всё бестолку. Знаний и опыта не хватает.

imagemagick находит много правильно оформленных XML-файлов, из которых понятно, как функционируют внутренние программы. Если HEX-редактором подправить несколько значений, подменить контрольную сумму в файлике manifest.json, то часы такую прошивку кушают, а это вселяет большую надежду. Но буквально 3 дополнительных слова, и уже всё сыпется :(

Очень вас прошу посмотреть, как бы примонтировать эту ФС для открытия сезона радости программирования любимого устройства.

P.S.
Много времени потратил на другом пути: расшифровывал команды общения ПК с часами по проводу (COM-порт). Думал, что кроме имеющихся в архиве файлов с нэта подгружается дополнительный секретный кусок. Ничего подобного. Что есть в архиве – это и есть вся прошивка. Но начинается образ как-то совсем странно. Руки опускаются, прошу помощи.

★★

Последнее исправление: rmu (всего исправлений: 3)

Ну ок, ищем этот MSDOS5.0 в каком-нибудь HEX редакторе, например ghex - там он по смещению 0x770003 Смотрим какое-нибудь описание fat файловой системы:

https://www.win.tue.nl/~aeb/linux/fs/fat/fat-1.html

Here the FAT12 version, that is also the common part of the FAT12, FAT16 and FAT32 boot sectors. See further below.

Bytes   Content
0-2     Jump to bootstrap (E.g. eb 3c 90; on i86: JMP 003E NOP.
        One finds either eb xx 90, or e9 xx xx.
        The position of the bootstrap varies.)
3-10    OEM name/version (E.g. "IBM  3.3", "IBM 20.0", "MSDOS5.0", "MSWIN4.0".
        Various format utilities leave their own name, like "CH-FOR18".
        Sometimes just garbage. Microsoft recommends "MSWIN4.1".)
        /* BIOS Parameter Block starts here */

Ну вот по смещению 0x770003 идет OEM name/version, по смещению 0x770000 там два байта Jump to bootstrap

Можно тупо срезать начальные байты, чтоб файл начинался с этого вот

00770000  eb 3c 90 4d 53 44 4f 53  35 2e 30 00 02 01 08 00  |.<.MSDOS5.0.....|
00770010  02 00 02 d4 71 f0 74 00  00 00 00 00 00 00 00 00  |....q.t.........|
00770020  00 00 00 00 00 00 29 7d  a7 5d d4 4e 4f 20 4c 41  |......)}.].NO LA|
00770030  42 45 4c 20 20 20 46 41  54 31 36 20 20 20 00 00  |BEL   FAT16   ..|
00770040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
получится так
$ tail --bytes=+7798785 fsimage.dat > fatdat
$ file fatdat 
fatdat: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID «MSDOS5.0», reserved sectors 8, root entries 512, sectors 29140 (volumes <=32 MB), sectors/FAT 116, sectors/track 0, reserved 0x1, serial number 0xd45da77d, label: «NO LABEL   », FAT (16 bit)
Но если втупую подмонтировать этот образ fatdat через mount -o loop fatdat test/ то там будет какой-то мусор вместо имен файлов. Вероятно, они там куски этой файловой системы FAT разбросали как-то. Можно поискать Directory Entry в этом файле

Пример из https://www.win.tue.nl/~aeb/linux/fs/fat/fat-1.html :

1.4 Directory Entry

An example (6 entries on the same MSDOS floppy):

0009728 49 4f 20 20 20 20 20 20 53 59 53 27 00 00 00 00  IO      .SYS
0009744 00 00 00 00 00 00 08 5d 62 1b 1d 00 16 9f 00 00
0009760 4d 53 44 4f 53 20 20 20 53 59 53 27 00 00 00 00  MSDOS   .SYS
0009776 00 00 00 00 00 00 08 5d 62 1b 6d 00 38 95 00 00
0009792 43 4f 4d 4d 41 4e 44 20 43 4f 4d 20 00 00 00 00  COMMAND .COM
0009808 00 00 00 00 00 00 07 5d 62 1b b8 00 39 dd 00 00
0009824 44 42 4c 53 50 41 43 45 42 49 4e 27 00 00 00 00  DBLSPACE.BIN
0009840 00 00 00 00 00 00 08 5d 62 1b 27 01 f6 fc 00 00
0009856 4d 53 44 4f 53 20 20 20 20 20 20 28 00 00 00 00  MSDOS
0009872 00 00 00 00 00 00 1a 88 99 1c 00 00 00 00 00 00
0009888 46 44 49 53 4b 20 20 20 45 58 45 20 00 00 00 00  FDISK   .EXE
0009904 00 00 00 00 00 00 36 59 62 1b 02 00 17 73 00 00

На всякий случай поясню: 49 4f 20 20 20 20 20 20 53 59 53 27 - 49 4f это имя без расширения IO, потом куча 20 и потом 53 59 53 это расширение SYS - т.е. имя кодируеся вот таким образом.

В прошивке явно есть некие XML файлы. Их можно найти, например поищи последовательность 20 58 4D 4C - по смещению 0x1A0260 можно найти что есть такой файл S-GE.XML, там еще есть S-MAIN.XML, S-NF.XML и так далее. В общем надо как-то из этого собрать FAT образ чтоб его можно было подмонтировать, где-то там должна быть File Allocation Table и прочее, это надо в правильном порядке состыковать и тогда что-то будет монтироваться

SZT ★★★★★
()
Последнее исправление: SZT (всего исправлений: 1)

Если посмотреть вывод strings bootBootloader.bin то там можно найти строку instance < sizeof(portGateTable)/sizeof(portGateTable[0]) - поискав в гитхабе эту строку, можно найти некий Kinetis SDK

SZT ★★★★★
()
Ответ на: комментарий от SZT

Спасибо тебе огромное, добрый человек!
Занимался прошивкой, наверно, полгода назад, всё позабывал уже. Сейчас время нашлось. Попробую с твоими рекомендациями порыться.

rmu ★★
() автор топика
Ответ на: комментарий от rmu

Ну тут разбираться надо, может быть там файловая система фрагментирована. Хотя по-моему в смарт-часах с таким контроллером ФС вообще незачем использовать, разве что кроме случаев если эту ФС надо как флеш-накопитель с компа открывать подключением по USB.

SZT ★★★★★
()
Последнее исправление: SZT (всего исправлений: 1)

На сколько я понимаю, в корне должны быть директории:

UI
SETTINGS
ACTITMLN
FIRMWARE
ANALYTIX
SLEEPLN

Возможно, в ФС они имеют имена типа analy.tix.

rmu ★★
() автор топика
Последнее исправление: rmu (всего исправлений: 1)
Ответ на: комментарий от SZT

может быть там файловая система фрагментирована

Местами файлы разрываются бинарными вставками.

rmu ★★
() автор топика

Часики на FreeRTOS (в бутлодере есть упоминание «fsl_os_abstraction_free_rtos.c»).

rmu ★★
() автор топика

Может быть посоветуете форум, где смогут ответить на поставленный вопрос?

rmu ★★
() автор топика
Ответ на: комментарий от anonymous

FAT16 там 100%. fsimage.dat состоит из перемешанных в кашу секторов по 512 байт. Например, первый сектор:

770000: eb 3c 90 4d 53 44 4f 53 35 2e 30 00 02 01 08 00 02 00 02 d4 71 f0 74 00 00 00 00 00 00 00 00 00 |.<.MSDOS5.0.........q.t.........|
770020: 00 00 00 00 00 00 29 7d a7 5d d4 4e 4f 20 4c 41 42 45 4c 20 20 20 46 41 54 31 36 20 20 20 00 00 |......)}.].NO LABEL   FAT16   ..|
770040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................................|
770060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................................|
770080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................................|
7700a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................................|
7700c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................................|
7700e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................................|
770100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................................|
770120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................................|
770140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................................|
770160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................................|
770180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................................|
7701a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................................|
7701c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................................|
7701e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............................U.|

Но лежит он ближе к концу файла. Пример сектора, содержащего информацию о каталогах:

7f0200: 41 61 00 63 00 74 00 69 00 74 00 0f 00 46 6d 00 6c 00 6e 00 00 00 ff ff ff ff 00 00 ff ff ff ff |Aa.c.t.i.t...Fm.l.n.............|
7f0220: 41 43 54 49 54 4d 4c 4e 20 20 20 10 00 00 c9 63 b2 4c b2 4c 00 00 c9 63 b2 4c 02 00 00 00 00 00 |ACTITMLN   ....c.L.L...c.L......|
7f0240: 41 61 00 6e 00 61 00 6c 00 79 00 0f 00 a8 74 00 69 00 78 00 00 00 ff ff ff ff 00 00 ff ff ff ff |Aa.n.a.l.y....t.i.x.............|
7f0260: 41 4e 41 4c 59 54 49 58 20 20 20 10 00 00 c9 63 b2 4c b2 4c 00 00 c9 63 b2 4c 05 00 00 00 00 00 |ANALYTIX   ....c.L.L...c.L......|
7f0280: 41 66 00 69 00 72 00 6d 00 77 00 0f 00 8c 61 00 72 00 65 00 00 00 ff ff ff ff 00 00 ff ff ff ff |Af.i.r.m.w....a.r.e.............|
7f02a0: 46 49 52 4d 57 41 52 45 20 20 20 10 00 00 c9 63 b2 4c b2 4c 00 00 c9 63 b2 4c 0b 00 00 00 00 00 |FIRMWARE   ....c.L.L...c.L......|
7f02c0: 41 73 00 65 00 74 00 74 00 69 00 0f 00 f8 6e 00 67 00 73 00 00 00 ff ff ff ff 00 00 ff ff ff ff |As.e.t.t.i....n.g.s.............|
7f02e0: 53 45 54 54 49 4e 47 53 20 20 20 10 00 00 c9 63 b2 4c b2 4c 00 00 c9 63 b2 4c 22 06 00 00 00 00 |SETTINGS   ....c.L.L...c.L".....|
7f0300: 41 73 00 6c 00 65 00 65 00 70 00 0f 00 7e 6c 00 6e 00 00 00 ff ff ff ff ff ff 00 00 ff ff ff ff |As.l.e.e.p...~l.n...............|
7f0320: 53 4c 45 45 50 4c 4e 20 20 20 20 10 00 00 c9 63 b2 4c b2 4c 00 00 c9 63 b2 4c 48 0d 00 00 00 00 |SLEEPLN    ....c.L.L...c.LH.....|
7f0340: 41 75 00 69 00 00 00 ff ff ff ff 0f 00 f8 ff ff ff ff ff ff ff ff ff ff ff ff 00 00 ff ff ff ff |Au.i............................|
7f0360: 55 49 20 20 20 20 20 20 20 20 20 10 00 00 c9 63 b2 4c b2 4c 00 00 c9 63 b2 4c 4c 0d 00 00 00 00 |UI         ....c.L.L...c.LL.....|
7f0380: 41 72 00 6f 00 75 00 74 00 65 00 0f 00 a2 6c 00 73 00 74 00 2e 00 73 00 62 00 00 00 6d 00 00 00 |Ar.o.u.t.e....l.s.t...s.b...m...|
7f03a0: 52 4f 55 54 45 4c 53 54 53 42 4d 00 00 00 c9 63 b2 4c b2 4c 00 00 c9 63 b2 4c 00 00 00 00 00 00 |ROUTELSTSBM....c.L.L...c.L......|
7f03c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................................|
7f03e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................................|
rmu ★★
() автор топика
Ответ на: комментарий от rmu

Сектора перемешаны в кашу. Задача состоит в том, чтобы каким-то образом выстроить их в правильном порядке.

rmu ★★
() автор топика
Ответ на: комментарий от rmu

Наверняка есть какие-то форумы, где в основном с реверсом железок ковыряются https://www.exploitee.rs/index.php/Main_Page - у них есть форум https://forum.exploitee.rs/

Но не думаю что там тебе бесплатно соберут монтируемый FAT образ. За этим еще можно обратиться к тем людям, которые восстановлением данных с битых винчестеров занимаются. Может быть на https://rlab.ru/forum/ что-то подскажут. Я со структурой FAT не знаком особо

SZT ★★★★★
()
Последнее исправление: SZT (всего исправлений: 1)
Ответ на: комментарий от SZT

Вопрос задам, а там посмотрю: помогут / не помогут.

Спасибо!

rmu ★★
() автор топика
Ответ на: комментарий от SZT

Открыл топики на русских и англоязычных форумах – ничего толкового не подсказали.

Думал посмотреть в сторону свободных прошивок часов, но родная утилита blhost для работы с микроконтроллером MK65F18 не коннектится – видимо, защита какая-то стоит.

rmu ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.