博主有个萤石云的室内摄像头,由于一些原因导致不能联网。仅局域网模式下只有一个8000端口开放,这是一个hik-sdk私有协议的接口,可以通过这个接口进行PTZ、视频流查看、机器配置等。

海康威视有个SDK开发包,发现海康、萤石都是调用SDK包中封装的动态库实现摄像头的基本功能。一开始使用海康互连APP,能搜索到设备,但是密码错误(默认密码为验证码,未更改密码)。切换使用萤石云视频APP,能搜索到,配网后搜索不到,手动添加也不行(搜不到设备,偶发能搜索到,但是密码错误)

为了探明原因,从萤石云视频APP入手进行分析。为什么不从萤石云工作室桌面端软件入手?那是因为反编译后指针、结构晦涩难懂,远不如java smail友好。

从海康威视的hcnetsdk这个动态库入手,看看是哪引用了

Pasted_image_20260716215029.png

在其登录逻辑中,进行了判断。这里先使用admin作为用户名,验证码明文作为密码进行登录尝试。如果失败,换成EZ_LOCAL_USER作为用户名,密码(没改情况下是验证码)采用AddMD5Util.encrypt16()进行加密
Pasted_image_20260716215145.png

Pasted_image_20260716215250.png

AddMD5Util.encrypt16()的方法也就是MD5处理后取哈希值的[8:24]即16个字节长度作为密码传入登录函数
Pasted_image_20260716215310.png

效果图:

web端:

Pasted_image_20260716222152.png

GUI端:
Pasted_image_20260717222710.png