Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Примонтировать FAT-образ прошивки классных часов!

Ср дек 18, 2019 22:02:09

Привет, радиокот!

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

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

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

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

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

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

Добавлено after 16 minutes 4 seconds:
Если отрезать первую часть до байта 0x770000 (tail --bytes=+7798785 fsimage.dat > fatdat), то утилита fatcat выводит некоторые файлы, например:
Код:
Listing path /
Directory cluster: 0
f 18/5/2018 12:30:18  S-BT-BIK.XML                   c=13495 s=4115 (4.01855K)
f 18/5/2018 12:30:18  s-bt-fgt.xml                   c=13504 s=3223 (3.14746K)
f 18/5/2018 12:30:18  s-bt-foo-set.xml               c=13511 s=2427 (2.37012K)
f 18/5/2018 12:30:18  s-bt-foo.xml                   c=13516 s=4948 (4.83203K)
f 18/5/2018 12:30:18  s-bt-hr.xml                    c=13526 s=5162 (5.04102K)
f 18/5/2018 12:30:18  s-bt-mob.xml                   c=13537 s=2198 (2.14648K)
f 18/5/2018 12:30:18  s-bt-pai.xml                   c=13542 s=3124 (3.05078K)
f 18/5/2018 12:30:18  s-bt-pow.xml                   c=13549 s=4307 (4.20605K)


Очевидно, что секторы в fsimage.dat перемешаны.

Re: Примонтировать FAT-образ прошивки классных часов!

Чт дек 19, 2019 00:09:17

тип часоф ты скрыл на каком хотяб они железе ? насчет мсдос 5 болшие сомнения не та это ос для жедезок...
линух вероятне там..или какниттьфриоска

Re: Примонтировать FAT-образ прошивки классных часов!

Чт дек 19, 2019 01:32:33

В бутлодере встречается запись fsl_os_abstraction_free_rtos.c -- может быть показателем ОС.

А 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 |................................|


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

Re: Примонтировать FAT-образ прошивки классных часов!

Чт дек 19, 2019 07:23:16

А платформа (SoC/МК) какая там известно?

Re: Примонтировать FAT-образ прошивки классных часов!

Чт дек 19, 2019 23:27:27

В бутлодере пару раз встречается упоминание MK65F18. Не знаю, это SoC/МК или какое-то вспомогательное устройство.

Добавлено after 11 minutes 54 seconds:
Должно быть там используется FatFs.

Re: Примонтировать FAT-образ прошивки классных часов!

Сб дек 21, 2019 00:38:34

Последние попытки связаться с устройством с помощью утилиты blhost не увенчались успехом. UART не отвечает, а по USB сразу выдаёт ошибку.

Re: Примонтировать FAT-образ прошивки классных часов!

Сб дек 21, 2019 05:28:59

я не понял ты это вытягивал через usb ? а сейчас оно не конектитца ???
паходук лодер грохнул...

Re: Примонтировать FAT-образ прошивки классных часов!

Сб дек 21, 2019 21:52:40

я не понял ты это вытягивал через usb ? а сейчас оно не конектитца ???
паходук лодер грохнул...

Нет. Я пробую разные способы получить рабочий образ внутренней памяти. Узнав, что сердце устройства MK65F18, я попытался воспользоваться родной утилитой для чтения памяти этого семейства МК-оа -- blhost. Но, часы, видимо, имеют изменённый бутлоадер, чтобы всякие умники, вроде меня, не имели доступ к устройству стандартными утилитами.

Заход с другой стороны -- восстановление порядка секторов в образе памяти. Пока в голове только смутные прототипы программы, которой буду сортировать. Это так себе вариант.

Третий заход -- сохранил поток данных во время процесса прошивки часов с ПК по UART. Довольно много времени потратил на расшифровку протокола, но есть результат -- прошивка заливается точно в таком же виде, в каком она представлена в файле fsimage.dat. То есть никакого плюса это не дало.

Вообще у меня такое предположение, что разработчики ПО для часов намеренно исковеркали fsimage.dat, чтобы усложнить процесс доступа ко внутренним программам.
Ответить