U盘怀道检测一例

U盘怀道检测一例

    最近一个室友的U盘据传闻常常copy了文件却用不了,自己试过重新格式化几次也不见效果。所以后来出于义气,帮他研究了以下。最终虽然无法修理怀道,但是检测到怀道却也花了一番功夫。
    首先当然是使用Windows的格式化了,不要选中“快速格式化”,结果是什么都没有发现。可以看出Windows的磁盘格式化功能只适用于磁盘。在硬件一级,Windows每次要从磁盘读取一个数据都要传送多达20个以上的参数,当然包括多种命令和错误检测。而到了U盘的时代,硬件可靠性的提高使得一些错误检测的功能被省略了,所以没有能够通过完全格式化发现问题。
    之后使用了硬盘怀道检测的经典工具HD Tune,实际检测也没有发现任何问题,检测结果全是绿色的小块。从此也可以看出,适用于磁盘检测的工具实在是不适用于U盘。让我很失望。
    最后使用了一款光盘检测工具CD Check。CD Check是一种数据错误检测工具,并不仅仅适用于光盘,而又非常广泛的用途。其中可以使用建立数据检验和文件、数据检测、数据文件对比、损坏光盘数据恢复四种功能。我们这次检测U盘坏区使用了其中的建立校验和、数据检测两项功能。
    数据出错,无论在哪一个环节,包括传输、写入、存储、读出,最终的结果就是读出的数据和原来写入的不一样。这样就可以通过文件校验和工具来发现损坏的文件,从而使用这个损坏的文件来覆盖损坏的数据块,以防以后危害其他数据。而数据的校验和功能是使用已有的一些算法从数据中提取出一个特征值,数据只要有所改变,特征值几乎肯定是改变的(数据改变而特征值不便的可能性极低,不需要考虑)。
    所以我们的做法就是将整个U盘都用文件来装满,之后对各个文件进行校验,一旦发现某个文件的特征值不同则确定此文件所在的数据块已经损坏了。当然为了确保不放过一次字节,需要文件的大小是最小的簇大小的整倍数。一般可选FAT32分区,4KB的整倍数,这次检测我为了有较快的速度而选择了1MB大小的文件。
    关于如何生成正好1MB的文件。可以使用WinRAR的分卷压缩功能,选中一大堆数据,之后用WinRAR压缩,压缩时选择分卷大小时填入1048576B(1MB)。之后生成的文件除了最后一个以外都是正好1MB的。随便取用其中的一个即可,当然,我们只是需要一个1MB大小的文件而不是压缩包,如果看着不爽可以改成其他扩展名。并将此一个1MB的文件放入一个单独的文件夹。
    使用CD Check建立校验和,打开CD Check(我的是v3.1.8.0,有30天的试用期)。进入Hash功能,在Source folder中选择刚才存放1MB文件的文件夹,之后选continue即可。此时会在此文件夹生成一个.CRC文件,即校验和文件,是一个文本文件,可以用记事本打开。打开后可以发现不过是按照目录树顺序的一个列表,每个文件都有自己的特征值(即MD5校验码)。修改此文件,将有校验码的一行反复的复制粘贴,然后文件名改成具有一定顺序的样子。最好是使用按照顺序的数字,我当时是使用16进制数字的,因为便于识别坏块地址。注意文件总容量最好接近U盘容量,而不是超过。
    之后在U盘建立一个文件夹,将CRC校验文件复制到文件夹内,并将1MB文件反复的复制到这个文件夹,注意每次复制前要改名成CRC文件内的文件名,直到CRC文件内的文件列表都存在。这样如果还有剩余,就继续复制1MB文件,并且在CRC文件内添加其文件名。
    复制文件时需要按照文件名数字的顺序,这样便于确定坏块的位置,并在以后考虑通过重新分区来屏蔽坏块。全部复制完成后,就再次启动CD Check了,选择Source folder为U盘上的文件夹,之后在Custom hash file中选取刚才那个文件夹中的CRC文件->continue,就开始进行文件的校验了。下面的列表会显示哪一个文件损坏了。
    如果你是一个懒人,可以将这些有所损坏的文件“剪切”到一个隐藏文件夹中,以后不再使用这些坏块所占空间了。当然这种方法一时还可以,千万不可以格式化、重新分区、或者磁盘整理、删除坏块文件。否则又要重新寻找这些坏块,麻烦的很。如果你是一个聪明人,可以通过1MB文件的文件名确定坏块的位置,来重新分区屏蔽坏块。即便是不是使用数字来命名的读者,也可以将没有坏块的文件全部删除,之后进入磁盘整理程序,选择分析来查看坏块文件所在的位置来大约的重新分区。
    我的例子:一个128MB的U盘(牌子就不提了,免了作广告的嫌疑)。可用空间124MB零600KB。1MB文件复制了4份放入一个文件夹分别复制进去,每个文件夹名按照2位十六进制进行命名,进行校验检查时通过Custom hash file指定CRC文件为已有位置的一个CRC文件。之后每个文件夹校验一次。最终发现了60-64MB之间有3个1MB文件含有坏块。因为不是我的U盘,懒得帮他重新分区,所以用了懒人的办法,用autorun.inf每次接入U盘时启动一个说明文件不允许使用者重新分区、格式化、删除坏块文件等等。
    特例:这种方法在检验大量连续坏块时还比较方便,可是加入只是坏掉一个比特(1bit),而且写入的状态和损坏的状态相同,则无法发现这个损坏的比特,只能通过第一次写入校验一次,之后将数据所有的比特全部按位取反之后再重新生成校验文件,再重新校验一次,这样才可以发现所有的坏块。
    通用性:本例所使用的方法虽然较为笨拙,也存在漏报的可能,但是通用性却很高,不仅仅限于检测U盘,还可以用于检测移动硬盘等等其他可读写的存储设备。而且从实际看来漏报的可能性比Windows格式化和HD Tune要低。
    希望本文有用,也希望读者可以尽快从自己的移动存储设备找出隐藏的敌特分子。Good luck!
              2005-11-3@河北理工热力公寓by Gashero Liu.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值