求助在批量文件中搜索特定十六进制特征的方法/或者能识别毁坏文件的方法(不需要修复)

如题。

前段时间硬盘炸了,虽然用DiskGenius成功复制出了几乎所有的个人文件——插句题外话,感谢各位坛友当时的推荐,我都没反应过来DG还有文件管理功能的——但却遇到了一个意外的麻烦。现在算是从拯救数据和重装系统的一团乱麻里爬出来了,于是也该着手处理这个问题了。

简而言之,有一些文件随着硬盘上散布的坏点而部分损毁了(就很奇怪,甚至不是坏道,而是在硬盘上散布着大量单簇的坏点),而DG似乎直接将这些文件中损毁的部分用空数据覆盖、然后装作正常文件处理了,因此在我用DG将文件从损毁硬盘复制到安全硬盘时并没有在日志中留下相应记录。然而文件毕竟还是损毁了,因此得想个办法把它们找出来然后再另行设法处置。

通过使用比较软件将其中一些有文件与其没有损毁的备份进行比较,我发现这个问题以及这些文件的特征,也就是上文提到过的,能在16进制编辑器中定位到大段(几十上百行/地址)的空数据,也就是00。

因此得出的一个解决方案,就是如标题所言,找一个能在成批文件中搜索这一特征的软件或者别的什么方法。但我没能找到相应的方法,故此提问求助。

另外还考虑了一个土办法,就是我直接用windows的资源管理器执行一遍从损毁硬盘到正常硬盘的文件复制,然后每次报错时再一一记录……想想就觉得绝望啊这一套。

当然,如果有什么别的方法能定位损毁的文件,也请不吝赐教。虽然我研究了一番DG的帮助文档后是没发现相应的解决方法……

写一个这种软件并不难,难的是如何避免误判

1 Like

话是这么说啦……只是我的幼儿园水平还不足以自己写一个程序,而我的时间和耐心也只够支撑我花上几个钟头挑重要的文件筛一遍这样,所以也因此来提这个问题了。

winhex

1 Like

多谢……?

试了一下,人傻了。请问有没有推荐的教程?

可以使用工具yara。方法如下:

  1. 下载并解压yara 官网地址: Release YARA v4.0.2 · VirusTotal/yara (github.com)

  2. 在yara目录新建文本文件rule.txt ,粘贴如下内容并保存。其中,{100,}表示至少有100个0x00,你可以自行修改数量

    rule rm:banker{
    meta:
    description = “This is just an example”
    threat_level = 3
    in_the_wild = true
    strings:
    $a = /\x00{100,}/
    condition:
    $a
    }

  3. 打开cmd或者powershell, 运行如下命令
    .\yara32.exe .\test_rule.txt 需要扫描的路径 > find_file_list.txt

  4. 命令执行完成后,yara目录的find_file_list.txt这个文件记录了全部符合的文件。检查没有过杀后,把文件名改为find_file_list.bat,双击运行就能自动删除这些文件了。

提供了打包下载的地址

1 Like

非常感谢。看起来是个相当简单直接的好法子,而且有完备的手册可查这点就很赞

研究了一下,发现直接扫硬盘的话还挺吃资源的,CPU全速运转原地起飞,cmd能吃掉快4个G的内存也挺罕见(对我这种菜鸡而言)。最好在命令中附上-f(快速匹配),速度快不快不知道但至少CPU占用跌到10%以下、内存占用就十几二十兆了;并在扫描前用yarac编译一下规则,然后在命令中用-C选项指示;以及要扫子文件夹的话记得加上-r。