背景:
需要实现海康摄像机外网访问,由于摄像机没有公网IP(这个可以通过端口映射解决),且所在网络不是专线,公网IP会变动。通过DDNS动态域名解析或者使用萤石云、easynvr等云平台也可以解决,但是这些平台都需要付费,且费用较高,于是我就想通过解析协议包的方式来获取摄像机IP并进行更新。
实现步骤:
**一、配置FTP协议。**进入摄像机后台系统,浏览器输入摄像机IP即可,用户名密码默认是admin和a12345678,登录成功后点击“配置”–“网络”–“高级配置”–“FTP”,进行ftp配置,这是摄像机抓拍人脸后向服务器发送图片的协议,若服务器没有搭建FTP服务,可自行百度搭建。
二、捕获协议包。 在ftp服务所在的服务器上通过tcpdump执行sudo tcpdump -i 网卡号 host 网卡号对应的ip地址 and port ftp服务端口号 -w 协议包保存文件.pcap
命令抓取ftp服务端口上的协议包并保存,若没有安装tcpdump可百度安装。
三、创建device(摄像机)数据库。
CREATE TABLE `t_device` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`devicecode` varchar(200) DEFAULT NULL COMMENT '设备编码',
`devicename` varchar(50) DEFAULT NULL COMMENT '设备监控名称',
`deviceip` varchar(50) DEFAULT NULL COMMENT '设备ip',
`deviceport` varchar(50) DEFAULT NULL COMMENT '设备端口号',
`username` varchar(50) DEFAULT NULL COMMENT '设备用户名',
`password` varchar(50) DEFAULT NULL COMMENT '设备登录密码',
`devicetype` int(10) DEFAULT '1' COMMENT '设备类型(1:摄像机,2:NVR)',
`channel` varchar(50) DEFAULT NULL COMMENT 'NVR存通道数,其余存通道id',
`vendor` varchar(50) DEFAULT NULL COMMENT '生产厂商(海康:HK,大华:DS)',
`position` varchar(50) DEFAULT NULL COMMENT '安装位置',
`disknumber` varchar(50) DEFAULT NULL COMMENT '硬盘序列号',
`diskchannel` varchar(200) DEFAULT NULL COMMENT '监控点编码',
`type` varchar(10) DEFAULT '2' COMMENT '设备状态;1、在线,2、离线',
`machinename` varchar(50) DEFAULT