сброс пароля в falcon eye dvr fe-004H-KIT (ДАЧА) и не только - обработка в linux.

Jul 11, 2019 17:41

Файл прошивки по email на supportvideo@benitex.ru выложили для скачивания по ссылке в гуглдрайв (прислал им фото корпуса спереди, сзади, штрихкод снизу согласно FAQ на их сайте).
--------------cut-------------
Для перепрошивки выполните следующие действия:

1.
Отформатируйте USB флеш накопитель до 4GB в формате FAT32 и запишите все файлы из архива (без каких либо папок)в корень USB накопителя.**
2.
Вставьте USB накопитель в разъем регистратора. Затем выключите его из сети. Снова включите: последует процесс обновления (На экране появится надпись Upgrading…).***

После апгрейда прошивки регистратор переходит в показ изображения с камер (с перезагрузкой видимо).

TLDR:

Комплект продавался в мерлене: falcofalcon eye dvr fe-004H-KIT (ДАЧА) + 4 аналоговые камеры.
500Gb hdd (no SMART support)
vendor https://falconeye.su/
vendor dox: https://falconeye.su/manuals/dvrcms.pdf , https://falconeye.su/Products/138/67/FE-004H-KIT-start/
habr user level review of similar but not the same dvr: https://habr.com/en/post/374597/

Настроить dvr быстро и удобно по сети можно из под windows - на 7ке софт "взлетел".
Если есть usb1.1 мышь и клавиатура, то удобно и с консолью работать, но клава купленная в 2019м и мышь usb 2.0 уже не видны системе.

-------------------------
IPшник не дефолтный, статический - сам ставил.
Nmap scan report for 192.168.1.220
Host is up (0.00084s latency).
Not shown: 65528 closed ports
PORT STATE SERVICE
23/tcp open telnet
6600/tcp open mshvlm
7700/tcp open em7-secom
8000/tcp open http-alt
40001/tcp open unknown
40002/tcp open unknown
40003/tcp open unknown
MAC Address: 14:90:90:07:D3:8F (KongTop industrial(shen zhen)CO.)

Nmap done: 1 IP address (1 host up) scanned in 6713.00 seconds

на 8000 порту браузеру отдаёт exe файл клиента dvr и больше ничего нет.
-------------------------

После перепрошивки пускает в telnet пользователем root без пароля (как с подключённым, диском, так и без него), а в утилите под windows подходит user/пароль admin/00000000 .
[olli@dell15 ~]$ telnet 192.168.152.64
Trying 192.168.152.64...
Connected to 192.168.152.64.
Escape character is '^]'.

(none) login: root
Password:

BusyBox v1.1.2 (2011.05.03-03:19+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

Welcome to HiLinux.
None of nfsroot found in cmdline.
~ $

HiLinux вероятнее всего изначально был подготовлен ребятами из компании motorolla ,
но 2.6 based ядра уже сто лет как нету на https://sourceforge.net/projects/hilinux/files/ , на github с ником motomagx ничего подходящего под этот мой dvr,
так что исходник ядра придётся видимо брать с https://kernel.org, но мне пока не надо - не проверял

~ $ ls /bin
addgroup dd gunzip login ping su
adduser delgroup gzip ls printenv sync
ash deluser hostname lsattr ps tar
bbconfig df ip mkdir pwd touch
busybox dmesg ipaddr mknod rm true
cat dumpkmap ipcalc more rmdir umount
chattr echo iplink mount run-parts uname
chgrp egrep iproute mountpoint sed uncompress
chmod false iptunnel mt setarch usleep
chown fdflush kill mv sh vi
cp fgrep linux32 netstat sleep watch
cpio getopt linux64 nice stat zcat
date grep ln pidof stty
~ $ ls /
bin hddc mkimg.rootfs root usbb
boot hddd mknod_console sbin usbc
dev home mnt share usbd
etc lib nfsroot sys usr
hdda linuxrc opt tmp var
hddb lost+found proc usba
~ $

~ $ ps --help
BusyBox v1.1.2 (2011.05.03-03:19+0000) multi-call binary

Usage: ps

Report process status

Options:
w wide output

~ $
~ $ ps w
PID Uid VmSize Stat Command
1 root 656 S init
2 root SW< [kthreadd]
3 root SW< [ksoftirqd/0]
4 root SW< [events/0]
5 root SW< [khelper]
36 root SW< [kblockd/0]
39 root SW< [cqueue/0]
43 root SW< [ata/0]
44 root SW< [ata_aux]
52 root SW< [khubd]
55 root SW< [kseriod]
75 root SW [pdflush]
76 root SW [pdflush]
77 root SW< [kswapd0]
78 root SW< [aio/0]
167 root SW< [mtdblockd]
206 root SWN [jffs2_gcd_mtd1]
221 root 1060 S < udevd --daemon
248 root SW< [hieth_skber]
253 root 356 S telnetd
283 root SW< [scsi_eh_0]
286 root SW< [scsi_eh_1]
548 root 10928 S ./hi_dvr
590 root 328 S httpd -p 8000 -h /home/www
596 root 628 S /home/app/upnp add 8000 6600 40001 40002 40003 7700
612 root 168 S udhcpc -s /home/app/udhcpc.script -i eth0
625 root SW< [hidog]
638 root 1092 S ./net16
639 root 872 S ./mobile
652 root 644 S /bin/sh ./check
653 root 752 S -sh
3169 root 756 S -sh
15700 root 404 S sleep 2
15701 root 672 R ps w
~ $

~ $ uname -a
Linux (none) 2.6.24-rt1-hi3515v100 #7 Mon Nov 21 11:38:22 CST 2011 armv5tejl unknown
~ $
~ $ cat /proc/cpuinfo
Processor : ARM926EJ-S rev 5 (v5l)
BogoMIPS : 219.54
Features : swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant : 0x0
CPU part : 0x926
CPU revision : 5
Cache type : write-back
Cache clean : cp15 c7 ops
Cache lockdown : format C
Cache format : Harvard
I size : 16384
I assoc : 4
I line length : 32
I sets : 128
D size : 16384
D assoc : 4
D line length : 32
D sets : 128

Hardware : hi3515v100
Revision : 0000
Serial : 0000000000000000
~ $

Подцепил к fedora 30 диск от dvr'а:
[root@dell15 olli]# fdisk -l /dev/sdb
Disk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: 12 HN-M500MBB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device Boot Start End Sectors Size Id Type
/dev/sdb1 10297665 976768064 966470400 460.9G 83 Linux
/dev/sdb2 63 514079 514017 251M 82 Linux swap / Solaris
/dev/sdb3 514080 10297664 9783585 4.7G 83 Linux

Partition table entries are not in disk order.
[root@dell15 olli]#

4.4 гига отданы разделу неясного пока назначения:
[root@dell15 olli]# df -h |grep sdb3
/dev/sdb3 4.6G 156K 4.4G 1% /mnt/sdb3
[root@dell15 olli]#

в dns первыми стоят dns от opendns.com, 8.8.8.8 ,AFAIR, я сам вбивал в настройках dhcp на маршрутизаторе:
~ $ cat /etc/resolv.conf
nameserver 208.67.222.222
nameserver 208.67.220.220
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 192.168.152.254
~ $

На регистраторе в деревне из-за частых перепадов питания (или я вынимал батарейку - не помню уже) сбилось время , ntp сервер был недоступен за отсутсвием inet'а -
в результате больше половины записей 1999го года.

[root@dell15 olli]# ls /mnt/sdb1 | head -n 1;echo -e "\n--skipped--"; ls /mnt/sdb1|tail -n 6
19991130_000019_ps.h264

--skipped--
20140915_140000_ps.h264
EventLog.log
lost+found
main_search.db
sub_search.db
SysLog.log
[root@dell15 olli]#

информация ffmpeg:
[olli@dell15 from_dvr]$ ffmpeg -i /mnt/sdc1/20140910_160000_ps.h264 -hide_banner
[h264 @ 0x5631748ab380] Format h264 detected only with low score of 1, misdetection possible!
Invalid UE golomb code
[h264 @ 0x5631748ace80] pps_id 3199971767 out of range
Invalid UE golomb code
[h264 @ 0x5631748ace80] pps_id 3199971767 out of range
[h264 @ 0x5631748ace80] decode_slice_header error
[h264 @ 0x5631748ace80] no frame!
[h264 @ 0x5631748ace80] slice type 32 too large at 63
[h264 @ 0x5631748ace80] decode_slice_header error
[h264 @ 0x5631748ace80] non-existing PPS 129 referenced
[h264 @ 0x5631748ace80] decode_slice_header error
[h264 @ 0x5631748ace80] SEI type 1 size 480 truncated at 96
[h264 @ 0x5631748ace80] SEI type 6 size 1576 truncated at 80
[h264 @ 0x5631748ace80] SEI type 64 size 488 truncated at 56
[h264 @ 0x5631748ace80] sps_id 32 out of range
Last message repeated 3 times
[h264 @ 0x5631748ace80] sps_id 1 out of range
[h264 @ 0x5631748ace80] sps_id 2 out of range
[h264 @ 0x5631748ace80] FMO not supported
[h264 @ 0x5631748ace80] reference overflow (pps)
[h264 @ 0x5631748ace80] sps_id 32 out of range
[h264 @ 0x5631748ace80] SEI type 1 size 288 truncated at 96
Input #0, h264, from '/mnt/sdc1/20140910_160000_ps.h264':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h264 (Constrained Baseline), yuv420p(progressive), 352x288, 25 fps, 25 tbr, 1200k tbn, 50 tbc
At least one output file must be specified
[olli@dell15 from_dvr]$

Обработка видео в linux:

Ман на ffmpeg очень большой и требует понимания большого количества информации о кодеках и формате video файлов.
В двух словах - в формате видео есть контейнеры, которые содержат видеопотоки, которые содержат пакеты и в них фреймы.
Для контейнеров нужны кодеки. У видео есть разрешение и frame rate.
Вот вкратце и всё что я знаю о видео на данный момент. :)

Всё это можно скормить ffmpeg через командную строку, но уж больно много
там опций, да и ман академичен. Правда в irc на freenode есть канал ffmpeg.

Не зная ничего о видеокодеках задача написать софт или хотя бы скрипт для разбора контейнера становится неподъёмной когда на всё про всё есть два-три дня.
В результате проще всего найти софт который уже умеет это.
В линухе это ffmpeg с библиотеками и некоторое количество GUI программ интерфейсов к его библиотекам или самой утилите ffmpeg.

Для отладки прогнал по полному файлу ffprobe с опцией максимального журналирования ошибок:

ffprobe -i ./${dvr_source_stream_file} -hide_banner -show_log 32 \
-show_entries packet=pts_time,duration_time,stream_index
2>./error-log >ffprobe-output

из файлов ffprobe-output и error-log (grep -iv stream 0|wc -l) выяснилось, что поток имеется только один (нулевой) - свободная библиотека-кодек от cisco для h264, которую ставят в линухи не поддерживает data partitioning который используется в моём dvr для файлов h264.

Попытки отрезать первые 64..128 килобайт данных для этого dvr были лишними.

Нижеследущее написано про fedora 30:

QWiinFF (GUI к ffmpeg) файл в mp4 сконвертировал.
Там правда интерфейс неочевидный - пишет про 100% done имея ввиду что done добавление файла.
Open (+) -> Files to be converted -> convert to: MPEG 4 -> Preset: MPEG 4 auto.
После этого стало возможным запустить собственно конвертирование и спустя несколько минут Done сменилось на Finished.
Сконвертированный файл уже нормально воспринимается медиа плеером mpv:

[olli@dell15 2dig]$ mpv 20140905_170000_ps.mp4
Playing: 20140905_170000_ps.mp4
(+) Video --vid=1 (*) (h264 352x288 25.000fps)
VO: [gpu] 352x288 yuv420p
(Paused) V: 00:12:05 / 04:00:41 (5%)

Продолжение в других постах с тегом dvr.

video, fedora, dvr, linux, video surveillance, url, life, admin notes

Previous post Next post
Up