分析网络摄像机的UDP包

逆向工程 嗅探 线鲨 互操作性
2021-06-13 21:09:53

我有一个工业IP 摄像机,我想用微控制器读取它的图像,但该摄像机只能从运行其驱动程序/固件的计算机上操作。

我使用 WireShark 访问 UDP 包,但消息似乎已加密(或者至少我无法理解它们),而且我真的不知道如何继续解密控制请求。

我真的很感激任何关于如何继续的想法、提示或一般评论。

以下是计算机在初始化和捕获期间发送到相机的几帧。(正在从摄像头获取帧,但 WireShark 和 Windows 在 LAN 上存在此问题)。

这是相机发送到不受支持的设备的帧之一。** 之间的两个数据字节顺序变化,其余(数据)保持不变。

0000   ff ff ff ff ff ff 00 1b a2 12 c6 b4 08 00 45 00  ..............E.
0010   01 1c 00 01 00 00 80 11 8f d1 a9 fe 00 01 ff ff  ................
0020   ff ff c3 52 c3 52 01 08 5e 5e 71 00 e0 00*01*00  ...R.R..^^q.....
0030   f8 00 34 30 30 32 39 32 32 30 35 31 00 00 84 01  ..4002922051....
0040   13 00 20 00 00 00 0a 00 04 01 00 00 00 00 05 21  .. ............!
0050   00 00 02 0a 00 00*cc*01 e8 03 00 1b a2 12 c6 b4  ................
0060   ff ff a9 fe 00 01 ff ff 00 00 00 00 00 00 a9 fe  ................
0070   00 01 ff ff 00 00 00 00 00 00 00 00 00 00 00 00  ................
0080   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0090   00 00 00 00 00 00 00 00 00 12 c6 b4 00 00 19 01  ................
00a0   01 01 00 00 00 00 00 00 00 00 11 00 03 01 01 00  ................
00b0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00c0   00 00 00 00 00 00 00 00 00 00 e8 03 05 00 00 00  ................
00d0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00e0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00f0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0100   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0110   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0120   00 00 00 00 00 00 00 00 00 00                    ..........

编辑:我花了最后几个小时“做作业”并想,因为我只想阅读它的图像,解密可能有点矫枉过正。重放攻击也有可能达到目的吗?

2个回答

只有一种解决方案始终有效。

看代码。

即,反汇编固件并找到发送或接收数据包的代码。许多嵌入式解决方案通常不是很困难 - 它们往往具有未剥离的符号和大量调试输出,这将帮助您找到必要的位置。

理论上可以运行一些密码分析并尝试推断使用的加密和密钥,但这通常需要更多的经验和努力。

我从来没有仔细分析过 IP 摄像机的专有协议,但多年来我已经推翻了相当多的协议。

如果您可以抓取数百包,我们可能会做更多的事情来帮助您。只是阅读您所写的内容,我所追求的直觉是顺序值实际上就是这样;在协议中用于对帧进行排序的顺序值,特别是因为它们是通过 UDP 发送的。加上最小数据包大小,我想你已经得到了填充。

接下来,一个问题。当你嗅探时,镜头前发生了什么?如果我正在实施这种类型的协议,我会定期发送关键帧,其中散布着大量编码“差异”帧。我会在没有发生任何事情的情况下捕获数据包,然后将其与在相机前挥手时捕获的数据包进行比较。我强烈怀疑与平静的场景相比,挥手会给你带来更多的工作。我也希望关键帧明显更大,但我相信你已经注意到了!