Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
bitcracker — BitCracker 是第一款用于破解 BitLocker 加密存储设备的开源密码破解工具。 | Kitploit
工具/GitHubGitHub/e-ago/bitcracker
密码破解加密/解密工具密码学
GitHube-ago/bitcracker

bitcracker

BitCracker 是第一款用于破解 BitLocker 加密存储设备的开源密码破解工具。

查看仓库
9652072年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

BitCracker

BitCracker 是首个开源存储设备(硬盘、USB 闪存盘、SD 卡等)密码破解工具,针对使用 BitLocker 加密的设备。BitLocker 是 Windows Vista、7、8.1 和 10(旗舰版、专业版和企业版)提供的加密功能。它支持多种身份验证方法来加密存储设备,例如受信任平台模块 (TPM)、智能卡、恢复密码、用户提供的密码。

通过字典攻击,BitCracker 尝试找到正确的用户密码或恢复密码来解密加密的存储设备。该工具基于 CUDA 和 OpenCL 实现。

论文

多本期刊延迟了我们的 BitCracker 论文的发表(将近 3 年,经过多次修订后最终被拒),该论文详细介绍了我们的攻击方法、BitLocker 驱动器加密(BDE)卷格式以及加密/解密过程中可能存在的弱点。 最终,我们将论文发表在这里:https://arxiv.org/abs/1901.01337。欢迎评论和分享。

要求

运行 BitCracker-CUDA 的最低要求:

  • 支持 CC 3.5 或更高版本的 NVIDIA GPU
  • CUDA 7.5 或更新版本

运行 BitCracker-OpenCL 的最低要求:任何支持 OpenCL 的 GPU 或 CPU(你可以在这里找到一些帮助)。

BitCracker 至少需要 260 MB 的设备内存。

出于性能原因,我们强烈建议在 GPU 而非 CPU 上运行攻击(参见性能部分)。

构建

运行 build.sh 脚本会在 build 目录下生成 4 个可执行文件:bitcracker_hash、bitcracker_rpgen、bitcracker_cuda、bitcracker_opencl。

为了根据你的 NVIDIA GPU 和 CUDA 版本正确构建 bitcracker_cuda,你需要修改 src_CUDA/Makefile 并选择正确的 SM 版本。作为参考,可以使用下表:

准备攻击

你需要使用 BitLocker 加密的存储设备的镜像,例如使用 dd 命令:

root@kitploit:~
sudo dd if=/dev/disk2 of=/path/to/imageEncrypted.img conv=noerror,sync
4030464+0 records in
4030464+0 records out
2063597568 bytes transferred in 292.749849 secs (7049013 bytes/sec)

然后,你需要在 imageEncrypted.img 上运行 bitcracker_hash 可执行文件,以:

  • 检查镜像是否具有有效格式且 BitCracker 可以攻击
  • 检查原始存储设备是否使用用户密码或恢复密码加密
  • 提取描述镜像的哈希

如果执行成功,bitcracker_hash 会生成 1 个或 2 个输出文件:

  • hash_user_pass.txt:如果设备使用用户密码加密,此文件包含启动用户密码攻击模式所需的哈希。
  • hash_recv_pass.txt:启动恢复密码攻击模式所需的哈希。

BDE 加密卷可能因不同的身份验证方法而具有不同格式。如果 bitcracker_hash 无法在你的加密镜像上找到恢复密码,请创建一个问题或联系我。

示例:

root@kitploit:~
/build/bitcracker_hash -o test_hash -i ./Images/imgWin7

---------> BitCracker 哈希提取器 <---------
正在打开文件 ./Images/imgWin7

....

在 0x02208000 处找到签名
版本: 2 (Windows 7 或更高版本)

在 0x022080bc 处找到 VMK 条目
找到使用用户密码加密的 VMK!
使用 AES-CCM 加密的 VMK

在 0x0220819c 处找到 VMK 条目
找到使用恢复密钥加密的 VMK!
使用 AES-CCM 加密的 VMK

用户密码哈希:
$bitlocker$0$16$89a5bad722db4a729d3c7b9ee8e76a29$1048576$12$304a4ac192a2cf0103000000$60$24de9a6128e8f8ffb97ac72d21de40f63dbc44acf101e68ac0f7e52ecb1be4a8ee30ca1e69fbe98400707ba3977d5f09b14e388c885f312edc5c85c2

恢复密钥哈希:
$bitlocker$2$16$8b7be4f7802275ffbdad3766c7f7fa4a$1048576$12$304a4ac192a2cf0106000000$60$6e72f6ef6ba688e72211b8cf8cc722affd308882965dc195f85614846f5eb7d9037d4d63bcc1d6e904f0030cf2e3a95b3e1067447b089b7467f86688

用户密码攻击输出文件: "hash_user_pass.txt"
恢复密码攻击输出文件: "hash_recv_pass.txt"

用户密码攻击

如果存储设备使用用户提供的密码加密(如下图所示),你可以使用此类型攻击。 alt text BitCracker 执行字典攻击,因此你需要提供一个可能的用户密码字典。

要启动攻击,你需要:

  • hash_user_pass.txt 文件
  • 一个可能的用户密码字典(你需要自行提供)

命令行示例:

./build/bitcracker_cuda -f hash_user_pass.txt -d wordlist.txt -t 1 -b 1 -g 0 -u

其中:

  • -f:hash_user_pass.txt 文件的路径
  • -d:你的字典文件路径
  • -t:每个 CUDA 线程处理的密码数量
  • -b:CUDA 块的数量
  • -g:NVIDIA GPU 设备 ID
  • -u:指定你想要进行用户密码攻击

所有可用选项请键入 ./build/bitcracker_cuda -h。 为了获得最佳性能,请参考性能部分的表格,根据你的 NVIDIA GPU 正确设置 t 和 b 选项。

同样的注意事项也适用于 bitcracker_opencl 可执行文件。

输出示例:

root@kitploit:~
====================================
选择设备: GPU Tesla K80 (ID: 0)
====================================
....
读取哈希文件 "hash_user_pass.txt"
$bitlocker$0$16$0a8b9d0655d3900e9f67280adc27b5d7$1048576$12$b0599ad6c6a1cf0103000000$60$c16658f54140b3d90be6de9e03b1fe90033a2c7df7127bcd16cb013cf778c12072142c484c9c291a496fc0ebd8c21c33b595a9c1587acfc6d8bb9663

====================================
攻击
====================================

攻击类型: 用户密码
CUDA 线程数: 1024
CUDA 块数: 1
每线程密码数: 1
每次内核最大密码数: 1024
字典: wordlist.txt
严格检查 (-s): 否
MAC 比较 (-m): 否

CUDA 内核执行:
	流 0
	有效密码数: 12
	密码范围:
		abcdefshhf
		.....
		blablalbalbalbla12
	时间: 28.651947 秒
	每秒密码数:     0.42 pw/sec

================================================
....
找到密码: paperino
================================================

目前 BitCracker 能够处理的输入密码长度在 8 到 55 个字符之间。

恢复密码攻击

在存储设备加密期间(无论使用哪种身份验证方法),BitLocker 都会要求用户将恢复密码存储在某处,以便在她/他无法正常解锁驱动器时恢复对加密存储设备的访问。 因此,恢复密码是一种所有身份验证方法的“万能钥匙”,它由如下所示的 48 位密钥组成:

236808-089419-192665-495704-618299-073414-538373-542366

有关更多详细信息,请参见 Microsoft 文档。

与用户密码一样,BitCracker 能够执行字典攻击来找到 BitLocker 用于加密存储设备的正确恢复密码。请注意,目前我们只能攻击存储设备未使用 TPM 加密时的恢复密码。

要启动攻击,你需要:

  • hash_recv_pass.txt 文件
  • 一个可能的恢复密码字典

生成并存储所有可能的密码是一个难题。为此,我们创建了一个名为 bitcracker_rpgen 的恢复密码生成器。使用此工具,你可以创建一系列恢复密码字典文件,用于攻击。例如:

./build/bitcracker_rpgen -n 300 -p 10000000 -s 000000-000011-000022-000033-000044-000055-008459-015180

这会生成:

  • -n:字典文件数量
  • -p:每个字典文件中的恢复密码数量
  • -s:从此恢复密码开始生成

你也可以不加选项运行,使用默认配置:

root@kitploit:~
./build/bitcracker_rpgen

************* BitCracker 恢复密码字典文件生成器 *************

使用以下配置运行:
### 创建 100 个字典文件
### 每个字典文件包含 5000000 个恢复密码
### 允许重复=否
### 从 000000-000011-000022-000033-000044-000055-000066-000077 开始生成

正在创建字典文件 "bitcracker_wlrp_0.txt",包含 5000000 个密码
第一个密码=000000-000011-000022-000033-000044-000055-000066-000077
最后一个密码= 000000-000011-000022-000033-000044-000055-000902-217822
...

请注意,-s 选项可用于从上次生成的恢复密码继续生成(而不是每次都从头开始)。 -d 选项允许在同一恢复密码中出现重复。例如: 000000-000011-000055-000055-000044-000055-000902-217822

所有可用选项请键入 ./build/bitcracker_rpgen -h。

注意: 请注意,可能的恢复密码数量巨大:
恢复密码 = 65536 x 65536 x 65536 x 65536 x 65536 x 65536 x 65536 x 65536
根据我们的研究,密码分布是均匀的,无法找到“更可能”的数字。到目前为止,我们没有找到任何规则来减少可能的候选数量。这意味着恢复密码攻击可能会耗时无限长(用户密码攻击始终是首选)。我们很快就会修改 bitcracker_rpgen 工具,使其以随机方式生成恢复密码,而不是按顺序生成。

命令行示例:

./build/bitcracker_cuda -f hash_recv_pass.txt -d bitcracker_wlrp_0.txt -t 1 -b 1 -g 0 -r

选项与用户密码情况相同,但需要指定 -r 而不是 -u。输出示例:

root@kitploit:~
====================================
选择设备: GPU Tesla K80 (ID: 0)
====================================

...
读取哈希文件 "hash_recv_pass.txt"
$bitlocker$2$16$432dd19f37dd413a88552225628c8ae5$1048576$12$a0da3fc75f6cd30106000000$60$3e57c68216ef3d2b8139fdb0ec74254bdf453e688401e89b41cae7c250739a8b36edd4fe86a597b5823cf3e0f41c98f623b528960a4bee00c42131ef


====================================
攻击
====================================

攻击类型: 恢复密码
CUDA 线程数: 1024
CUDA 块数: 1
每线程密码数: 8
每次内核最大密码数: 8192
字典: wordlist.txt
严格检查 (-s): 否
MAC 比较 (-m): 否

CUDA 内核执行:
	有效密码数: 6014
	密码范围:
		390775-218680-136708-700645-433191-416240-153241-612216
		.....
		090134-625383-540826-613283-563497-710369-160182-661364
	时间: 193.358937 秒
	每秒密码数:    31.10 pw/sec


================================================
CUDA 攻击完成
评估密码数: 6014
找到密码: 111683-110022-683298-209352-468105-648483-571252-334455
================================================

误报

默认情况下,BitCracker 执行快速攻击(适用于用户密码和恢复密码模式),可能会返回一些误报。在这种情况下,你可以使用 -m 选项重新运行攻击,该选项启用 MAC 验证(速度较慢)。

示例

为了在开始实际攻击前测试 BitCracker,我们提供了几个加密存储设备的镜像。

  • imgWin7:Windows 7 企业版操作系统上的 BitLocker
  • imgWin8:Windows 8 企业版操作系统上的 BitLocker
  • imgWin10Compat.vhd:Windows 10 专业版操作系统上的 BitLocker(兼容模式)
  • imgWin10NotCompat.vhd:Windows 10 专业版操作系统上的 BitLocker(不兼容模式)
  • imgWin10NotCompatLongPsw.vhd:Windows 10 专业版操作系统上的 BitLocker(不兼容模式),用户密码较长

你可以使用 Dictionary 文件夹中存储的字典文件,以用户密码和恢复密码模式攻击这些镜像。

性能

以下报告了在快速攻击(默认)下针对用户密码(-u 选项)的最佳性能。

性能:

注意:每个密码大约需要 2.097.152 次 SHA-256 运算

John The Ripper

我们将 BitCracker 作为 OpenCL-BitLocker 格式集成到了 John The Ripper 中(--format=bitlocker-opencl)。 由 bitcracker_hash 生成的哈希文件(参见如何使用部分)与 John 格式完全兼容。
在 GTV100 上,密码速率为约 3150 p/s。JtR 团队开发了此攻击的 CPU 版本(--format=bitlocker);在 Intel(R) Xeon(R) v4 2.20GHz CPU 上,密码速率约为 78 p/s。

Hashcat

此功能正在开发中...

更新日志

2021 年 11 月:更新代码以支持使用 CUDA 11.x 在 NVIDIA GPU Ampere 上运行

下一步计划

  • 提供多 GPU 实现
  • 提供 Qt 界面

参考、致谢和联系方式

请分享并测试我们的项目:我们需要你的反馈!

特别感谢 John The Ripper 团队、Dislocker 和 LibBDE 项目。

这是一个与意大利国家研究委员会合作的研究项目,以 GPLv2 许可证发布。
版权所有 (C) 2013-2021 Elena Ago (elena dot ago at gmail dot com) 和 Massimo Bernaschi (massimo dot bernaschi at gmail dot com)
我们将在未来的论文中提供关于 BitCracker 攻击的更多信息。

尽管我们使用 GPLv2 许可证,但我们欢迎合作。 如需了解更多信息、寻求合作或报告错误,请与我们联系或提出问题。

下载工具
GPU 架构建议 CUDA 版本Makefile 配置
KeplerCUDA 7.5arch=compute_35,code=sm_35
MaxwellCUDA 8.0arch=compute_52,code=sm_52
PascalCUDA 9.0arch=compute_60,code=sm_60
VoltaCUDA 9.0arch=compute_70,code=sm_70
GPU 简称GPU架构CC# SM核心时钟CUDA 版本
GFTGeForce TitanKepler3.5148357.0
GTK80Tesla K80Kepler3.5138757.5
GFTXGeForce Titan XMaxwell5.22410017.5
GTP100Tesla P100Pascal6.15613288.0
GTV100Tesla V100Volta7.08012909.0
AMDMRadeon Malta-----
版本GPU-t-b每次内核密码数密码/秒哈希/秒
CUDAGFT813106.496303635 MH/s
CUDAGTK80814114.688370775 MH/s
CUDAGFTX824106.6089331.957 MH/s
CUDAGTP10015657.3441.4182.973 MH/s
CUDAGTV10018081.9203.2526.820 MH/s
OpenCLAMDM3264524.288241505 MH/s
OpenCLGFTX824196.6088841.853 MH/s