Cor*_*ott 2 algorithm hash search heuristics
我目前正在开展一个小方案项目,结果证明这是一个挑战.这是设置:我有一个相当古老的处理器,用于各种产品.各种应用程序有大约500种不同的固件版本.它们有时在几个字节~1k之间有所不同,其他时间只有5%.现在,我想通过为它创建一个唯一的标识符来识别每个版本.我已经将firmewares二进制文件作为文件工作和训练.
目标是,当任何设备到来时,我想尽可能少地读出已安装固件的字节数,因为9600波特的连接速度相当慢.即使固件总共只有大约64k,但完全读取它需要相当长的时间(由于协议开销,时钟速度等等,约5分钟)
我正在考虑一些逻辑,它将解析存储的固件文件,并确定可以使用哪些字节来唯一地识别它.每当一个设备到来时,它会读取每个指纹字节,而不是另一个,就像旧的T9文本预测一样,缩小候选者的范围,直到它找到正确的固件.为此,我需要构建一个包含最优化的指纹字节集的数据库.但是如何训练呢?如何找到超过500个文件的最重要字节?
到目前为止,我已经尝试统计分析文件并找到文件之间差异最大的前50字节.问题是,即使占用50个字节,我也会得到多个创建相同哈希的版本.
任何可能解决问题的建议或算法都将非常受欢迎!如果你有一个与此完全不同的approch的想法,我很乐意听到它!
识别值可能不同的所有字节位置.然后找到"最有效的分离器",即探测该值将在最小子集(在minmax意义上)中分割当前集合的位置,或者更多的子集.
然后递归地重复每个子集的整个过程.这将产生一个决策树,给你(希望很短)的字节序列进行测试.
这是一种启发式方法,可能不是最优的,我希望如此
假设每个分割均衡,但每次在两个子集中产生,则测试序列不会超过10个字节.
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |