逛闲鱼看到有富姐免费送全新的联通摇头机VS302,贪小便宜的我赶紧付了9块9邮费拿下。到手竟然是一个硕大的爱马仕盒子包装,里面还带着爱马仕的问候信,果然是富姐,拿爱马仕羞辱垃圾佬
对爱马仕不感兴趣,只喜欢研究摄像头。但是拆开大失所望,看到的是个一颗富瀚的主控。没玩头,互联网上几乎没任何资料,更没有开源的固件可以使用。
硬件参数
-
型号:联通华盛通讯 VS302
-
SoC:富瀚微Fullhan FH8852V200
-
CMOS:格科微 GC4653 真·400万
-
DDR:SoC集成64MB
-
ROM:16MB NOR
-
网络:有线 + WiFi,模块为SSV6155P USB接口
-
生成厂家:从系统内的痕迹和主板丝印看,应该是易莱孚
-
启动日志内得到的设备信息
============================================= Kernel version : Linux 4.9.129 Kernel date : 2023-05-01 23:40:35 SDK version : bsp:FH885XV210_IPC_V1.0.0_20210928 sdk:FH885XV200_IPC_V1.1.0_20210716 patch:FH885XV200_IPC_V1.1.0.FP34_20230421 Model name : DUC-L73PA1250 FW version : 23.1207.1913 Build date : 2023-12-07T19:18 Chip name : FH8852V200 =============================================
拿到手后搜这型号才发现竟然还上了富瀚微的官网:https://www.fullhan.com/en/index.php?c=article&id=503 早看到是Fullhan Inside的话我9块9邮费也不想掏了
但难能可贵的是,和其他大多数无良厂家截然相反,别人都是把2MP/3MP的CMOS给插值虚标到4MP,这款机器明明用的真·4MP的CMOS GC4653,可以看到视频的分辨率也确实是2560x1440p,但厂家却把摄像头标宣传为3MP
获取root权限
接上UART串口,先让他正常启动,得到启动日志。进入linux shell需要密码,没有。重启使用E
中断启动进入uboot,但是uboot也需要密码,提示### Please input uboot password: ###
,也没有。namp扫描IP,没有一个端口开放。保护得真好,没办法只能把Flash焊下来用编程器读取了
闪存读出来可以看到uboot env内有参数ubootpwd=b817359827ef9919b7a0b7326e8c23b680196490f951c57c7f268f476fc16358
,是一段hash,算法未知。网上没找到已知的对应密码,不过也不需要了
从启动日志得到的闪存布局
[ 1.037943] 0x000000000000-0x000000010000 : "bootstrap"
[ 1.044565] 0x000000010000-0x000000020000 : "uboot-env"
[ 1.049515] 0x000000020000-0x000000060000 : "uboot"
[ 1.054425] 0x000000060000-0x000000300000 : "kernel"
[ 1.059298] 0x000000300000-0x000000380000 : "data"
[ 1.064156] 0x000000380000-0x000000870000 : "app"
[ 1.068739] 0x000000870000-0x000000b10000 : "kernel1"
[ 1.073864] 0x000000b10000-0x000001000000 : "app1"
从中提取出app分区,格式是squashfs,使用squashfs-tools解包,根目录下有密码文件shadow
,内容为root:$1$REnaghWZ$A5NEv7tAg6QM/.6o1ljpX/:18701:0:99999:7:::
,启动后会被映射到/etc/shadow
。网上也没有现成的密码。将密码清空后,重新打包为squashfs分区并使用编程器写回到闪存中
启动后回车,输入用户名root,无需密码顺利进入linux shell,获得root权限
/app # uname -a
Linux (none) 4.9.129 2023-05-01 23:40:35 armv6l
/app # cat /proc/cpuinfo
processor : 0
model name : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS : 2.00
Features : half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xb76
CPU revision : 7
Hardware : FH8852V2X0
Revision : 0000
Serial : 0000000000000000
预留后门:TF卡获取root权限,开启telnetd
继续在系统里转悠,发现一些有意思的脚本文件
/app/app_init.sh
内,留有TF卡升级用的后门
if [ -d /mnt/sd/upgrade ] ; then
if [ -f /mnt/sd/upgrade/img_up ] ; then
cp /mnt/sd/upgrade/img_up /home/
chmod +x /home/img_up
fi
if [ -f /mnt/sd/upgrade/iu.sh ] ; then
cp /mnt/sd/upgrade/iu.sh /home/
elif [ -f $cur_dir/iu.sh ] ; then
cp $cur_dir/iu.sh /home/
elif [ -f /usr/bin/iu.sh ] ; then
cp /usr/bin/iu.sh /home/
fi
if [ -f /home/iu.sh ] ; then
chmod +x /home/iu.sh
/home/iu.sh -s
fi
rm -f /home/iu.sh
fi
我们可以在TF卡内创建目录upgrade,其内放入一个文件,名为iu.sh
,内容如下
#! /bin/sh
echo "root::18701:0:99999:7:::" > /etc/shadow
telnetd &
插入机器内并重启,摄像头就会自动将root密码清零并打开telnet。需要注意的是,这里替换的密码文件是运行在内存中的,闪存中的并未改变,因此重启后会失效。
主程序 /app/apollo
主程序配置文件app.cfg
位于/app/prodit/PSEWN-04/config
,是主程序的参数配置文件,只把感兴趣的几个参数摘出来
cloud_enable=yes
cloud_uc=yes
mptool=no
onvif=no
rtsp=no
telnetd=auto
web=no
yogurt=auto
- 前两个是云开关,显而易见
- rtsp改为yes可以打开rtsp端口8554,但是有密码,看不了,apollo内找到的下面这行,不对
/user=admin_password=tlJwpbo6_channel=1_stream=1.sdp?real_stream
- onvif和web,默认是关闭的,改为yes也不起作用,因为缺少httpd服务器和文件
- yogurt,酸奶?不知为何物。设为yes后摄像头会打开9876端口,telnet可以连入,作用未知,curl返回empty response
- mptool,亦不知为何物,可能是原厂调试用的程序。设为yes后摄像头会断开云连接,同时打开新的端口,包括843,1300,8699,9876,其中只有843可以响应,但也是empty response
- telnetd,设为yes后可以开机自动运行telnetd
进入uboot
虽然已经没有任何必要了,但还是写一下进入uboot的方式。 先进入linux shell,运行命令
fw_setenv ubootpwd
fw_setenv bootdelay 3
reboot -f
重启后迅速按E
就可以免密码进入uboot了,有一些常见的功能,可以从tftp和TF卡内下载内容到闪存上
需要注意的是,每次重启进入linux系统后,有一个脚本/app/app_check_setting.sh
会检测uboot env并和预置的只读文件/app/sysinfo/uboot_env
做比对,如果ubootpwd
和bootdelay
被改变了的话,脚本会重新将其重置为预设值,即b817359827ef9919b7a0b7326e8c23b680196490f951c57c7f268f476fc16358
和0
可以修改squashfs分区后重新打包写回闪存,但没什么必要了
telnet登录升级固件
ps |grep apollo
找到主程序apollo的pidkill -9 pid
cat mtd5_new > /dev/mtdblock5
reboot -f
开启RTSP协议,本地播放视频
能打开协议和端口,但是无法知道用户名密码,VLC提示密码错误。摄像头内没有找到有配置的地方。有待进一步研究,欢迎提供线索
共用固件的其他型号
通过分析固件内的配置文件,发现可能共用同一个固件的型号有
- 联通枪机 VS301_400 代号 DUC-L73PA1250-PGENN-03
- 未知枪机 代号 DUC-L73PA1250-PGENN-01
- 未知摇头机,代号 DUC-L73PA1250-PSEWN-02
- 易莱孚摇头机 EA9103-V2 代号 DUC-L73PA1250-PSEWN-05
- 未知枪机 代号 DCM-L73PA1100-PGENN-01