Трюки и хаки при экспериментах с IPCam от Xiong Mai
Введение
Материал в стадии оформления. Последнее обновление – 2018.04.13
Используя данный Сайт, Вы выражаете свое согласие с «Отказом от ответственности» и принимаете всю ответственность за выполняемые действия с оборудованием и программным обеспечением на себя !
Просьба – при использовании материалов с сайта в своих проектах, указывать первоисточник. Спасибо!
Доступ в группу для различных обсуждений по IPCam и NVR возможен через WebIRC = Slack = Telegram
Благодарности
Данная информация является результатом совместной работы дружной компании:
- ESonya – Игорь, г.Сергиев Посад
- FlyRouter – Игорь, г.Симферополь
- max380 – Максим, г.Екатеринбург
- Oleg34 – Олег, г.Волгоград
- и много других товарищей…
Создание полного дампа с Flash устройства (ff, fullflash)
СТРОГО РЕКОМЕНДУЕТСЯ СДЕЛАТЬ ДАННУЮ МАНИПУЛЯЦИЮ ПЕРЕД ЛЮБЫМИ ЭКСПЕРИМЕНТАМИ !
Настройте TFTP сервер и проверьте доступ к нему
Выполните в консоли, нажав Ctrl+C для остановки загрузки ядра после подачи питания на модуль
Пример создания дампа для 8Mb Flash
# set serverip 192.168.1.254 // Установка адреса TFTP сервера sf probe 0 // Разрешение доступа к флешке mw.b 0x82000000 ff 1000000 // Очистка памяти sf read 0x82000000 0x0 0x800000 // Чтение всей флешки в память tftp 0x82000000 ff.img 0x800000 // Выгрузка дампа (fullflash) на TFTP сервер
Пример создания дампа для 16Mb Flash
# set serverip 192.168.1.254 // Установка адреса TFTP сервера sf probe 0 // Разрешение доступа к флешке mw.b 0x82000000 ff 1000000 // Очистка памяти sf read 0x82000000 0x0 0x1000000 // Чтение всей флешки в память tftp 0x82000000 ff.img 0x1000000 // Выгрузка дампа (fullflash) на TFTP сервер
Пример создания дампа для 16 Mb Flash на USB флешку (если есть USB порт и метод поддерживается загрузчиком)
# usb start // Инициализация USB sf probe 0 // Разрешение доступа к флешке mw.b 0x82000000 ff 1000000 // Очистка памяти sf read 0x82000000 0x0 0x1000000 // Чтение всей флешки в память fatwrite usb 0:1 0x82000000 ff.img // Выгрузка дампа (fullflash) на USB Flash
Откат на стоковую заводскую прошивку
Периодически на распродажах Aliexpress попадаются IP камеры с вшитыми в них OEM прошивками, заточенными только под китайский сегмент. Попытка перепрошить такую камеру стандартными способамм не приносят должного результата.
Как правило, в программах CMS или Upgrade Tool такие камеры содержат перед Hardware ID цифры, вместо нулей. Например, обычная камера имеет HW ID 00022520, а вот заблокированная или заточенная под какой-то сервис будет выглядеть как 3422520.
Для решения данной проблемы, подберите свежую стоковую прошивку для вашего типа камеры, распакуйте её в каталог TFTP сервера, подключите UART консоль, войдите в загрузчик и выполните команды, приведенные ниже.
setenv serverip 192.168.1.254; sf probe 0; sf lock 0; run dc; run dr; run du; run dw; reset
После прошивки, камера перезагрузится и будет доступна уже с пустым префиксом (нули) перед HW ID. Так как в целях защиты от “дурака” консольной командой выше загрузчик НЕ обновляется, то для его замены желательно повторно обновить прошивку уже стандартными средствами.
Обновление из полного дампа устройства (ff, fullflash) через консоль
Настройте TFTP сервер и положите на него фаил дампа ff.img
Важно ! В результате вы получите полный дубликат устройства с которого сняли дамп !
Выполните в консоли, нажав Ctrl+C для остановки загрузки ядра после подачи питания на модуль
Ниже приведен пример обновление из полного дампа для 8Mb Flash
# set serverip 192.168.1.254 // Устанавка адреса TFTP сервера sf probe 0 // Разрешение доступа к флешке mw.b 0x82000000 ff 1000000 // Очистка памяти tftp 0x82000000 ff.img // Загрузка в память дампа (fullflash) sf erase 0x000000000000 0x800000 // Очистка всей флешки под запись sf write 0x82000000 0x000000000000 0x800000 // Запись дампа (fullflash) из памяти на флешку reset // Рестарт устройства
Ниже приведен пример обновление из полного дампа для 16Mb Flash
# set serverip 192.168.1.254 // Устанавка адреса TFTP сервера sf probe 0 // Разрешение доступа к флешке mw.b 0x82000000 ff 1000000 // Очистка памяти tftp 0x82000000 ff.img // Загрузка в память дампа (fullflash) sf erase 0x000000000000 0x1000000 // Очистка всей флешки под запись sf write 0x82000000 0x000000000000 0x1000000 // Запись дампа (fullflash) из памяти на флешку reset // Рестарт устройства
Обновление загрузчика (u-boot bootloader) через консоль
Настройте TFTP сервер и положите на него фаил u-boot.bin
Важно ! Всегда проверяйте первый байт загрузчика что-бы не получить “кирпич” !
Важно ! Крипто-раздел, прикреплённый к загрузчику в данном примере будет уничтожен !
Выполните в консоли, нажав Ctrl+C для остановки загрузки ядра после подачи питания на модуль
# mw.b 0x82000000 0xFF 0x40000 // Очистка памяти под запись set serverip 192.168.1.254 // Устанавка адреса TFTP сервера mw.b 0x82000000 ff 1000000 // Очистка памяти tftp 0x82000000 u-boot.bin // Загрузка в память загрузчика sf probe 0 // Разрешение доступа к флешке sf erase 0 0x40000 // Очистка части флешки под запись sf write 0x82000000 0 0x40000 // Запись загрузчика из памяти на флешку reset // Рестарт устройства
Пример прошивки устройств с USB флешки
# usb start mw.b 0x82000000 ff 1000000 fatload usb 0:1 0x82000000 dump.bin sf probe 0 sf lock 0 sf erase 0 0x1000000 sf write 0x82000000 0 0x1000000
Включение отображения процесса загрузки ядра Linux
Иногда возникает необходимость, при поиске проблем, отобразить ход загрузки ядра и модулей.
Включение режима возможно в самом Linux, если зайти на устройство по Telnet.
# armbenv -s xmuart 0 // Включение отображения загрузки ядра Linux reboot // Рестарт устройства
Изменение некоторых системных параметров
Команда armbenv позволяет изменять некоторые настройки системы, работая с ENV областью загрузчика.
Все переменные можно изменять как непосредственно в Linux, так и в самом загрузчике.
Так, например, выполнение appauto 0 позволяет отключить проверку работы и наличия Sofia в системе.
А выполнение setenv telnetctrl 1; saveenv попытается включить Telnet сервер.
Список переменных можно запросить командой armbenv -r. Ниже представлен пример выполнения команды.
# bootdelay = 1 baudrate = 115200 serverip = 192.168.1.1 ipaddr = 192.168.1.10 netmask = 255.255.255.0 ethaddr = 00:12:21:10:a3:d5 xmuart = 0 xmauto = 0 // Watchdog для перезагрузки камеры telnetctrl = 1 NID = 0x0003
Очистка MTD раздела на Flash камеры (сброс настроек)
ВЫ ДОЛЖНЫ ОТДАВАТЬ СЕБЕ ОТЧЁТ О ПРОДЕЛЫВАЕМЫХ ОПЕРАЦИЯХ !
Для вычисления адреса и размера стираемого раздела необходимо смотреть MTD partitions.
Выполните в консоли, нажав Ctrl+C для остановки загрузки ядра после подачи питания на модуль.
ID камеры | Адрес и размер для чистки |
06510 | sf probe 0; sf erase 0×0000007b0000 50000 |
18510 | sf probe 0; sf erase 0×0000007b0000 50000 |
18520 | sf probe 0; sf erase 0×0000007b0000 50000 |
Получение базовой информации по плате XM
Для получения базовой информации по плате XM выполните команду dvrbox в консоли
# dvrbox LibCrypto : g_cryptotype = 1 00:12:16:d8:6f:89 ************************************************* | SYSTEM INFO | ID: 8043421804748432 | product type: 53H13 | product: HI3518E_53H13_S39 | video channel: 1 | audio channel: 1 | alarm in: 1 | alarm out: 1 | forward video chip: AR0130 | DSP chip: HI3518E | analog audio mode: voice codec | talkback: voice codec | back video chip: no chip | store interface: SDIO | matrix surpport: No | wireless interface: USB | hardware encode: encode chip | hardware version: 1 | video_interface: BNC | net_interface: Ethernet | hardware info len: 8 ************************************************* LIBDVR: Complied at Sep 12 2016 10:37:43 SVN:1579
Типовые полезные команды
Сканирование локальной сети для поиска видеокамер
clear; nmap -p 23,80,554 192.168.1.1-254
Запуск Telnet сервера на камере без авторизации
telnetd -F -p 4321 -l /bin/ash
Внутренние ссылки
- 2019-01-04 Детали для ремонта IPC и NVR
- 2018-05-01 Самодельные корпуса для видеокамер из фитингов ITAL 40’
- 2018-04-05 HW/SW инструментарий для изучения и ремонта устройств
- 2018-03-25 Модифицируем прошивки IP видеорегистраторов от Xiong Mai
- 2018-03-12 Сбор информации по IP-камерам JVT на базе SoC Hisilicon
- 2018-03-11 Сбор информации по IP-камерам Topsee на базе SoC Hisilicon
- 2018-03-10 Сбор информации по IP-камерам на базе SoC GM8180
- 2018-02-27 Датчики и телеметрия – Digispark, Micronucleus, OpenWrt
- 2018-02-21 Съём показаний по RS485 порту с электросчётчиков Меркурий
- 2018-02-09 Запуск Buildroot и OpenWrt на устройствах с SoC Hisilicon
- Трюки и хаки при экспериментах с IPCam от Xiong Mai
- 2018-01-07 Telegram, MQTT, Яндекс.Диск, WiFi и т.д. в IP камерах от Xiong Mai
- 2018-01-05 IPCam SP009 и SP012 от компании Sricam – SoC GM8135S
- 2017-10-28 Просмотр ‘псевдо-видео’ с IP камеры в любом браузере
- 2017-08-21 Управление домашней автоматизацией через Telegram
- 2016-11-03 Обновление заводских WEB-интерфейсов у IPC и NVR
- 2016-09-20 Использование mjpg-streamer и различные USB UVC видеокамеры
- 2015-09-03 Хакинг IP-камер на базе SoC HI3518
- 2015-08-26 Модернизация IP Web-камеры – passive PoE
- 2014-04-11 Подбор оборудования для видеонаблюдения
Внешние ссылки
- -