Добрый день, уважаемые!
Сегодня я расскажу, как у китайской версии сетевого видеорегистратора (NVR) модель HikVision DS-7108N-SNпеределать язык оболочки на английский.
Этот регистратор я приобрел на аукционе ТаоБао по достаточно демократичной цене. После подключения оказалось, что Web-интерфейс доступен на английском языке, однако оболочка представлена только на китайском и нигде нет возможности выбора языка.
Поиск прошивок в интернете не дал никаких результатов.
Поэтому я решил попробовать сделать все самостоятельно. Все прошло успешно, а процедурой «декитаезации» я с удовольствием поделюсь с вами!
Сразу скажу, что процедура в некотором плане опасна, есть вполне реальная вероятность получить на выходе нерабочее устройство. Поэтому за возможные проблемы, никакой ответственности я не несу, физически помочь восстановить не смогу. Все что вы делаете, вы делаете на свой страх и риск и должны осознавать возможные последствия!
Итак, версия моей прошивки с завода: V3.0.7 build 140725
Версия регистратора: HikVision DS-7108N-SN
Вам потребуется:
- Машина с любой ОС Linux;
- Установленный на ней TFTP Сервер (я использовал tftpd-hpa);
2. Заходим через Telnet на регистратор. Имя пользователя root (не admin), пароль по-умолчанию «12345».
3. В домашней папке /home вы увидите appи hik. Как видно на скриншоте ниже, hik примонтирован к mtdblock1, а app – tmpfs в ОЗУ.
4. Зайдите в /home/hik. Нас тут интересуют два файла — это загрузочный скрипт (start.sh) и архив app.tar.lzma, сжатый lzma, где хранятся текстуры кнопок и конфигурационный файл с языками.
5. На самом регистраторе нет нужных утилит для редактирования, поэтому проще всего перекинуть файлы через TFTP на «большой» компьютер.
tftp -p -l start.sh YOUR-TFTP-SERVERtftp -p -l app.tar.lzma YOUR-TFTP-SERVER
6. На компьютере открываем скрипт start.shи добавляем в начало строчку для запуска демона Telnet. Это необходимо для случая, если после наших манипуляций оболочка регистратора не загрузится, то мы все равно будем иметь доступ через Telnet.
Добавляем[ -e /usr/sbin/telnetd ] && /usr/sbin/telnetd 32
7. Распакуйте архив app.tar.lzma
8. В папке configвы увидите файл конфигурации 1024x768.cfg
Полистайте файл, обратите внимание, что в нем, помимо китайского, уже присутствует английский язык.
Как видите в строчках, заканчивающихся на _cap0 хранится английская версия, а в строчке _cap1 – китайская.
Не мудрствуя лукаво, чтобы не искать, где же задается текущий язык, я решил просто закопировать английскую строку на китайскую.
Подобных строк там тысячи, поэтому вручную изменять их было бы глупо, а я не сумасшедший, поэтому воспользуемся AWK.
awk '{ if ( /_cap0=/ ) {print $0; gsub("_cap0=", "_cap1="); print $0} else { if (! /_cap1=/ ) print $0 } }' 1024x768.cfg >> test.cfg
Логика проста: производится поиск строк и...
Если строка содержит cap0, то она дублируется с подменой cap0 на cap1
Если строка содержит cap1, то эта строка удаляется из файла
Все остальные строки остаются без изменений.
Собственно все. Теперь надо запаковать все в архив и закинуть обратно на регистратор.
Обратите внимание, что для сжатия используется первая версия LZMA 1.
Да, еще хочу заметить, как безобразно заданы права и владельцы у файлов регистратора. Практически у всех файлов доступ 777! Я пока не стал экспериментировать что, да как, поэтому просто задал такие же права у файлов.
В корне распакованного app.tar.lzmaвыполняем
find . | sudo xargs chmod 777find . | sudo xargs chown nobody:nogroup
Создаем архив tar:
tar -cpvf ~/app.tar `ls`Тоже меняем права и владельца:
chmod 777 ~/app.tarСжимаем архив lzma
chown nobody:nogroup ~/app.tar
lzma -6 < ~/app.tar > ~/app.tar.lzmaили так
lzma --lzma1 -z -c ~/app.tar >> ~/app.tar.lzma8. Снова заходим через Telnet на регистратор и закидываем файлы обратно
Места на разделе mtdblock1 мало, поэтому будем писать в память:
cd /home/app/mkdir testcd testtftp -g -r app.tar.lzma YOUR_TFTP_SERVER
Далее, проверим на всякий случай, что архив будет распаковываться:
Если все успешно, подменяем файл:/bin/tar xaf /home/app/test/app.tar.lzma -C /home/app/test
Думаю, что менять права на 777 не требуется, но так было с завода, поэтому делаем так же.rm /home/hik/app.tar.lzmamv /home/app/test/app.tar.lzma /home/hikchmod 777 /home/hik/app.tar.lzma
Не забываем заменить скрипт start.sh. Думаю, вы это сделаете самостоятельно.
Все, перезагружаем регистратор. Радуемся английскому языку!
Спасибо за внимание!