针对Besder网络摄像头的逆向分析和漏洞挖掘
来源:岁月联盟
时间:2020-01-29
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] 下一页
下一篇:开源WAF测试评估方法