Как прошить камеру через загрузчик U-Boot по Telnet.

Вопросы по восстановлению, настройке, апгрейду, прошивкам и т.п.
Bespredel
Новичок
Сообщения: 10
Зарегистрирован: 25 май 2015, 08:15

Как прошить камеру через загрузчик U-Boot по Telnet.

Сообщение Bespredel » 25 май 2015, 08:53

Камера работала хорошо, но потом как-то полазил по настройкам, сохранил. И всё, больше она не работала.
Веб морда не работает, на все запросы пор всем портам не отвечает. Но при этом пингуется.
Изображение
Изображение
Изображение
Немного потыкав по контакта нашёл терминал:
Изображение

Код: Выделить всё

U-Boot 2010.06 (Mar 18 2014 - 03:42:32)

Check spi flash controller v350... Found
Spi(cs1) ID: 0xC8 0x40 0x18 0xC8 0x40 0x18
Spi(cs1): Block:64KB Chip:16MB Name:"GD25Q128"
In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0
16384 KiB hi_sfc at 0:0 is now current device

## Booting kernel from Legacy Image at 82000000 ...
   Image Name:   Linux-3.0.8
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2598364 Bytes = 2.5 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
И т.д. там много всего, но один фрагмент повторяется в цикле:

Код: Выделить всё

ipc_server stop: 1970-01-01 08:00:16
workthread: log init succeed.
libs_initnettype(Lan): succeed.
macflag: 0
videocomm(0): 6 1280 720
videocomm(1): 7 640 352
videocomm(2): 8 320 176
TimeZone: -8
workthread: init ini succeed.
workthread: ntpsvr init succeed.
workthread: reset init succeed.
workthread: wifikey init succeed.
workthread: timerreboot init succeed.
ptz type: rs485
workthread: ptz init succeed.
HI_Media_SDKInit: efreq=50,resolution=31,maxresolution=6,maxwidth=1280,maxheight=720
timerreboot: entry proc,enable=0,reboot time=00:00:00
HI_Ntp_Proc: enable=1, svr=time.windows.com, interval=1
HI_Media_SDKInit: sensor: 25
HI_Media_SDKInit: display mode: blackwhite
extalarm: off open
color(ini): f=0x007fff, b=0x000000, trans=64
ldc: enable=0, ratio=0, xoffset=0, yoffset=0
initaudio: inputtype=2, input=31, output=79, aec=0
encode(chn=0): profile=1,resolution=6,cbr=0,bitrate=2048,frame=20,iframe=40,quality=0,minq=22,maxq=38
encode(chn=0): audioenable=0, audiotype=2
HI_MPI_VENC_CreateChn [0] faild with 0xa007800c!
HI_Media_SDKInit: HI_SDK_CreateEncodeChannel(chn=0) error!
HI_Media_Init: init sdk failed!
HI_Websvr_Init: init media failed!
workthread: websvr start failed!
ipc_server stop: 1970-01-01 08:00:20
Пробовал зайти в систему, не получается, перебрав кучу паролей оставил эту затею.
root:
xmhdipc
xc3511
123456
jvbzd
Ничего не подходит.

Остался у меня вариант оживить её через загрузчик, но как ?

Код: Выделить всё

U-Boot 2010.06 (Mar 18 2014 - 03:42:32)

Check spi flash controller v350... Found
Spi(cs1) ID: 0xC8 0x40 0x18 0xC8 0x40 0x18
Spi(cs1): Block:64KB Chip:16MB Name:"GD25Q128"
In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0
hisilicon # ?
?       - alias for 'help'
base    - print or set address offset
bootm   - boot application image from memory
bootp   - boot image via network using BOOTP/TFTP protocol
cmp     - memory compare
cp      - memory copy
crc32   - checksum calculation
ext2load- load binary file from a Ext2 filesystem
ext2ls  - list files in a directory (default /)
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls   - list files in a directory (default /)
getinfo - print hardware information
go      - start application at address 'addr'
help    - print command description/usage
loadb   - load binary file over serial line (kermit mode)
loady   - load binary file over serial line (ymodem mode)
loop    - infinite loop on address range
md      - memory display
mii     - MII utility commands
mm      - memory modify (auto-incrementing address)
mtest   - simple RAM read/write test
mw      - memory write (fill)
nm      - memory modify (constant address)
ping    - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
rarpboot- boot image via network using RARP/TFTP protocol
reset   - Perform RESET of the CPU
saveenv - save environment variables to persistent storage
setenv  - set environment variables
sf      - SPI flash sub-system
tftp    - tftp  - download or upload image via network using TFTP protocol
usb     - USB sub-system
usbboot - boot from USB device
version - print monitor version
hisilicon #
Вот тут есть интересная информация, вроде как взломать рут пароль из загрузчика:
https://docs.google.com/document/d/1rRN ... edit?pli=1" onclick="window.open(this.href);return false;
Вот только у меня всё стопориться на этом:

Код: Выделить всё

hisilicon # mount -t squashfs -o loop rootfs.img /mnt/tmp2
Unknown command 'mount' - try 'help'
Нашёл прошивку для неё:
kROOT писал(а):
kROOT писал(а):Случайно нашел сентябрьскую прошивку для таких камер
Изображение
на плате камеры написано ipc18e_9712_v2.0
https://yadi.sk/d/5hvTXnZKdhcjJ" onclick="window.open(this.href);return false;
что изменилось даже не знаю, но думаю свежая прошивка это всегда лучше
https://yadi.sk/d/taUfEY-jf4dBn" onclick="window.open(this.href);return false; февральская прошивка, вроде звук поправили, раньше фон дикий был, и интерфейс немного сменился
Но как её залить? Подскажите пошагово действия.

Dim32
Специалист
Сообщения: 982
Зарегистрирован: 11 июн 2014, 11:33

Re: Как прошить камеру через загрузчик U-Boot по Telnet.

Сообщение Dim32 » 25 май 2015, 09:55

Загрузчик - это вам не линукс, вы много от него хотите - telnet, mount...
Зачем вы распечатали список его команд, если вы его даже не читали.....

Bespredel
Новичок
Сообщения: 10
Зарегистрирован: 25 май 2015, 08:15

Re: Как прошить камеру через загрузчик U-Boot по Telnet.

Сообщение Bespredel » 25 май 2015, 10:21

Dim32 писал(а):Загрузчик - это вам не линукс, вы много от него хотите - telnet, mount...
Зачем вы распечатали список его команд, если вы его даже не читали.....
1. Спасибо за содержательный ответ, всё сразу стало понятно. Вот только доступа к telnet, нету. Закрыт рутовым паролем.
2. Для общей информации. Читал. А так же много других форумов, но не нашёл внятной информации по прошивке, хотя многие пишут что прошить можно.
Всё что есть, консоль через COM и загрузчик.

Dim32
Специалист
Сообщения: 982
Зарегистрирован: 11 июн 2014, 11:33

Re: Как прошить камеру через загрузчик U-Boot по Telnet.

Сообщение Dim32 » 25 май 2015, 11:02

Bespredel писал(а):
Dim32 писал(а):Загрузчик - это вам не линукс, вы много от него хотите - telnet, mount...
Зачем вы распечатали список его команд, если вы его даже не читали.....
1. Спасибо за содержательный ответ, всё сразу стало понятно. Вот только доступа к telnet, нету. Закрыт рутовым паролем.
2. Для общей информации. Читал. А так же много других форумов, но не нашёл внятной информации по прошивке, хотя многие пишут что прошить можно.
Всё что есть, консоль через COM и загрузчик.
У загрузчика есть команда "tftp - tftp - download or upload image via network using TFTP protocol", запускаете на компе tfptd32, скармливаете ей файл прошивки

iTuneDVR

Re: Как прошить камеру через загрузчик U-Boot по Telnet.

Сообщение iTuneDVR » 25 май 2015, 11:10

Bespredel писал(а):
Dim32 писал(а):Загрузчик - это вам не линукс, вы много от него хотите - telnet, mount...
Зачем вы распечатали список его команд, если вы его даже не читали.....
1. Спасибо за содержательный ответ, всё сразу стало понятно. Вот только доступа к telnet, нету. Закрыт рутовым паролем.
2. Для общей информации. Читал. А так же много других форумов, но не нашёл внятной информации по прошивке, хотя многие пишут что прошить можно.
Всё что есть, консоль через COM и загрузчик.
1. А зачем доступ в телнет??? Что ты там собрался увидеть??? Задача-то восстановить прошивку или какая???
2. Надо не только читать но и пробовать help с названием команд, чтобы увидеть их синтаксис, чтобы дальше как-то получить представление.
В приведённой тобой статье всё же расписано, за что тебе огромная благодарность!
Там указано по тексту как загрузить из u-boot и как выгрузить из него.
К тому же ссылку на прошивку, которую ты дал, там только пользовательская часть, а не ядро и его окружение.
У тебя повредилась пользовательская часть.
Начни с команды
printenv
а дальше будет видно. ;)

Bespredel
Новичок
Сообщения: 10
Зарегистрирован: 25 май 2015, 08:15

Re: Как прошить камеру через загрузчик U-Boot по Telnet.

Сообщение Bespredel » 25 май 2015, 13:32

Блин... сразу не заметил, что на tftp сервере появились файлы..
С английским дружу плохо.. как я понял, он слил образ, а потом его уже собрал на другой машине. И из неё уже выдернул хэш.
Вот что выдаёт на команду:

Код: Выделить всё

hisilicon # printenv
bootdelay=1
baudrate=115200
ethaddr=00:00:23:34:45:66
netmask=255.255.255.0
bootfile="uImage"
phyaddru=0
phyaddrd=1
mdio_intf=rmii
ipaddr=192.168.8.88
serverip=192.168.8.8
gatewayip=192.168.8.1
bootcmd=sf probe 0;sf read 0x82000000 0x80000 0x280000;bootm 0x82000000
bootargs=mem=43M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:512K(boot),2560K(kernel),13M(rootfs)
stdin=serial
stdout=serial
stderr=serial
verify=n
ver=U-Boot 2010.06 (Mar 18 2014 - 03:42:32)

Environment size: 490/262140 bytes
У меня цель оживить этот кирпич.

Что я не понял:
Зачем команда: sf probe 0 и sf read 0x82000000 0x580000 0x200000

Что понял(вроде):
tftp 0x82000000 kernel.img 0x200000 - этой командой он слил на ТФТП сервер файл с названием kernel.img предположу 0x82000000 это начало, 0x200000 - длина файла?

Если просто ввести команду tftp, то получим:

Код: Выделить всё

hisilicon # tftp
Hisilicon ETH net controler
MAC:   00-00-23-34-45-66
UP_PORT : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M
TFTP from server 192.168.8.8; our IP address is 192.168.8.88
Download Filename 'uImage'.
Download to address: 0x80008000
Downloading: *
TFTP error: 'File not found' (1)
Я так понял он пытается загрузить с сервера файл с именем uImage.

Куда дальше рыть?
В идеале я так предполагаю нужно сделать полный бэкап того что есть.

Dim32
Специалист
Сообщения: 982
Зарегистрирован: 11 июн 2014, 11:33

Re: Как прошить камеру через загрузчик U-Boot по Telnet.

Сообщение Dim32 » 25 май 2015, 13:42

Bespredel писал(а):Блин... сразу не заметил, что на tftp сервере появились файлы..
С английским дружу плохо.. как я понял, он слил образ, а потом его уже собрал на другой машине. И из неё уже выдернул хэш.
Вот что выдаёт на команду:

Код: Выделить всё

hisilicon # printenv
bootdelay=1
baudrate=115200
ethaddr=00:00:23:34:45:66
netmask=255.255.255.0
bootfile="uImage"
phyaddru=0
phyaddrd=1
mdio_intf=rmii
ipaddr=192.168.8.88
serverip=192.168.8.8
gatewayip=192.168.8.1
bootcmd=sf probe 0;sf read 0x82000000 0x80000 0x280000;bootm 0x82000000
bootargs=mem=43M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:512K(boot),2560K(kernel),13M(rootfs)
stdin=serial
stdout=serial
stderr=serial
verify=n
ver=U-Boot 2010.06 (Mar 18 2014 - 03:42:32)

Environment size: 490/262140 bytes
У меня цель оживить этот кирпич.

Что я не понял:
Зачем команда: sf probe 0 и sf read 0x82000000 0x580000 0x200000

Что понял(вроде):
tftp 0x82000000 kernel.img 0x200000 - этой командой он слил на ТФТП сервер файл с названием kernel.img предположу 0x82000000 это начало, 0x200000 - длина файла?

Если просто ввести команду tftp, то получим:

Код: Выделить всё

hisilicon # tftp
Hisilicon ETH net controler
MAC:   00-00-23-34-45-66
UP_PORT : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M
TFTP from server 192.168.8.8; our IP address is 192.168.8.88
Download Filename 'uImage'.
Download to address: 0x80008000
Downloading: *
TFTP error: 'File not found' (1)
Я так понял он пытается загрузить с сервера файл с именем uImage.

Куда дальше рыть?
В идеале я так предполагаю нужно сделать полный бэкап того что есть.
смотри личку

Bespredel
Новичок
Сообщения: 10
Зарегистрирован: 25 май 2015, 08:15

Re: Как прошить камеру через загрузчик U-Boot по Telnet.

Сообщение Bespredel » 26 май 2015, 06:32

Т.к. ответа не получил, продолжил ломать дрова.
За вечер нашёл ещё один способ получить ROOT и у меня получилось!
Вот лекарство пошагово:
Захотим в загрузчик. (Включили питание и в течении 1 сек нужно нажать любую кавишу)
Добавляем к командной строке ядра опцию init и загружаемся.

Код: Выделить всё

hisilicon # setenv bootargs mem=43M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:512K(boot),2560K(kernel),13M(rootfs) init=/bin/sh
hisilicon # sf probe 0
16384 KiB hi_sfc at 0:0 is now current device
hisilicon # sf read 0x82000000 0x80000 0x280000

hisilicon # bootm 0x82000000
## Booting kernel from Legacy Image at 82000000 ...
   Image Name:   Linux-3.0.8
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2598364 Bytes = 2.5 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Loading Kernel Image ... OK
OK

Starting kernel ...
много вукв....
Получили доступ!
Далее смотрим что за пароли у нас есть:

Код: Выделить всё

# id
uid=0(root) gid=0(root)

# cat /etc/passwd
root:x:0:0:root:/root:/bin/sh
admin:x:501:501::/home/admin:/bin/sh

# cat /etc/shadow
root:$1$tiaLlxGM$byeTUfQgqyET5asfwwNjg0:16199:0:99999:7:::
admin:$1$rHWQwR5V$i4FVDvwhuzau8msvAfHEt.:16199:0:99999:7:::
А вот и хэш рутового пароля: root:$1$tiaLlxGM$byeTUfQgqyET5asfwwNjg0:16199:0:99999:7::: кому не сложно, по пробуйте его подобрать. Я по мучался час с программами для перебора, но так и не смог разобраться, oclHashcat никак не хочет работать с моей видюхой. Или у меня руки кривые.
Решил далее особо не заморачиваться и сменил пароль для root на root и для admin на admin, заменив хэш.

Код: Выделить всё

# echo "root:\$1\$tiaLlxGM\$dYNMJJQRKN2buGE0u/R88/:16199:0:99999:7:::" > /etc/shadow
# echo "admin:\$1\$tiaLlxGM\$uIJ4ahSynKJuzEzWdw7sp/:16199:0:99999:7:::" >> /etc/shadow
# sync
Перегрузил камеру:

Код: Выделить всё

(none) login: root
Password: root
Jan  1 00:00:19 login[415]: root login on 'ttyS000'
cat: can't open '/etc/TZ': No such file or directory
Welcome to HiLinux.
Всё, рут получен!
Думаю данный способ подойдёт к большинству подобных камер.

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

Код: Выделить всё

cd /mnt/mtd
rm -rf *
И ещё раз перезагрузился. На экране перестал загружаться в цикле один фрагмент. Но и остальное загружаться перестало :(
Видим следующую картину:

Код: Выделить всё

Freeing init memory: 104K

            _ _ _ _ _ _ _ _ _ _ _ _
            \  _  _   _  _ _ ___
            / /__/ \ |_/
           / __   /  -  _ ___
          / /  / /  / /
  _ _ _ _/ /  /  \_/  \_ ______
___________\___\__________________

[RCS]: /etc/init.d/S00devs
[RCS]: /etc/init.d/S01udev
udevd (408): /proc/408/oom_adj is deprecated, please use /proc/408/oom_score_adj instead.
[RCS]: /etc/init.d/S80network
ADDRCONF(NETDEV_UP): eth0: link is not ready
/etc/starts: line 3: /mnt/mtd/ipc/run: not
(none) login: PHY: himii:00 - Link is Up - 100/Full
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

(none) login: root
Password:
Jan  1 00:00:19 login[415]: root login on 'ttyS000'
cat: can't open '/etc/TZ': No such file or directory
Welcome to HiLinux.
# printenv
USER=root
LD_LIBRARY_PATH=/usr/local/lib:/usr/lib
HOME=/root
LOGNAME=root
TERM=vt100
PATH=/usr/bin:/usr/sbin:/bin:/sbin
SHELL=/bin/sh
PWD=/root
TZ=
# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:00:23:34:45:66
          inet addr:192.168.1.123  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:572 errors:0 dropped:3 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:44591 (43.5 KiB)  TX bytes:468 (468.0 B)
          Interrupt:12

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
/etc/starts: line 3: /mnt/mtd/ipc/run: not found

Видимо я снёс не только файл настроек, но и загрузчик оболочки.
Блин.. Что дальше сделать, чтоб она заработала?

Bespredel
Новичок
Сообщения: 10
Зарегистрирован: 25 май 2015, 08:15

Re: Как прошить камеру через загрузчик U-Boot по Telnet.

Сообщение Bespredel » 27 май 2015, 11:28

У кого есть рабочая камера с такой платой? Можете сделать полный дамп прошивки?

Код: Выделить всё

В загрузчике:
set ipaddr 192.168.1.*  
set serverip 192.168.1.*
sf probe 0
sf read 0x82000000 0x0000000 0x1000000
tftp 0x82000000 fw.img 0x1000000

Bespredel
Новичок
Сообщения: 10
Зарегистрирован: 25 май 2015, 08:15

Re: Как прошить камеру через загрузчик U-Boot по Telnet.

Сообщение Bespredel » 27 май 2015, 12:08

Странно, отвалились фотографии на хосте, заливаю повторно:
Плата: ipc18e_9712_v2.0
Изображение
Изображение
Изображение
Изображение

SSSergeich
Новичок
Сообщения: 2
Зарегистрирован: 08 сен 2015, 17:02

Re: Как прошить камеру через загрузчик U-Boot по Telnet.

Сообщение SSSergeich » 08 сен 2015, 22:21

Есть продолжение, чем закончилось?

Bespredel
Новичок
Сообщения: 10
Зарегистрирован: 25 май 2015, 08:15

Re: Как прошить камеру через загрузчик U-Boot по Telnet.

Сообщение Bespredel » 05 окт 2015, 06:18

Заказал камеру на похожей плате(90%)и таким же софтом. Слил прошивку и залил в эту. Заработала.
Пароль ROOT сбросить не получилось из под загрузчика. Стандартные не подходят.
Учитывая, что камера у меня висит в облаке, а ID изменить нельзя, дамп выкладывать не буду.

Стёклышко перед камерой оказалось ИК фильтром. Т.к. основное предназначение её снимать ночью, то стекло удалил. Днём всё в розовом.
Взял 3 ИК светодиода по 3 ватта и посадил рядом с камерой. Теперь ночью снимает отлично и в цвете.

Ответить

Вернуться в «Восстановление и настройка»