浅谈网络摄像头分析

 

某宝买的热销网络视频监视器,拆下来看了下主板,有wifi模块和一个SOC SD口。
查看丝柔并没查到CPU信息,
在串口中接入针脚,使用rs232,线连接,不同板子有可能也会使用rs485.

在Windows使用putty串口115200连接

一些启动信息,内核是linux3.18.20
使用的是busbox,没用过这东西不知道
可以看到按crtl+u进入u-boot
help查看uboot支持命令行,

使用sf 命令来读取flash固件信息到内存
从启动信息来看有16MB 的信息,
但是并没有给出固件存储格式
在用sf读取之前得先使用sf probe 0命令才可以读取
sf read 0xa00000000 0x0 0x1000000
在使用putty设置log日志
md 0xa00000000 0x1000000
得到文本日志,,在更改二进制文件时需要考虑大小端问题,
因为我这个arm是小端所以需要,python来更改一下

 

在linux中跑一下.py 代码如下

 

#!/usr/bin/env python3
import binascii

 

hex_file = open('putty.log','r')
bin_file = open('hex2bin.bin','wb')
index=0
while True:
line = hex_file.readline().strip() #delete head and tail spance
if not line:
break

1
2
3
4
5
strs = line.split( ' ' )                  #分割方法,以空格分割整个行
 
index = 1
while index< 5 :
     string = strs[index]

print(strs)

print(string)

print(string[-2:])

print(string[-4:-2])

print(string[-6:-4])

print(string[:-6])

1
2
3
4
5
bin_file.write(binascii.a2b_hex(string[ - 2 :]))
bin_file.write(binascii.a2b_hex(string[ - 4 : - 2 ]))
bin_file.write(binascii.a2b_hex(string[ - 6 : - 4 ]))
bin_file.write(binascii.a2b_hex(string[: - 6 ]))
index + = 1

得到的二进制文本使用binwalk分析一下,binwalk hex2bin.bin
得到结果如下:

文件系统分别是squashfs和 jffs2
使用命令 binwalk -Me hex2bin.bin提取分析文件系统
找几个关键文件信息如/etc/配置信息与启动信息Src启动脚本
其中我在squashfs-root中看到了如下脚本

 

#!/min/sh

 

/bin/tar xzf /dav/r2_modules.tgz -C /home/
if [ -e /home/r2_modules ]
then
cd /home/r2_modules
./load3516cv300 -a -sensor jxf22 -osmem 64 -total 128 -offline
cd /dav
fi

 

#rm -rf /home/r2_modules

 

看来是海思的一款soc
并且使用readelf查看ko模块信息,是

cpu架构信息,

 

其中有一个ko模是hi3516_sensor.ko
用IDA反编译看了一下sensor_i2c_read 函数使用i2c_transter来获取传感器信息,
自己在这里编写ko来 HOOK这个函数,或者HOOK IRP也可以获取传感器信息,
,随笔



更多【浅谈网络摄像头分析】相关视频教程:www.yxfzedu.com


评论