add dumping flash via SD card.

pull/11/head
Paul Philippov 2022-02-12 21:00:16 -05:00
parent 575fedd142
commit c018f7a9d5
1 changed files with 53 additions and 0 deletions

View File

@ -64,6 +64,59 @@ screen -r
[binwalk](https://github.com/ReFirmLabs/binwalk) и использовать для дальнейшего
изучения или для восстановления камеры в её оригинальный вид.
#### Сохранение прошивки через SD карту.
Бывает, что у камеры есть только беспроводной доступ, который не работает
напрямую из загрузчика. Очень часто такие камеры имеют разъём для внешней карты
памяти формата microSD. В таком случае можно попробовать получить копию
оригинальной прошивки используя карту как носитель-посредник. Объем данных,
которые вам потребуется сохранить -- не более 16 МБ, поэтому подойдет любая
доступная карта, даже самого маленького объема.
Вставьте карту в соответствующий разъем на камере, подключите серийный адаптер
к порту UART, подайте питание на камеру и остановите процесс загрузки так,
чтобы оказаться в консоли загрузчика.
Инициализируйте доступ к карте, и очистите место для сохранения копии прошивки.
Запись на карту производится блоками по 512 байтов. Для очистки 8 МБ вам
потребуется стереть 16384 таких блоков, а для 16 МБ - 32768, что в
шестнадцатеричном представлении будет 0x4000 и 0x8000, соответственно.
Обратите внимание, что мы используем прямой доступ к регистрам карты, минуя
таблицу разделов. Чтобы избежать конфликтов при обращении к данным карты, мы
будем записывать данные пропустив 8 килобайтов от начала (8 * 1024 = 8192 байтов
или 16 блоков по 512 байтов, или 0x10 блоков в шестнадцатеричном представлении)
```
mmc dev 0
mmc erase 0x10 0x8000
```
Теперь вам надо скопировать содержимое прошивки из микросхемы флэш-памяти в
оперативную память камеры. Для этого очистите участок оперативной памяти
(0x800000 байтов для микросхем объемом 8 МБ или 0x1000000 байтов для микросхем
объемом 16 МБ), получите доступ к микросхеме флэш-памяти и скопируйте весь объем
флэш-памяти в очищенное пространство оперативной памяти. После чего сохраните
скопированные данные из оперативной памяти на карту.
NB! В примере мы используем стартовый адрес 0x2000000, но этот параметр может
отличаться у разных моделей камер.
```
mw.b 0x2000000 ff 0x1000000
sf probe 0
sf read 0x2000000 0x0 0x1000000
mmc write 0x2000000 0x10 0x8000
```
Выньте карту из камеры и вставьте в компьютер с операционной системой Linux.
Используя команду `dd` скопируйте данные с карты в бинарный файл на диске
компьютера.
```
dd bs=512 skip=16 count=32768 if=/dev/sdc of=./fulldump.bin
```
### Обход запароленного загрузчика.