针对Besder网络摄像头的逆向分析和漏洞挖掘

来源:岁月联盟 编辑:猪蛋儿 时间:2020-01-29
0x0ff4 :  unused :  9858625403406765244 :   00:00:00.423865000
0x0ff5 :  unused :    20212055150009910 :   00:00:00.423179000
0x0fff :  unused : 15147142017989187717 :   00:00:00.384266000
0x0ff6 :  unused : 16036212785124225768 :   00:00:00.423033000
0x0ff7 :  unused :  3934626923425214118 :   00:00:00.423048000
0x0fef :  unused :   784495433133620875 :   00:00:00.465630000
0x0ff0 :  unused :  8924739629740135316 :   00:00:00.465648000
0x0ff8 :  unused : 17166435733447359522 :   00:00:00.422446000
0x0ff9 :  unused : 11108002682450497409 :   00:00:00.422467000
0x0ffa :  unused : 11116907754345188397 :   00:00:00.421792000
0x0ffb :  unused :  8156710575546691230 :   00:00:00.421819000
0x1000 :  unused :  6252091348165092127 :   00:00:00.384556000
0x0fe9 :  unused :  5183855669207984885 :   00:00:00.751042000
0x0fea :  unused :   829040888724800310 :   00:00:00.750799000
Status
Factory: done
Last Check In: 2019-04-17 10:59:17 -07:00
Total Successes: 3983
Total Unique Replies: 49
Total Bad Results: 114
Error:
Errors: {}
使用此方法,我们可以在30分钟内将0x0的空间模糊化为0x1000 !每个光纤都将使用其自己的套接字,发送消息,然后等待接收。如果超时,它将丢弃该消息并移至下一条消息。
如果摄像头由于某种原因而关闭,则对超时设置2分钟的宽限期,以等待摄像头尝试响应。这样可以确保所有设备被覆盖。因为如果确实出现故障,则必须有人重新启动摄像头。
最常见的响应是
"{ /"Name/" : /"SystemInfo/", /"Ret/" : 102, /"SessionID/" : /"0x00000000/" }/n"
大约有4000种魔法字段,不过这是一个登录失败数据包。有趣的是,如果未获得密码或用户名205,它将响应一个不同的错误代码。
"{ /"AliveInterval/" : 0, /"ChannelNum/" : 0, /"DeviceType /" : /"DVR/", /"ExtraChannel/" : 10744252, /"Ret/" : 205, /"SessionID/" : /"0x0000000B/" }/n"
Bytes: ["0x03e8"]
不管做什么,都会返回响应成功的消息,所以有必要找出其中的原因:
"{ /"Name/" : /"/", /"Ret/" : 100, /"SessionID/" : /"0x00000000/" }/n"
Bytes: ["0x03ea", "0x0410", "0x0416", "0x041a", "0x0578", "0x05e0", "0x05dc", "0x05de", "0x0670", "0x06ea", "0x0684", "0x0676", "0x07d2"]
这就是“保持活动状态”,只要它收到一个保持活动状态的数据包,就可以保持与摄像头的连接。
"{ /"Name/" : /"KeepAlive/", /"Ret/" : 100, /"SessionID/" : /"0x00000000/" }/n"
Bytes: ["0x03ee"]
经过一些非常标准的结果以及对SystemInfo的实际响应,我最终进入了一个有趣的领域,即对该协议进行深入分析。
"{ /"Name/" : /"OPMonitor/", /"Ret/" : 103, /"SessionID/" : /"0x00000000/" }/n"
Bytes: ["0x0582", "0x0585"]
"{ /"Name/" : /"OPPlayBack/", /"Ret/" : 100, /"SessionID/" : /"0x00000000/" }/n"
Bytes: ["0x058c", "0x0591"]
"{ /"Name/" : /"OPPlayBack/", /"Ret/" : 103, /"SessionID/" : /"0x00000000/" }/n"
Bytes: ["0x0590"]
"{ /"Name/" : /"OPTalk/", /"Ret/" : 504, /"SessionID/" : /"0x00000000/" }/n"
Bytes: ["0x0596"]
"{ /"Name/" : /"OPTalk/", /"Ret/" : 103, /"SessionID/" : /"0x00000000/" }/n"
Bytes: ["0x059a", "0x059b"]
"{ /"Name/" : /"/", /"Ret/" : 119, /"SessionID/" : /"0x00000000/" }/n"
Bytes: ["0x05a0"]
"{ /"Name/" : /"OPLogQuery/", /"OPLogQuery/" : null, /"Ret/" : 100, /"SessionID/" : /"0x0/" }/n"
Bytes: ["0x05a2"]
"{ /"Name/" : /"OPSCalendar/", /"OPSCalendar/" : { /"Mask/" : 0 }, /"Ret/" : 100, /"SessionID/" : /"0x0/" }/n"
Bytes: ["0x05a6"]
"{ /"Name/" : /"/", /"Ret/" : 109, /"SessionID/" : /"0x00000000/" }/n"
Bytes: ["0x05a8"]
"{ /"Name/" : /"OPTimeQuery/", /"OPTimeQuery/" : /"2000-12-07 02:55:43/", /"Ret/" : 100, /"SessionID/" : /"0x0/" }/n"

上一页  [1] [2] [3] [4] [5] [6] [7]  下一页