Board logo

标题: [文件操作] 二进制文件搜索特征串的问题 [打印本页]

作者: netdzb    时间: 2021-3-15 11:15     标题: 二进制文件搜索特征串的问题

假设二进制文件只有唯一特征串b'PYTHON',我如何分段读入找到
这个特征串的索引位置呢?
假设我读入的缓冲是1024字节,
很有可能我的特征串在2个缓冲区的
分界位置上。

缓冲1读入的是 b'任意字节PYH'
缓冲2读入的是b'HON任意字节'
这样会导致文件内存在b'PYTHON',
而执行脚本搜索不到。
这个问题应该如何解决?
作者: 路过    时间: 2021-3-16 16:09

本帖最后由 路过 于 2021-3-16 16:11 编辑

自己定一个char数组变量,把开头和结尾保存起来就行了
  1. offset=0
  2. text='PYTHON'
  3. len=strlen(text)-1
  4. 定义动态数组b(len*2),并初始化数组b全为0
  5. ...
  6. while (offset<=filesize)
  7. {
  8.     从offset开始读1024字节到缓冲a
  9.     if (读取成功) {
  10.         如果a中没有text {
  11.             读取a前len个字节到b[len]至b[2*len-1]
  12.             如果b中有text {
  13.                 //找到了
  14.                 ...
  15.             }
  16.         } else {
  17.             //找到了
  18.             ...
  19.         }
  20.         读取a后len个字节到b[0]至b[len-1]
  21.         offset+=1024
  22.         释放缓冲a
  23.     }
  24. }
  25. ...
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2