识别字节数组中的重复数据序列

数据挖掘 数据挖掘
2022-03-10 00:47:53

给定一个十六进制数据样本,我想识别在整个样本中重复的 UNKNOWN 字节序列。(不搜索已知字符串或值)我正在尝试对网络协议进行逆向工程,并且正在确定数据包中的数据结构。作为我正在尝试做的一个例子(尽管规模较小):

(af:b6:ea:3d:83:02:00:00):{21:03:00:00}:[b3:49:96:23:01]

{21:03:00:00}:(af:b6:ea:3d:83:02:00:00):01:42:00:00:00:00:01:57

(38:64:88:6e:83:02:00:00):{26:03:00:00}:[b3:49:96:23:01]

{26:03:00:00}:(38:64:88:6e:83:02:00:00):01:42:00:00:00:00:00:01

显然,这些很容易通过肉眼发现,但数据中包含数百个字符的模式则不然。我并不期待解决方案的灵丹妙药,只是朝着正确的方向轻推,甚至更好的是预制工具。

我目前在 C# 项目中需要这个,但我对任何和所有工具都持开放态度。

1个回答

我相信您所指的问题是“时间序列数据中的主题发现”。该领域已经存在大量研究文献,因此您可以浏览这些文献。如果你处理的数据不是很大,可以找一些比较容易实现的算法。

如果数据很大,您可以查看该领域的最新出版物。作为起点,我建议您看一下 Motif Discovery 在 SAX 中是如何完成的。SAX 将连续信号作为输入并将它们离散化。然后将这些离散级别存储为字母表。在我看来,这个结果数据看起来很像你的。看看他们在“在大规模时间序列数据库中挖掘主题”中所做的事情。