偶尔,我会使用如下命令对我的驱动器进行完整的快照。
> for %i in (%drives_hd%) do @dir %i:\/s/a/o>>File_List.txt
它提供了我系统上所有文件的详细信息(路径、文件名、日期和大小),非常适合在不占用太多空间的情况下监视文件(约 500,000 个文件占用约 50MB)。问题是它不包含哈希值。
显然有文件散列工具,但它们没有提供其他细节,并且没有实际的方法来单独执行散列并将其与目录列表相结合。
我正在寻找一种可以像使用命令一样创建包含完整详细信息的文本文件的工具dir
,但也包括文件哈希值(至少是 CRC(32)、MD5 和 SHA1)。但它也应该写得很好,这样无论你要求它执行多少次哈希,它都只会读取每个文件一次(即,不要为每种哈希类型读取一次整个文件)。
我更喜欢 CLI 程序,但是 GUI 程序也可以,只要它可以从脚本运行。
我甚至对 Linux 工具(的 Windows 端口)持开放态度。
我用 Google 什么也没找到(虽然我很惊讶这么有用的工具并不常见),并且考虑过自己编写这样的工具,但我希望已经存在一些工具。
为了清楚了解我所寻找的内容,请参见下面的示例输出。
默认dir
输出:
Volume in drive C is C-WINDOWSXP
Volume Serial Number is 1234-5678
Directory of C:\
2007.07.05 04:05p <DIR> Documents and Settings
2011.05.04 07:38p <DIR> Program Files
2010.04.02 11:35p <DIR> WINDOWS
2011.10.09 10:45p 454 BOOT.INI
2002.08.28 10:08p 47,580 NTDETECT.COM
2002.08.29 02:05a 233,632 NTLDR
3 File(s) 281,666 bytes
Directory of C:\Documents and Settings
2003.11.12 03:08p <DIR> .
2003.11.12 03:08p <DIR> ..
2007.07.05 10:36p <DIR> Administrator
2007.07.05 04:21p <DIR> All Users
0 File(s) 0 bytes
Directory of C:\Documents and Settings\All Users
2003.11.12 03:08p <DIR> .
2003.11.12 03:08p <DIR> ..
2007.07.05 04:23p <DIR> Application Data
2011.06.23 03:23p <DIR> Documents
2011.01.09 12:56p 262,144 ntuser.dat
1 File(s) 262,144 bytes
...
期望输出:
Volume in drive C is C-WINDOWSXP
Volume Serial Number is 1234-5678
Directory of C:\
2007.07.05 04:05p <DIR> Documents and Settings
2011.05.04 07:38p <DIR> Program Files
2010.04.02 11:35p <DIR> WINDOWS
2011.10.09 10:45p 454 BOOT.INI d1183b26 fad47d7d255e1189dbef3003fba96868 39c9bbe3edad58a5bd091ea1db8f9b6cf03f9566
2002.08.28 10:08p 47,580 NTDETECT.COM a709deed 28a3ac957be5d239a3dd4f3d4cdbf3b8 f5625a158d92478c814df3b33a9ad5fcd5f8a956
2002.08.29 02:05a 233,632 NTLDR 0d7e47bd 9896e483e211b8cd1fa7bb32572f02ec c57426135d0419985681a674149c88e652c8ec63
3 File(s) 281,666 bytes
3 Dir(s)
Directory of C:\Documents and Settings
2003.11.12 03:08p <DIR> .
2003.11.12 03:08p <DIR> ..
2007.07.05 10:36p <DIR> Administrator
2007.07.05 04:21p <DIR> All Users
0 File(s) 0 bytes
2 Dir(s)
Directory of C:\Documents and Settings\All Users
2003.11.12 03:08p <DIR> .
2003.11.12 03:08p <DIR> ..
2007.07.05 04:23p <DIR> Application Data
2011.06.23 03:23p <DIR> Documents
2011.01.09 12:56p 262,144 ntuser.dat fc3d370a b3ea06755f614e2c18fc1de875b60126 8264549330d9dbef494264227be9fadffe653556
1 File(s) 262,144 bytes
2 Dir(s)
答案1
響鳴器:
WinHasher 是一款免费的开源加密哈希或摘要生成器,使用 Microsoft 的 .NET 2.0 Framework 用 C# 编写。它可用于验证文件下载的完整性、比较两个或多个文件的修改情况,并在一定程度上生成强大的唯一密码。
cmdhashgen 是一个命令行实用程序,可用于为给定的字符串或文件生成各种哈希值。
支持的哈希值为 CRC32、MD5、SHA-1、SHA-256、SHA-384 和 SHA-512。
WinHasher 有命令行实用程序,包括“Hash”,可以绑定到批处理文件或脚本中。它看起来是两个软件包中更稳定的一个。
Usage: hash [-md5|-sha1|-sha256|-sha384|-sha512|-ripemd160|-whirlpool|
-tiger] [-base64|-hexcaps|-bubbab] filename1 [filename2 ...]
WinHasher is a command-line cryptographic hash generator for files. It
runs in one of two modes: single file hashing and multi-file comparison.
In single file mode, WinHasher computes the cryptographic hash of the
given file and prints it to the screen. With no command-line switches,
it computes the SHA-1 hash and displays it in hexadecimal format. Various
switches allow you to change to other hashing algorithms, such as MD5,
the SHA family, RIPEMD-160, Whirlpool, and Tiger. The "-base64" switch
causes WinHasher to output hashes in MIME Base64 (RFC 2045) format rather
than hexadecimal, "-hexcaps" outputs hexadecimal with all capital letters,
and "-bubbab" uses Bubble Babble encoding.
答案2
一种可能性是NirSoft HashMyFiles。
这包括一个 GUI,它可以在文件夹(和子文件夹)中搜索文件并计算找到的所有文件的多个哈希值。显示的输出可以作为简单的项目列表(每行一个文件,空格分隔字段)或 HTML 报告复制到剪贴板。
该程序也可以从命令行调用,具有多种选项,用于确定要散列的内容以及如何格式化结果。有多种文本格式可供选择,包括 CSV、两种 html 格式和一种 xml 格式。
遗憾的是,我看不到用于对结果进行排序的命令行选项 - 顺序似乎是遍历过程中找到文件的任何顺序,有时可能会意外地看起来像是按完整路径名排序的,但您不能假设这一点。但是,您可以像往常一样通过单击 GUI 中的列标题进行排序,这似乎会影响您复制到剪贴板时得到的结果。
对于命令行使用,我猜你总是可以使用单独的实用程序或脚本来执行所需的任何排序。使用 XML 输出选项,它甚至可能是学习一些基本 XSLT 的借口。
无论如何,这比更接近dir /s/b
,dir /s
但它可能会解决您的问题(如果您仍然有它)。
答案3
http://sourceforge.net/projects/quickhash
具有上述所有功能(参见“递归哈希”选项卡),此外还具有跨平台和开源功能,目前维护良好,v2.1 于几周前发布。使用 MD5、SHA1、SHA256 或 SHA512。