Усё, готово!.. Я теперь знаю пароль рута.
Что было сделано:
Для удобства манипулирования с параметрами загрузки ядра я изменил формирование строки "bootargs", собирая её из нескольких частей:
Вот мой немного доработанный принтэнв с готовой для нормальной загрузки строкой "бутаргс"
Код: Выделить всё
DM368 IPNC :>printenv
baudrate=115200
bootfile="uImage"
ethaddr=00:01:02:03:f5:1f
filesize=F8B000
fileaddr=82000000
bootcmd=nand read 0x82000000 0x700000 0x1100000;nboot 0x80700000 0 0x500000;bootm 0x80700000
ipaddr=172.22.33.93
serverip=172.22.33.92
netmask=255.255.255.0
gatewayip=172.22.33.1
addargs=setenv bootargs mem=48M console=ttyS0,115200n8 root=/dev/ram0 rw initrd=0x82000000,16M eth=08:06:46:E6:04:1E
addip=setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
addinit=setenv bootargs ${bootargs} init=/bin/sh
bootargs=mem=48M console=ttyS0,115200n8 root=/dev/ram0 rw initrd=0x82000000,16M eth=08:06:46:E6:04:1E ip=172.22.33.93:172.22.33.92:172.22.33.1:255.255.255.0h
bootdelay=3
stdin=serial
stdout=serial
stderr=serial
ver=U-Boot 1.3.4 (Jul 24 2014 - 21:38:26) DM368-IPNC-1.0.1
Environment size: 827/131068 bytes
Здесь "bootargs" составлена из двух строк "addargs" и "addip" командой "run addargs; run addip;"
"run addargs;" формирует начало строки "bootargs", а "run addip;" дописывает к ней инфу по айпи-адресам самой камеры, тфтп-сервера, шлюза, маски, имени хоста - берёт их из заранее созданных соответствующих строк.
Теперь, чтобы при загрузке можно было зайти в режим инициализации, мимо проверки логина-пароля рута, достаточно выполнить команды:
Формируем строку бутаргс без айпи, они пока не нужны, и дописываем в конец строки загрузки текст "init=/bin/sh"
Проверяем, всё ли правильно получилось:
Код: Выделить всё
DM368 IPNC :>printenv bootargs
bootargs=mem=48M console=ttyS0,115200n8 root=/dev/ram0 rw initrd=0x82000000,16M eth=08:06:46:E6:04:1E init=/bin/sh
Строка в порядке. Для удобства я установил время ожидания нажатия эникея в 3 сек. Теперь сохраняем сделанное командой "saveenv" и перезагружаем камеру командой "reset".
...И попадаем в консоль камеры! ))
Проверяем, где хранится хэш пароля рута командами "cat /etc/passwd" и "cat /etc/shadow" . В моей камере нужная строка нашлась в файле pssswd:
root:abNRiWU6DU8m.:0:0:root:/root:/bin/sh
Как-либо изменить пароль рута не получилось, система почему-то оказалась в ридонли режиме. Ну да и не надо, у нас есть строка с хэшем! Копируем её в файл "passw" на компе с линуксом. И просим Джона расшифровать её (точнее, подобрать пароль, хэш которого будет совпадать с имеющимся):
Код: Выделить всё
:~$ echo root:abNRiWU6DU8m.:0:0:root:/root:/bin/sh > passw
:~$ john passw
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2-16])
Press 'q' or Ctrl-C to abort, almost any other key for status
Warning: MaxLen = 13 is too large for the current hash type, reduced to 8
(немного ждём, Джон работает - не долго, хэш короткий, значит, и пароль небольшой...)
tl789 (root)
1g 0:00:04:55 3/3 0.003379g/s 4074Kp/s 4074Kc/s 4074KC/s tm8wt..tl78A
Use the "--show" option to display all of the cracked passwords reliably
Session completed
:~$ john --show passw
root:tl789:0:0:root:/root:/bin/sh
1 password hash cracked, 0 left
Вуа-ля! Пароль подобран! tl789 - фантазия у китайцев не ахти )))
Теперь нужно снова перезагрузить камеру и войти в u-Boot, чтобы убрать из строки bootargs текст инициализации и дописать её айпишниками. Не забудьте про "saveenv" перед ребутом:
Код: Выделить всё
DM368 IPNC :>run addargs; run addip;
DM368 IPNC :>printenv bootargs
bootargs=mem=48M console=ttyS0,115200n8 root=/dev/ram0 rw initrd=0x82000000,16M eth=08:06:46:E6:04:1E ip=172.22.33.93:172.22.33.92:172.22.33.1:255.255.255.0f
DM368 IPNC :>saveenv
Saving Environment to NAND...
Erasing Nand...
Erasing at 0x240000 -- 100% complete.
Writing to Nand... done
DM368 IPNC :>reset
Но просто так перезагрузиться командой "reboot" не выйдет, всё из-за этого ридонли... Если камера под рукой, то можно просто питание ей передёрнуть и всё. Если удалённо, то "усиленной" командой "shutdown -r -n -f now"
Камера загружается, вводим логин и полученный пароль - и мы в консоли с правами рута!