Artificial intelligence 在十六进制文件中查找模式

Artificial intelligence 在十六进制文件中查找模式,artificial-intelligence,machine-learning,data-mining,text-mining,pattern-recognition,Artificial Intelligence,Machine Learning,Data Mining,Text Mining,Pattern Recognition,我有两个不同的文件,每个文件的内容都来自不同的数据流。我从两个不同的文件中收集了一些数据。然后我想搜索文件以找到任何类型的模式,以便在以后的阶段,如果我从流中收集更多的数据,我应该能够区分哪些数据属于哪个流(基于我之前找到的模式) 文件中包含的数据示例可以是:b0 82 91 a2 c3 89 b0 82 4a e3….(更多字节)。。。 虽然我在这里只占用了很少的字节,但是我们可以找到上面两次出现的模式“b082”。因此,输出应该显示模式和它出现的次数。类似地,我们可以有3字节模式,甚至更多字

我有两个不同的文件,每个文件的内容都来自不同的数据流。我从两个不同的文件中收集了一些数据。然后我想搜索文件以找到任何类型的模式,以便在以后的阶段,如果我从流中收集更多的数据,我应该能够区分哪些数据属于哪个流(基于我之前找到的模式)

文件中包含的数据示例可以是:b0 82 91 a2 c3 89 b0 82 4a e3….(更多字节)。。。 虽然我在这里只占用了很少的字节,但是我们可以找到上面两次出现的模式“b082”。因此,输出应该显示模式和它出现的次数。类似地,我们可以有3字节模式,甚至更多字节模式

还有其他示例可以是:aa 00 a7 2f 7b 4c….(更多字节)…aa 01 a7….(更多字节)…aa 05 a7。。。。。 我认为,甚至可以将其视为3个字节的模式,其中两个字节(aa和a7)是固定的,中间一个从00到05不等

这是我能想到的两个例子,尽管可能有更多的模式。甚至可能有一些隐藏的模式无法立即可视化。整个想法是,只要有助于在稍后阶段区分两条流,任何模式都可以。我想我现在更清楚地说明了我的问题。请让我知道以下事情:

  • 我们如何进行这种类型的模式查找

  • 是否有任何工具或库可用于此目的

  • 还有,为了高效、快速的开发,应该使用哪种语言或工具

  • 数据挖掘领域能否为此提供帮助?如果是,如何进行


  • 你的问题还没有完全确定,但我会给你一些建议:

  • 您的模式可能可以表示为正则表达式。如果你不知道这些是什么,我会尝试用你最喜欢的编程语言寻找一个具体的例子。Python是一个很好的选择(核心语言中包含re模块)。对于C++,使用Boosi::ReEX,对于其他语言,使用谷歌:

  • 现在-要使用正则表达式搜索二进制文件(十六进制)而不是文本,请尝试查看以下内容


  • 祝你好运:)

    你的问题还没有完全确定,但我会给你一些建议:

  • 您的模式可能可以表示为正则表达式。如果你不知道这些是什么,我会尝试用你最喜欢的编程语言寻找一个具体的例子。Python是一个很好的选择(核心语言中包含re模块)。对于C++,使用Boosi::ReEX,对于其他语言,使用谷歌:

  • 现在-要使用正则表达式搜索二进制文件(十六进制)而不是文本,请尝试查看以下内容


  • 祝你好运:)

    还有一个想法。它是否适用于您取决于您正在处理的数据量、可以使用的内存量以及它检测到的模式类型是否最终对您的目的有用

    考虑到所有这些条件,您可能希望尝试使用后缀树后缀数组。特别是对于后缀树,有一些算法使您能够在向文本添加字符时不断更新树(所谓的在线后缀树构造),最著名的是Ukkonen算法。这在使用数据流(与固定长度、完全定义的输入文本相反)时可能特别有效

    后缀树(以及类似的后缀数组)表示文本的所有后缀(在字符串结尾的意义上,而不是语言后缀)。因此,它特别适合于(a)检查任何给定字符串是否为文本的子字符串,以及(b)检测文本中重复的子字符串。在正确的位置进行一些修改后,它可以用来检测重复的子字符串,并进行轻微的更改(就像您的示例中的模式,其中一个字符在中间交换)

    对于这些数据结构的全面介绍,以及如果您能够访问大学图书馆或有钱,将非常有帮助。但也有许多与此相关的问题和答案


    如果在进一步阅读之后,您认为值得一试,我可以在回答一个新问题时,特别是关于使用这些算法进行重复模式检测的问题时,进一步阐述我认为后缀树可以如何用于您的目的。

    这里是另一个想法。它是否适用于您取决于您正在处理的数据量、可以使用的内存量以及它检测到的模式类型是否最终对您的目的有用

    考虑到所有这些条件,您可能希望尝试使用后缀树后缀数组。特别是对于后缀树,有一些算法使您能够在向文本添加字符时不断更新树(所谓的在线后缀树构造),最著名的是Ukkonen算法。这在使用数据流(与固定长度、完全定义的输入文本相反)时可能特别有效

    后缀树(以及类似的后缀数组)表示文本的所有后缀(在字符串结尾的意义上,而不是语言后缀)。因此,它特别适合于(a)检查任何给定字符串是否为文本的子字符串,以及(b)检测文本中重复的子字符串。在正确的位置进行一些修改后,它可以用来检测重复的子字符串,并进行轻微的更改(就像您的示例中的模式,其中一个字符在中间交换)

    对于这些数据结构的全面介绍,以及如果您能够访问大学图书馆或有钱,将非常有帮助。但是