Видеорегистратор чип hi3516d восстановить прошивку


Обновление прошивок для IP камер от Xiong Mai

 

Китайские IP камеры занимают нижний и средний ценовые сегменты рынка. Сегодня пользователи могут приобрести мегапиксельные IP камеры хорошего качества и низкой цены у многих китайских производителей. Хотя изготовитель предоставляет стандартную техническую поддержку, вам будет интересно узнать побольше об этих IP камерах. В этой статье мы предоставляем немного профессиональной технической поддержки для этих IP камер.

1. Как обновить прошивку?

Большинство китайских IP камер основаны на модулях от Xiong Mai tech., поэтому эта статья будет применима и к другим IP камерам на этом решении, на процессорах: Hi3516C, Hi3518C и Hi3518E, а также Hi3516D/Hi3516A.

  • Модули камеры 1.0MP: IPG-50h20PL-S,IPG-50h20PL-AE,IPG-50h20PL-B, IPG-50h20PL-P
  • Модули камеры 1.0MP WDR: IPG-52h20PL-B, IPG-52h20PL-P
  • Модули камеры 1.3MP: IPG-53h23PES-SL, IPG-53h23PES-S, IPG-53h23PLS-S
  • Модули камеры 1.3MP Aptina CMOS: IPG-53h23PL-S, IPG-53h23PL-AE, IPG-53h23PL-B, IPG-53h23PL-P
  • Модули камеры 1.3MP Sony Low Light CMOS: IPG-53h23P-S, IPG-53h23P-АЕ, IPG-53h23P-B, IPG-53h23P-P
  • Модули камеры 2.0MP CMOS Low Light: IPG-53h30PL-S, IPG-53h30PL-АЕ, IPG-53h30PL-B, IPG-53h30PL-P
  • Модули камеры 4.0MP: IPG-83h50PL-B
  • Модули камеры 5.0MP Low Light: IPG-83H50P-B, IPG-83H50P-P
  • Модули камеры 1.0/1.3MP Hi3518E: IPG-50h20PE-S, IPG-50h20PE-SL, IPG-53h20PE-S, IPG-53h23PE-S
  • Модули камеры P2P IP: IPM-50h20PE-O (R), IPG-50h20PL-R, IPG-53h23PL-R
  • Модули камеры Wi-Fi: IPG-50h20PE-WP, IPG-53h23PE-WP
  • Панорамный модуль камеры: IPG-53M10F-B

Чтобы обновить прошивку IP камеры, нужно выяснить версию устройства. Для каждой камеры нужна своя прошивка. Чтобы узнать версию устройства IP камеры от Xiong Mai, нужно открыть веб-интерфейс камеры, затем выбрать [Device Config]> [Setting]> [Info]> [Version].

Из этого окна нам нужен номер после V4.02.R12. Этот номер содержит 17 цифр, разделённых точкой.

000 06 510 . 10010 . 1407

abc de fgh . jklmn . opqr

abc Идентификатор OEM производителя  
de Идентификатор платформы 00: TI, 01: Hisilicon 16M, 02: Hisilicon 8M (S38), 03: TI (_S models), 04: Ambarella, 05: Hisilicon 16M, 06: Hisilicon 8M (Hi3518E)
fgh Версия устройства  
j Облачный сервис 0: Нет; 1: Да
k Базовая видеоаналитика 0: Нет; 1: Да
l Продвинутая видеоаналитика 0: Нет; 1: Да
m ONVIF сервер (IPC) 0: Нет; 1: Да
n ONVIF клиент (NVR) 0: Нет; 1: Да
opqr R & D версия  

2. Где скачать последнюю версию прошивки для IPC

Лучше всего получить последнюю версию прошивки у вашего поставщика. Однако, некоторые производители, не предлагают эту услугу, так как использование неправильной прошивки может привести к непоправимому повреждению IP камеры. Примечание: Когда вы находитесь на странице загрузки прошивки, в правом верхнем углу есть выпадающий список, для удобства выберите "English". Прошивки регулярно обновляются, по ссылке загрузки вы всегда найдёте последнюю версию. Рекомендую добавить эту статью в закладки.

3. Как просматривать видеопоток на Firefox, Chrome, Opera и Safari?

Эти китайские IP камеры можно настроить только с помощью браузера Internet Explorer (IE). К счастью, вы можете использовать любе не-IE браузеры, для просмотра с IP камеры основного или дополнительного видеопотоков, без доступа к веб-интерфейсу камеры. Здесь мы покажем, как использовать Google Chrome для просмотра видеопотока IP камеры.

1. В первую очередь нужно включить плагин NPAPI.

  • Перейти по адресу chrome://flags/#enable-npapi
  • Выберите Enable.
  • В нижней левой части экрана, нажмите кнопку Перезагрузить.

Вы можете использовать этот флаг для запуска плагина NPAPI на Chrome начиная с версии 45.

2. Установите QuickTime Player на свой компьютер

3. Запустите Google Chrome, введите IP-адрес (по умолчанию: http://192.168.1.10:/login.htm) для доступа к видеопотоку IP-камеры.

4. Как сбросить настройки IP камеры?

Некоторые IP камеры имеют кнопку сброса, просто нажмите кнопку сброса в течение 5-10 секунд, камера автоматически сбросится на заводские настройки. Для IP камер, не имеющих кнопки сброса, вы можете использовать программу/утилита для сброса IP камеры к заводским установкам, если что-то пойдёт не так.

Вы можете скачать утилиту сброса здесь: ResetTool

Просто введите локальный IP адрес вашей IP камеры, и камера будет сброшена. Сброс займет не более 20 секунд, пока камера перезагружается. После того, как утилита выдаст Reset is OK. Имя пользователя и пароль будут сброшены по умолчанию (Пользователь: admin, пароль: пустой). Все настройки будут установлены в заводские, включая IP адрес (192.168.1.10). Примечание: утилита работает по протоколу telnet, который отключен в последних версиях прошивок, поэтому воспользоваться сбросом в таком случае может не удастся.

5. Как получить доступ к видеопотоку через RTSP?

Вы можете воспроизводить видеопоток IP камеры с помощью VLC Player и QuickTime Player. Для проигрывания видеопотока через RTSP для IP камер Xiong Mai вам нужно использовать следующие адреса URL:

Дополнительный поток (352x240 MJPEG):

rtsp://192.168.1.10/user=User&password=Password&channel=1&stream=1.sdp?real_stream--rtp-caching=100

Основной поток (1280x720 HD):

rtsp://192.168.1.10/user=User&password=Password&channel=1&stream=0.sdp?real_stream--rtp-caching=100

Руководство по воспроизведению RTSP потока: http://www.unifore.net/ip-video-surveillance/how-to-play-rtsp-video-stream-of-ip-cameras-on-vlc-player-quicktime- player.html

6. Как получить доступ к IP камере через Telnet?

Авторизованные пользователи могут получить доступ к IP камере по протоколу Telnet. Это скрытый интерфейс IP камер от Xiong Mai. Может оказаться альтернативой, если не удалось получить доступ к IP камере другими способами, включая веб-интерфейс, программу Device Manager и программу CMS.

Для пользователей Linux, вы можете использовать Telnet для доступа к IP камере с использованием пароля root. Подключившись по в Telnet введите команду netstat. Вы видите, что у этой сетевой камеры открыт порт 9527.

Для пользователей windows, можете использовать программу putty для доступа к IP камере.

1. Вы можете скачать putty отсюда.

2. После установки putty на компьютер, запустите программу и следуйте инструкциям ниже.

Введите IP адрес камеры в поле Host Name, выберите порт 9527, а затем выберите "Telnet" в качестве типа подключения.

Выберите пункт "Terminal" меню настроек на левой стороне, установите галочку на "Implicit CR in every LF".

Нажмите кнопку "Open", откроется новое окно с командной строкой, и вы можете использовать клавишу return. Дождитесь приглашения с запросом имени пользователя и пароля, введите действующий логин администратора и пароль.

После того, как вы вошли в систему, наберите "help", и вы увидите все доступные команды этой IP камеры.

Telnet очень полезная вещь для отладки IP камеры, особенно если вы не можете получить к ней доступ другими способами. Однако, Telnet также является потенциальной уязвимостью для взлома, так как передача данных не шифруется. В настоящее время не известно способа отключить интерфейс Telnet или отключить порт 9527.

Наконец, если вы используете RTSP ссылку для общественного пользования, вы не захотите светить реальный пароль, который используется для изменения настроек IP камеры через веб-интерфейс. Вы можете использовать шифрованный хэш пароля камеры, в качестве пароля RTSP для доступа к видеопотоку.

Чтобы узнать шифрованный пароль вашей IP камеры, нужно дать команду: user -user

Она выдаст учётные данные пользователя камеры, включая шифрованный хэш пароля пользователя. После получения хэш пароля, вы можете подставить его в адрес RTSP вместо раскрытия реального пароля администратора.

rtsp://192.168.1.10/user=admin_password=6QNMIQGe_channel=1_stream=0.sdp?real_stream

Статья написана по материалам с сайта Unifore.

www.cctvsp.ru

Распаковка, редактирование и упаковка прошивок видеорегистраторов и IP камер от Xiong Mai

Предыстория
Не так давно приобрёл на Aliexpress IP камеру (чип Hi3516 платформа 53h30L) и 16-канальный гибридный видеорегистратор (чип Hi3521 платформа MBD6508E). Оба выполнены на чипсете от HiSilicon, так что проблем с совместимостью между собой не испытывают. Разумеется, не обошлось и без глюков. Первый, и самый главный — у камеры криво работал WiFi — нельзя было подключиться к сети, если ключ был задан в HEX виде, а также периодически возникала проблема со шлюзом по умолчанию. Прошивка оказалась старая, ещё июньская. Раздобыл несколько свежих прошивок и попробовал. Некоторые оказались глючными, но одна заработала нормально. Возникла другая проблема — изменился пароль по умолчанию для telnet подключения. Этого я не стерпел и стал искать способы вернуть его обратно. Сразу предупрежу, что данный способ опробован на видеорегистраторах и камерах на чипах HiSilicon, но должен сработать и с другой платформой, так как китайцы широко используют загрузчик U-boot.
Распаковка
Инструкция по распаковке довольно подробно расписана в этой статье, но вот процесс упаковки нигде не описан, что и побудило меня написать этот пост. Расписываю по шагам, чтобы ничего не упустить: Ставим Linux, я выбрал ubuntu. Проверяем тип файла прошивки:[email protected]:~/firmware# file General_HZXM_IPC_HI3516C_53h30L_V4.02.R11.20131108_ALL.bin General_HZXM_IPC_HI3516C_53h30L_V4.02.R11.20131108_ALL.bin: Zip archive data, at least v2.0 to extract Распаковываем:[email protected]:~/firmware# unzip General_HZXM_IPC_HI3516C_53h30L_V4.02.R11.20131108_ALL.bin Archive: General_HZXM_IPC_HI3516C_53h30L_V4.02.R11.20131108_ALL.bin inflating: Install inflating: u-boot-all.bin.img inflating: web-x.cramfs.img inflating: custom-x.cramfs.img inflating: user-x.cramfs.img inflating: romfs-x.cramfs.img inflating: logo-x.cramfs.img inflating: InstallDesc Смотрим содержимое Install:{ "Commands" : [ "burn custom-x.cramfs.img custom", "burn romfs-x.cramfs.img romfs", "burn user-x.cramfs.img user", "burn logo-x.cramfs.img logo", "burn web-x.cramfs.img web" ], "Devices" : [ [ "53h30L", "1.00" ] ] } InstallDesc: "UpgradeCommand" : [ { "Command" : "Burn", "FileName" : "u-boot-all.bin.img" }, { "Command" : "Burn", "FileName" : "custom-x.cramfs.img" }, { "Command" : "Burn", "FileName" : "romfs-x.cramfs.img" }, { "Command" : "Burn", "FileName" : "user-x.cramfs.img" }, { "Command" : "Burn", "FileName" : "web-x.cramfs.img" }, { "Command" : "Burn", "FileName" : "logo-x.cramfs.img" } ], "Hardware" : "53h30L", "Vendor" : "General" } Слово u-boot-all наводит на мысль, что файлы img являются образами загрузчика U-boot, поэтому ставим соответствующий пакет:[email protected]:~/firmware# apt-get install u-boot-tools Смотрим, что за файлы у нас были в архиве:[email protected]:~/firmware# file u-boot-all.bin.img u-boot-all.bin.img: u-boot legacy uImage, linux, Linux/ARM, Firmware Image (gzip), 524288 bytes, Fri Nov 8 05:15:49 2013, Load Address: 0x00000000, Entry Point: 0x00080000, Header CRC: 0x8A551AA8, Data CRC: 0x8290AD90 [email protected]:~/firmware# file romfs-x.cramfs.img romfs-x.cramfs.img: u-boot legacy uImage, linux, Linux/ARM, OS Kernel Image (gzip), 4100096 bytes, Fri Nov 8 05:16:04 2013, Load Address: 0x00080000, Entry Point: 0x00580000, Header CRC: 0xD16AC90F, Data CRC: 0x54CDD868 [email protected]:~/firmware# file user-x.cramfs.img user-x.cramfs.img: u-boot legacy uImage, linux, Linux/ARM, OS Kernel Image (gzip), 7602112 bytes, Fri Nov 8 05:16:02 2013, Load Address: 0x00580000, Entry Point: 0x00CC0000, Header CRC: 0x106C19AD, Data CRC: 0x6D54ADA7 [email protected]:~/firmware# file web-x.cramfs.img web-x.cramfs.img: u-boot legacy uImage, linux, Linux/ARM, Standalone Program (gzip), 1572800 bytes, Fri Nov 8 05:15:51 2013, Load Address: 0x00CC0000, Entry Point: 0x00E40000, Header CRC: 0x87611FE5, Data CRC: 0x6BD90EBD [email protected]:~/firmware# file custom-x.cramfs.img custom-x.cramfs.img: u-boot legacy uImage, linux, Linux/ARM, Standalone Program (gzip), 262080 bytes, Fri Nov 8 05:15:49 2013, Load Address: 0x00E40000, Entry Point: 0x00E80000, Header CRC: 0xF7C82692, Data CRC: 0x5A27F74C [email protected]:~/firmware# file logo-x.cramfs.img logo-x.cramfs.img: u-boot legacy uImage, linux, Linux/ARM, Standalone Program (gzip), 262080 bytes, Fri Nov 8 05:15:47 2013, Load Address: 0x00E80000, Entry Point: 0x00EC0000, Header CRC: 0x4FE4A821, Data CRC: 0xF6671BD1 Прошу обратить внимание на два параметра Load Address и Entry Point. Я при первой сборке забыл их указать, они по умолчанию стали нулями, а это адрес загрузчика, который оказался затёрт после прошивки! Из-за этого я потратил лишний час на восстановление — пришлось снимать с улицы камеру, разбирать, и восстанавливать прошивку на программаторе. (Хотя камеру разбирал всё же не зря — добавил в кожух пакетик силикагеля, чтобы убрать возможную влагу из воздуха.)

Теперь небольшое пояснение: образ .img из данной прошивки является несколько изменённым образом файловой системы cramfs. Вот тут можно почитать поподробнее. Чтобы привести образ к нормальному виду, нужно отрезать 64 байта заголовка.

[email protected]:~/firmware# dd bs=1 skip=64 if=logo-x.cramfs.img of=logo-x.cramfs 262080+0 записей получено 262080+0 записей отправлено скопировано 262080 байт (262 kB), 0,891322 c, 294 kB/c Для остальных файлов команды аналогичные. Смотрим, что получилось:[email protected]:~/firmware# file logo-x.cramfs logo-x.cramfs: Linux Compressed ROM File System data, little endian size 28672 version #2 sorted_dirs CRC 0xe29e6340, edition 0, 199 blocks, 2 files Уже похоже на cramfs. Для работы с образами cramfs установим или обновим соответствующий пакет:[email protected]:~/firmware# apt-get install cramfsprogs Распаковываем образы:[email protected]:~/firmware# cramfsck -x logo logo-x.cramfs [email protected]:~/firmware# cramfsck -x user user.cramfs [email protected]:~/firmware# cramfsck -x romfs romfs-x.cramfs [email protected]:~/firmware# cramfsck -x web web-x.cramfs [email protected]:~/firmware# cramfsck -x custom custom-x.cramfs Каталоги я не создаю, они создадутся автоматически. Загрузчик так не распаковать, это не образ cramfs, но его и не надо трогать.
Что внутри
Быстренько пробегусь по содержимому каждого файла внутри архива прошивки:
  • InstallDesc — описывает действия, которые нужно произвести с этими файлами при обновлении прошивки, install-скрипт.
  • logo-x.cramfs.img — картинка в формате 800x600 с логотипом изготовителя, которая появляется при загрузке аппарата.
  • romfs-x.cramfs.img — собственно сама операционная система linux под архитектуру ARM
  • u-boot-all.bin.img — загрузчик U-boot
  • custom-x.cramfs.img — содержит наименование платформы и дополнительные настройки
  • user-x.cramfs.img — прикладной софт, в том числе Sofia — сама программа видеорегистратора
  • web-x.cramfs.img — картинки веб-интерфейса, web.cab — плагин для Internet Explorer с локализацией, логотипы производителя.
Нас интересует romfs-x.cramfs.img, так как именно там присутствует файл passwd, в котором хранится пароль. Вот его содержимое, желающие могут попробовать сбрутить:root:$1$RYIwEiRA$d5iRRVQ5ZeRTrJwGjRy.B0:0:0:root:/:/bin/sh Я же просто сгенерил новый хеш на сайте и поменял его в файле.
Собираем обратно
После сделанных изменений нужно всё запаковать обратно:[email protected]:~/firmware# mkcramfs romfs romfs-x.cramfs Directory data: 3624 bytes Everything: 4004 kilobytes Super block: 76 bytes CRC: 28c62b9b Помните, я заострял внимание на значениях Load Address и Entry Point? Самое время о них вспомнить и добавить в команду. Создаём образ U-boot:[email protected]:~/firmware# mkimage -A arm -O linux -T ramdisk -n "linux" -e 0x00580000 -a 0x00080000 -d romfs-x.cramfs romfs-x.cramfs.img Image Name: linux Created: Fri Feb 21 14:27:38 2014 Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 4100096 Bytes = 4004.00 kB = 3.91 MB Load Address: 00080000 Entry Point: 00580000 Кстати, чтобы обновить один модуль не обязательно прошивать всю прошивку, достаточно положить только нужный, и отредактировать файлы Install и InstallDesc, оставив только нужные строчки. Складываем полученные файлы в отдельный каталог, пусть это будет new. Даём команду:[email protected]:~/new# zip -D -X firmware.bin * adding: Install (deflated 22%) adding: InstallDesc (deflated 30%) adding: romfs-x.cramfs.img (deflated 0%) Всё, прошивка готова. Осталось только прошить её через web-интерфейс через пункт update
Предостережение
Выполняя рекомендации из этой статьи, вы делаете на ваш страх и риск. Автор не несет ответственности за ваши действия. Допустив ошибку при модификации прошивки вы легко можете получить кирпич, который можно будет восстановить только на программаторе. Поэтому, если не уверены в своих действиях, не делайте этого.
Ссылки
Burn-in рутовый шелл в IP-камерах Vesta и не толькоGNU/Linux и устройство на Rockchip 2918Hacking RAM disks

habrahabr.ru

Микровертолеты и FPV: Восстановление ProDVR/HMDVR

Совсем недавно получил шлем Eachine VR D2 со встроенным модулем DVR. Даже не успел сделать по нему обзор, как случилось несчастье. При попытке залить новую прошивку на DRV, последний перестал подавать признаки жизни. По простому - "окирпичился". Стал искать возможные способы восстановления работоспособности. Информации в интернете на эту тему очень мало, но нашлись добрые люди, которые указали в нужном направлении.

Сначала суть проблемы. Иногда у рекордеров ProDVR/HMDVR слетает прошивка. Это может произойти во время включения, во время обновления прошивки или по другой причине. Устройство просто перестает подавать признаки жизни и не реагирует на органы управления. Именно это у меня и случилось при обновлении прошивки DVR на шлеме Eachine VR D2 и еще раньше на HMDVR.

Для восстановления потребуется пара вещей, которые наверняка есть у большинства FPV-шников. Это китайский клон Arduino Nano и регулятор напряжения на 3.3 вольта. Последний может быть любым. Таким, таким, таким, таким или таким. В общем, лишь бы мог преобразовывать напряжение из 5 вольт в 3.3 вольта.

Прошивка содержится в чипе памяти MX25L1605, который может работать в диапазоне напряжений 2.7-3.6 вольт. Более высокое напряжение убьет чип. Это важно!

Восстановление проходит в два этапа: создание программатора и собственно прошивка чипа памяти. Программатором будет выступать немного модифицированная Arduino Nano. Я сделал так, чтобы Arduino Nano могла работать от напряжения 3.3 вольта. Для этого просто удалил диод, который стоит на входе питания, и в этот разрыв подключил регулятор напряжения на 3.3 вольта. Если регулятор напряжения с подстроечным резистором, то надо заранее выставить выходное напряжение в диапазоне 3.0-3.3 вольта. Не забываем, это важно! Затем я залил в Arduino Nano прошивку frser-duino, чтобы получился программатор для чипа памяти. Так как у меня на компьютере используется Ubuntu, то и команды в первую очередь буду давать под нее. Но и про пользователей Windows не забуду, продублирую операции:)

Для Ubuntu нужно установить дополнительные программы flashrom и avrdude. Затем создать каталог "recoverdvr" и скачать туда все необходимое. Просто открываю терминал и выполняю следующий набор команд:

# sudo apt-get install flashrom avrdude# mkdir ~/recoverdvr# cd ~/recoverdvr# wget http://mcheli.ru/files/prodvr/frser-duino.hex# wget http://mcheli.ru/files/prodvr/prodvr-dump.hex

Все готово для начала создания программатора. Подключаю модифицированную Arduino Nano и выполняю в терминале команду прошивки:

# avrdude -c arduino -p m328p -P /dev/ttyUSB0 -b 57600 -U flash:w:frser-duino.hex

Результат должен получиться таким:

avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e950f (probably m328p)avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed         To disable this feature, specify the -D option.avrdude: erasing chipavrdude: reading input file "frser-duino.hex"avrdude: input file frser-duino.hex auto detected as Intel Hexavrdude: writing flash (1368 bytes): Writing | ################################################## | 100% 0.43s avrdude: 1368 bytes of flash writtenavrdude: verifying flash memory against frser-duino.hex:avrdude: load data flash data from input file frser-duino.hex:avrdude: input file frser-duino.hex auto detected as Intel Hexavrdude: input file frser-duino.hex contains 1368 bytesavrdude: reading on-chip flash data: Reading | ################################################## | 100% 0.33s avrdude: verifying ...avrdude: 1368 bytes of flash verified avrdude: safemode: Fuses OK (E:00, H:00, L:00) avrdude done.  Thank you.

Вот и готов программатор! Легко, не правда ли?

Для Windows все будет не так просто и несколькими командами не отделаешься:) Сначала нужно скачать и установить драйвера для китайского клона Arduino Nano и убедить Windows в их безопасности. У меня это получилось только через перезагрузку и выбор загрузки без проверки подписи драйверов. Подключил Arduino Nano и в диспетчере устройств в разделе "Порты (COM и LPT)" нашел устройство "USB SERIAL Ch440", а в скобочках рядом был указан виртуальный COM-порт. У меня был "COM3". Запомните этот номер порта, он потребуется ниже.

Затем создал каталог "c:\recoverdvr" и в дальнейшем все складывал туда. Скачал flashrom в эту папочку, затем скачал XLoader и распаковал так же в эту папочку. Скачал файлы прошивок frser-duino.hex и prodvr-dump.hex в ту же папочку "c:\recoverdvr".

В Windows программа XLoader - это просто оболочка для запуска программы avrdude, которую я использовал в Ubuntu. Запускаем XLoader.exe, в поле "Hex file" выбираем файл прошивки frser-duino.hex. Остальное, как на скриншоте, кроме поля "COM port". Тут надо указать тот порт, который нужно было запомнить выше.

Затем жму кнопку Upload и, если все в порядке, в нижней строке будет сообщение "1368 bytes uploaded". Все, теперь и тут получился программатор:) На эту процедуру у меня ушло в несколько раз больше времени, чем в случае с Ubuntu.

Раз программатор готов, надо его проверить. Для начала нужно измерить напряжение на выводах D10 и D11 программатора. Должно быть тоже самое напряжение, что и поступает на модифицированную Arduino Nano с регулятора напряжения, то есть 3.3 вольта. Если с этим в порядке, то надо проверить возможность работы программы flashrom с программатором. В Ubuntu выполняю следующую команду:

# flashrom --programmer serprog:dev=/dev/ttyUSB0:115200

Вывод команды будет такой:

flashrom v0.9.9-rc1-r1942 on Linux 4.4.0-22-generic (x86_64)flashrom is free software, get the source code at https://flashrom.org Calibrating delay loop... OK.serprog: Programmer name is "frser-duino"No EEPROM/flash device found.Note: flashrom can never write if the flash chip isn't found automatically.

А в Windows запускаю командную строку CMD и выполняю аналогичную команду. Не забываем указать в параметрах свой, запомненный ранее, номер COM-порта:

c:\recoverdvr\mingw32-w64-flashrom-r1781.exe --programmer serprog:dev=COM3:115200

В этом случае вывод будет такой:

flashrom v0.9.7-r1781 on Windows 6.1 (x86)flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OK.serprog: Programmer name is "frser-duino"Found Generic flash chip "unknown SPI chip (RDID)" (0 kB, SPI) on serprog.===This flash part has status NOT WORKING for operations: PROBE READ ERASE WRITEThe test status of this chip may have been updated in the latest developmentversion of flashrom. If you are running the latest development version,please email a report to [email protected] if any of the above operationswork correctly for you with this flash part. Please include the flashromoutput with the additional -V option for all operations you tested (-V, -Vr,-VE, -Vw), and mention which mainboard or programmer you tested.Please mention your board in the subject line. Thanks for your help!No operations were specified.

Во всем этом пока что интересна только одна строка "serprog: Programmer name is "frser-duino"". Это значит, что программа flashrom может общаться с новоиспеченным программатором.

Осталось только подпаять программатор к чипу памяти и наконец-то восстановить в нем прошивку. Схема подключения получается следующая:

В собранном виде оно выглядит так: Чип памяти довольно крупный, подпаивать провода к нему легко. Если все готово, то пробую залить прошивку. В Ubuntu это делается такой командой:

# flashrom --programmer serprog:dev=/dev/ttyUSB0:115200 -c MX25L1605 -w prodvr-dump.hex

Программа flashrom работает довольно долго, минут 12-15. Вот результат работы:

flashrom v0.9.9-rc1-r1942 on Linux 4.4.0-22-generic (x86_64)flashrom is free software, get the source code at https://flashrom.org Calibrating delay loop... OK.serprog: Programmer name is "frser-duino"Found Macronix flash chip "MX25L1605" (2048 kB, SPI) on serprog.Reading old flash chip contents... done.Erasing and writing flash chip... FAILED at 0x00001000! Expected=0xff, Found=0x2b, failed byte count from 0x00000000-0x0000ffff: 0xed13ERASE FAILED!Reading current flash chip contents... done. Looking for another erase function.Erase/write done.Verifying flash... VERIFIED.

Как видно, в чип памяти удачно залилась прошивка. Ура!

Теперь тоже самое проделаю в Windows. В ранее открытой командной строке ввожу следующую похожую команду. Снова не забываем в ней заменить номер COM-порта на свой:

c:\recoverdvr\mingw32-w64-flashrom-r1781.exe --programmer serprog:dev=COM3:115200 -c MX25L1605 -w c:\recoverdvr\prodvr-dump.hex

В Windows программа отработала раза в три быстрее, без верификации данных:

flashrom v0.9.7-r1781 on Windows 6.1 (x86)flashrom is free software, get the source code at http://www.flashrom.org Calibrating delay loop... OK.serprog: Programmer name is "frser-duino"Found Macronix flash chip "MX25L1605" (2048 kB, SPI) on serprog.Reading old flash chip contents... done.Erasing and writing flash chip...Warning: Chip content is identical to the requested image.Erase/write done.

Прошивка и здесь удачно залилась!

Вот и весь процесс восстановления. Теперь, отпаяв все провода, можно попробовать залить обновленную прошивку обычным способом, через карту памяти. Лучше это сделать сразу, пока не производилось никаких настроек через меню DVR, тогда шансов на удачное обновление прошивки будет больше. Если DVR после обновления снова "окирпичится", то можно повторить весь процесс снова:) Удачной прошивки!

mcheli.blogspot.ru

Распаковка, редактирование и упаковка прошивок видеорегистраторов и IP камер из Китая

Предыстория

Не так давно приобрёл на Aliexpress IP камеру (чип Hi3516 платформа 53h30L) и 16-канальный гибридный видеорегистратор (чип Hi3521 платформа MBD6508E). Оба выполнены на чипсете от HiSilicon, так что проблем с совместимостью между собой не испытывают.Разумеется, не обошлось и без глюков. Первый, и самый главный — у камеры криво работал WiFi — нельзя было подключиться к сети, если ключ был задан в HEX виде, а таже периодически возникала проблема со шлюзом по умолчанию.Прошивка оказалась старая, ещё июньская. Раздобыл несколько свежих прошивок и попробовал. Некоторые оказались глючными, но одна заработала нормально.Возникла другая проблема — изменился пароль по умолчанию для telnet подключения. Этого я не стерпел и стал искать способы вернуть его обратно.Сразу предупрежу, что данный способ опробован на видеорегистраторах и камерах на чипах HiSilicon, но должен сработать и с другой платформой, так как китайцы широко используют загрузчик U-boot.

Распаковка

Инструкция по распаковке довольно подробно расписана в этой статье, но вот процесс упаковки нигде не описан, что и побудило меня написать этот пост.Расписываю по шагам, чтобы ничего не упустить:Ставим Linux, я выбрал ubuntu.Проверяем тип файла прошивки:

[email protected]:~/firmware# file General_HZXM_IPC_HI3516C_53h30L_V4.02.R11.20131108_ALL.bin General_HZXM_IPC_HI3516C_53h30L_V4.02.R11.20131108_ALL.bin: Zip archive data, at least v2.0 to extract

Распаковываем:

[email protected]:~/firmware# unzip General_HZXM_IPC_HI3516C_53h30L_V4.02.R11.20131108_ALL.bin Archive: General_HZXM_IPC_HI3516C_53h30L_V4.02.R11.20131108_ALL.bin inflating: Install inflating: u-boot-all.bin.img inflating: web-x.cramfs.img inflating: custom-x.cramfs.img inflating: user-x.cramfs.img inflating: romfs-x.cramfs.img inflating: logo-x.cramfs.img inflating: InstallDesc

Смотрим содержимое Install:

{ "Commands" : [ "burn custom-x.cramfs.img custom", "burn romfs-x.cramfs.img romfs", "burn user-x.cramfs.img user", "burn logo-x.cramfs.img logo", "burn web-x.cramfs.img web" ], "Devices" : [ [ "53h30L", "1.00" ] ] }

InstallDesc:

"UpgradeCommand" : [ { "Command" : "Burn", "FileName" : "u-boot-all.bin.img" }, { "Command" : "Burn", "FileName" : "custom-x.cramfs.img" }, { "Command" : "Burn", "FileName" : "romfs-x.cramfs.img" }, { "Command" : "Burn", "FileName" : "user-x.cramfs.img" }, { "Command" : "Burn", "FileName" : "web-x.cramfs.img" }, { "Command" : "Burn", "FileName" : "logo-x.cramfs.img" } ], "Hardware" : "53h30L", "Vendor" : "General" }

Слово u-boot-all наводит на мысль, что файлы img являются образами загрузчика U-boot, поэтому ставим соответствующий пакет:

[email protected]:~/firmware# apt-get install u-boot-tools

Смотрим, что за файлы у нас были в архиве:

[email protected]:~/firmware# file u-boot-all.bin.img u-boot-all.bin.img: u-boot legacy uImage, linux, Linux/ARM, Firmware Image (gzip), 524288 bytes, Fri Nov 8 05:15:49 2013, Load Address: 0x00000000, Entry Point: 0x00080000, Header CRC: 0x8A551AA8, Data CRC: 0x8290AD90 [email protected]:~/firmware# file romfs-x.cramfs.img romfs-x.cramfs.img: u-boot legacy uImage, linux, Linux/ARM, OS Kernel Image (gzip), 4100096 bytes, Fri Nov 8 05:16:04 2013, Load Address: 0x00080000, Entry Point: 0x00580000, Header CRC: 0xD16AC90F, Data CRC: 0x54CDD868 [email protected]:~/firmware# file user-x.cramfs.img user-x.cramfs.img: u-boot legacy uImage, linux, Linux/ARM, OS Kernel Image (gzip), 7602112 bytes, Fri Nov 8 05:16:02 2013, Load Address: 0x00580000, Entry Point: 0x00CC0000, Header CRC: 0x106C19AD, Data CRC: 0x6D54ADA7 [email protected]:~/firmware# file web-x.cramfs.img web-x.cramfs.img: u-boot legacy uImage, linux, Linux/ARM, Standalone Program (gzip), 1572800 bytes, Fri Nov 8 05:15:51 2013, Load Address: 0x00CC0000, Entry Point: 0x00E40000, Header CRC: 0x87611FE5, Data CRC: 0x6BD90EBD [email protected]:~/firmware# file custom-x.cramfs.img custom-x.cramfs.img: u-boot legacy uImage, linux, Linux/ARM, Standalone Program (gzip), 262080 bytes, Fri Nov 8 05:15:49 2013, Load Address: 0x00E40000, Entry Point: 0x00E80000, Header CRC: 0xF7C82692, Data CRC: 0x5A27F74C [email protected]:~/firmware# file logo-x.cramfs.img logo-x.cramfs.img: u-boot legacy uImage, linux, Linux/ARM, Standalone Program (gzip), 262080 bytes, Fri Nov 8 05:15:47 2013, Load Address: 0x00E80000, Entry Point: 0x00EC0000, Header CRC: 0x4FE4A821, Data CRC: 0xF6671BD1

Прошу обратить внимание на два параметра Load Address и Entry Point. Я при первой сборке забыл их указать, они по умолчанию стали нулями, а это адрес загрузчика, который оказался затёрт после прошивки! Из-за этого я потратил лишний час на восстановление — пришлось снимать с улицы камеру, разбирать, и восстанавливать прошивку на программаторе. (Хотя камеру разбирал всё же не зря — добавил в кожух пакетик силикагеля, чтобы убрать возможную влагу из воздуха.)

Теперь небольшое пояснение: образ .img из данной прошивки является несколько изменённым образом файловой системы cramfs. Вот тут можно почитать поподробнее. Чтобы привести образ к нормальному виду, нужно отрезать 64 байта заголовка.

[email protected]:~/firmware# dd bs=1 skip=64 if=logo-x.cramfs.img of=logo-x.cramfs 262080+0 записей получено 262080+0 записей отправлено скопировано 262080 байт (262 kB), 0,891322 c, 294 kB/c

Для остальных файлов команды аналогичные.Смотрим, что получилось:

[email protected]:~/firmware# file logo-x.cramfs logo-x.cramfs: Linux Compressed ROM File System data, little endian size 28672 version #2 sorted_dirs CRC 0xe29e6340, edition 0, 199 blocks, 2 files

Уже похоже на cramfs. Для работы с образами cramfs установим или обновим соответствующий пакет:

[email protected]:~/firmware# apt-get install cramfsprogs

Распаковываем образы:

[email protected]:~/firmware# cramfsck -x logo logo-x.cramfs [email protected]:~/firmware# cramfsck -x user user.cramfs [email protected]:~/firmware# cramfsck -x romfs romfs-x.cramfs [email protected]:~/firmware# cramfsck -x web web-x.cramfs [email protected]:~/firmware# cramfsck -x custom custom-x.cramfs

Каталоги я не создаю, они создадутся автоматически.Загрузчик так не распаковать, это не образ cramfs, но его и не надо трогать.

Что внутри

Быстренько пробегусь по содержимому каждого файла внутри архива прошивки:

  • InstallDesc — описывает действия, которые нужно произвести с этими файлами при обновлении прошивки, install-скрипт.
  • logo-x.cramfs.img — картинка в формате 800x600 с логотипом изготовителя, которая появляется при загрузке аппарата.
  • romfs-x.cramfs.img — собственно сама операционная система linux под архитектуру ARM
  • u-boot-all.bin.img — загрузчик U-boot
  • custom-x.cramfs.img — содержит наименование платформы и дополнительные настройки
  • user-x.cramfs.img — прикладной софт, в том числе Sofia — сама программа видеорегистратора
  • web-x.cramfs.img — картинки веб-интерфейса, web.cab — плагин для Internet Explorer с локализацией, логотипы производителя.

Нас интересует romfs-x.cramfs.img, так как именно там присутствует файл passwd, в котором хранится пароль. Вот его содержимое, желающие могут попробовать сбрутить:

root:$1$RYIwEiRA$d5iRRVQ5ZeRTrJwGjRy.B0:0:0:root:/:/bin/sh

Я же просто сгенерил новый хеш на сайте и поменял его в файле.

Собираем обратно

После сделанных изменений нужно всё запаковать обратно:

[email protected]:~/firmware# mkcramfs romfs romfs-x.cramfs Directory data: 3624 bytes Everything: 4004 kilobytes Super block: 76 bytes CRC: 28c62b9b

Помните, я заострял внимание на значениях Load Address и Entry Point? Самое время о них вспомнить и добавить в команду.Создаём образ U-boot:

[email protected]:~/firmware# mkimage -A arm -O linux -T ramdisk -n "linux" -e 0x00580000 -a 0x00080000 -d romfs-x.cramfs romfs-x.cramfs.img Image Name: linux Created: Fri Feb 21 14:27:38 2014 Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 4100096 Bytes = 4004.00 kB = 3.91 MB Load Address: 00080000 Entry Point: 00580000

Кстати, чтобы обновить один модуль не обязательно прошивать всю прошивку, достаточно положить только нужный, и отредактировать файлы Install и InstallDesc, оставив только нужные строчки.Складываем полученные файлы в отдельный каталог, пусть это будет new. Даём команду:

[email protected]:~/new# zip -D -X firmware.bin * adding: Install (deflated 22%) adding: InstallDesc (deflated 30%) adding: romfs-x.cramfs.img (deflated 0%)

Всё, прошивка готова. Осталось только прошить её через web-интерфейс через пункт update

Предостережение

Выполняя рекомендации из этой статьи, вы делаете на ваш страх и риск. Автор не несет ответственности за ваши действия. Допустив ошибку при модификации прошивки вы легко можете получить кирпич, который можно будет восстановить только на программаторе. Поэтому, если не уверены в своих действиях, не делайте этого.

Ссылки

Burn-in рутовый шелл в IP-камерах Vesta и не толькоGNU/Linux и устройство на Rockchip 2918Hacking RAM disks

Автор: Newsonya

Источник

www.pvsm.ru


Смотрите также