实用工具集:115个2john转换器详解
本文全面介绍了John the Ripper jumbo版本中的各类2john转换器工具集,涵盖了常见文件格式(PDF、Office文档、压缩文件)、加密容器(BitLocker、DMG、VDI)、数据库哈希(Oracle、MySQL、PostgreSQL、MongoDB)的哈希提取方法,并提供了自定义格式开发的详细指南。这些工具能够从各种加密源中提取标准化哈希,为密码安全评估和数字取证提供强大支持。
常见文件格式转换器
John the Ripper jumbo版本提供了丰富的2john转换器工具集,专门用于从各种加密文件格式中提取哈希信息,以便进行密码分析。这些转换器是密码安全评估和数字取证工作中不可或缺的工具,能够处理日常工作中最常见的加密文件格式。
PDF文件转换器 (pdf2john)
PDF文档是企业环境中广泛使用的文件格式,pdf2john工具能够提取Adobe PDF文件的加密哈希信息。该工具支持多种PDF加密版本:
# pdf2john.py 核心代码结构示例
class PdfHashExtractor:
def __init__(self, file_name: str, strict: bool = False):
self.pdf = PdfFileReader(doc, strict=strict)
self.encrypt_dict = self.pdf.encrypt_dict
def parse(self) -> str:
fields = [
f"$pdf${self.algorithm}",
self.revision,
self.length,
self.permissions,
self.encrypt_metadata,
len(self.document_id),
self.document_id.hex(),
passwords,
]
return "*".join(map(str, fields))
支持的PDF加密算法包括:
- RC4 (40位和128位)
- AES (128位和256位)
- 标准安全处理程序修订版2-6
Office文档转换器 (office2john)
Microsoft Office文档是企业环境中最常见的加密文件类型之一。office2john工具支持以下格式:
| 文件类型 | 扩展名 | 加密算法 |
|---|---|---|
| Word文档 | .doc, .docx | RC4, AES |
| Excel表格 | .xls, .xlsx | RC4, AES |
| PowerPoint | .ppt, .pptx | RC4, AES |
# office2john处理流程
def process_file(filename):
ole = OleFileIO(filename) # 解析OLE结构化存储
workbookStream = ole.openstream(stream_name) # 打开加密流
passinfo = find_rc4_passinfo(filename, workbookStream) # 提取密码信息
return format_hash_output(passinfo) # 格式化哈希输出
压缩文件转换器
7-Zip文件 (7z2john)
7z2john.pl是一个Perl脚本,专门处理7-Zip归档文件的加密信息:
# 7z哈希格式结构
my $hash_format = join('$',
'$7z',
$data_type_indicator,
$cost_factor,
$salt_length,
$salt_hex,
$iv_length,
$iv_hex,
$crc32,
$encrypted_data_length,
$decrypted_data_length,
$encrypted_data_hex
);
支持的7z加密特性:
- AES-256加密算法
- SHA-256密钥派生函数
- 支持分卷压缩文件
- 多种压缩算法组合
ZIP文件处理
虽然ZIP格式的转换器可能需要额外工具,但John支持标准的PKZIP和WinZip/AES加密:
SSH密钥转换器 (ssh2john)
SSH密钥是系统管理员和开发人员常用的认证方式,ssh2john支持多种SSH私钥格式:
# SSH密钥类型检测
def get_all_tags_ktypes(lines):
tags = []
for line in lines:
if "BEGIN RSA PRIVATE" in line: tags.append("RSA")
elif "BEGIN DSA PRIVATE KEY" in line: tags.append("DSA")
elif "BEGIN OPENSSH PRIVATE KEY" in line: tags.append("OPENSSH")
elif "BEGIN EC PRIVATE KEY" in line: tags.append("EC")
return tags
支持的SSH加密算法:
- AES-128-CBC, AES-192-CBC, AES-256-CBC
- AES-256-CTR (OpenSSH新格式)
- 3DES-CBC
- bcrypt PBKDF密钥派生
磁盘加密转换器 (truecrypt2john)
TrueCrypt/VeraCrypt是全磁盘加密解决方案,truecrypt2john支持:
def process_file(filename, keyfiles, options):
header = f.read(512) # 读取加密卷头
for algorithm in ["RIPEMD-160", "SHA-512", "WHIRLPOOL"]:
output_hash(header, algorithm, keyfiles)
# 检查隐藏卷
f.seek(65536)
hidden_header = f.read(512)
特性包括:
- 支持多种哈希算法
- 处理密钥文件
- 检测隐藏加密卷
- 支持启动模式加密
使用示例表格
下表总结了常见文件格式转换器的基本用法:
| 工具名称 | 支持格式 | 输出格式示例 | 典型用法 |
|---|---|---|---|
| pdf2john | PDF文档 | $pdf$4*4*128*... | pdf2john.py document.pdf > hash.txt |
| office2john | Office文档 | $oldoffice$1*... | office2john.py document.docx > hash.txt |
| 7z2john | 7-Zip归档 | $7z$0$19$... | 7z2john.pl archive.7z > hash.txt |
| ssh2john | SSH密钥 | $sshng$1$16$... | ssh2john.py id_rsa > hash.txt |
| truecrypt2john | 加密卷 | truecrypt_SHA_512$... | truecrypt2john.py volume.tc > hash.txt |
技术实现要点
这些2john转换器的共同技术特点:
- 文件格式解析:每种转换器都深入理解特定文件格式的二进制结构
- 加密参数提取:准确提取盐值、初始化向量、迭代次数等关键参数
- 哈希标准化:将提取的信息转换为John the Ripper标准哈希格式
- 错误处理:健壮的错误检测和处理机制,确保处理各种边缘情况
这些常见文件格式转换器构成了John the Ripper生态系统的重要组成部分,使安全专业人员能够有效地评估各种加密文件的安全性。每个工具都经过精心设计,以确保准确提取分析所需的加密参数,同时保持与John the Ripper核心功能的完美集成。
加密容器提取工具
在John the Ripper jumbo版本中,加密容器提取工具是一组专门用于从各种加密存储容器中提取哈希值的实用程序。这些工具能够处理包括BitLocker加密磁盘、Apple DMG镜像、VDI虚拟磁盘等多种加密容器格式,为密码分析提供标准化的哈希输入。
核心提取工具概览
John the Ripper jumbo版本提供了多个专门的2john工具来处理不同类型的加密容器:
| 工具名称 | 支持格式 | 主要功能 | 输出格式 |
|---|---|---|---|
bitlocker2john | Windows BitLocker | 提取BitLocker加密磁盘的哈希 | $bitlocker$ |
dmg2john | Apple Disk Image | 提取DMG加密镜像的哈希 | $dmg$ |
vdi2john | VirtualBox VDI | 提取VDI虚拟磁盘的哈希 | $vdi$ |
luks2john | Linux LUKS | 提取LUKS加密卷的哈希 | $luks$ |
BitLocker加密磁盘提取
bitlocker2john工具专门用于处理Windows BitLocker加密的磁盘镜像。该工具能够识别BitLocker的加密结构,提取用于密码验证的加密材料。
工作流程:
技术细节:
- 支持BitLocker版本1(Windows Vista)和版本2(Windows 7及以后)
- 能够处理用户密码和恢复密码两种保护方式
- 提取AES-CCM加密参数,包括16字节Salt、12字节Nonce和16字节MAC
示例输出格式:
$bitlocker$0$16$[salt]$100000$12$[nonce]$60$[mac][vmk]
Apple DMG镜像提取
dmg2john工具专门处理Apple的加密磁盘镜像文件(DMG),支持多种加密算法和版本。
支持的DMG加密类型:
| 版本 | 加密算法 | Salt长度 | 迭代次数 |
|---|---|---|---|
| v1 | AES-CBC | 20字节 | 可变 |
| v2 | AES-XTS | 20字节 | 100,000 |
提取过程代码示例:
// DMG文件头解析
struct dmg_header {
uint32_t signature;
uint32_t version;
uint32_t enc_iv_size;
uint32_t unk1;
uint32_t kdf_algorithm;
uint32_t kdf_iterations;
uint32_t kdf_salt_len;
unsigned char kdf_salt[32];
// ... 其他字段
};
// 哈希生成流程
void generate_dmg_hash(struct dmg_header *header, const char *filename) {
printf("%s:$dmg$%d*%d*", filename, header->version, header->kdf_salt_len);
print_hex(header->kdf_salt, header->kdf_salt_len);
printf("*%d*", header->kdf_iterations);
// ... 输出加密的blob数据
}
虚拟磁盘格式支持
除了物理磁盘加密格式,John the Ripper还支持多种虚拟磁盘格式:
VirtualBox VDI提取:
- 支持VDI版本1.1加密格式
- 提取AES-CBC加密参数
- 处理256位加密密钥
Linux LUKS卷提取:
- 支持LUKS1和LUKS2格式
- 提取AF拆分和加密头信息
- 支持多种哈希算法(SHA1, SHA256, SHA512)
使用示例和最佳实践
基本使用流程:
# 提取BitLocker加密磁盘哈希
./bitlocker2john encrypted_disk.img > bitlocker_hashes.txt
# 提取DMG镜像哈希
./dmg2john encrypted.dmg > dmg_hashes.txt
# 使用John进行分析
./john --format=bitlocker bitlocker_hashes.txt
./john --format=dmg dmg_hashes.txt
高级选项:
- 使用
--show参数查看已分析的密码 - 结合单词列表和规则进行高效分析
- 利用GPU加速(OpenCL)提升分析速度
技术实现深度解析
加密容器提取工具的核心在于准确解析各种加密格式的文件结构:
文件结构识别:
错误处理机制:
- 签名验证失败时的优雅降级
- 版本不兼容的明确错误提示
- 损坏文件的恢复尝试
性能优化策略
为了高效处理大型加密容器,这些工具实现了多种优化:
- 内存映射技术:使用内存映射文件避免完整文件加载
- 增量解析:只读取必要的文件部分而非整个容器
- 并行处理:支持多文件同时提取
- 缓存机制:对常见加密模式进行缓存优化
安全考虑和限制
在使用加密容器提取工具时,需要注意以下安全考量:
- 工具需要读取权限访问加密容器文件
- 提取的哈希值应妥善保管,避免泄露
- 某些加密格式可能存在特定的硬件要求
- 工具不支持所有加密变体,需要验证兼容性
这些加密容器提取工具为安全研究人员和系统管理员提供了强大的密码恢复能力,特别是在数据恢复和取证分析场景中发挥着重要作用。通过标准化的哈希输出格式,它们与John the Ripper核心分析引擎无缝集成,形成了完整的密码分析解决方案。
数据库哈希提取方法
John the Ripper jumbo版本提供了强大的数据库哈希提取能力,支持多种主流数据库系统的密码哈希提取和分析。数据库系统作为企业核心应用的重要组成部分,其密码安全直接关系到整个系统的安全性。本文将详细介绍John the Ripper中针对Oracle、MySQL、PostgreSQL、MongoDB等数据库的哈希提取方法和工具使用。
Oracle数据库哈希提取
Oracle数据库使用多种认证机制,John the Ripper提供了专门的工具来提取和分析这些哈希。
oracle2john.py工具
oracle2john.py是一个Python脚本,用于从网络抓包文件中提取Oracle认证哈希。该工具主要针对Oracle的o5logon认证协议,支持两种哈希格式:
# 完整认证哈希格式
$o5logon$server_auth_sesskey*auth_vfr_data*auth_password*client_auth_sesskey
# 简化哈希格式(受CVE-2012-3137影响)
$o5logon$server_auth_sesskey*auth_vfr_data
使用方法:
python3 oracle2john.py <pcap文件>
示例输出:
$o5logon$A1B2C3D4E5F6*1234567890ABCDEF*FEDCBA0987654321*1122334455667788
Oracle哈希格式支持
John the Ripper支持多种Oracle哈希格式:
| 格式类型 | 标识符 | 描述 |
|---|---|---|
| Oracle 10 | O$ | 传统DES-based哈希 |
| Oracle 11g | $o5logon$ | 挑战响应认证 |
| Oracle 12c | $oracle12c$ | PBKDF2-based哈希 |
Oracle 10哈希示例:
O$SYSTEM#9EEDFA0AD26C6D52
Oracle 12c哈希示例:
$oracle12c$e3243b98974159cc24fd2c9a8b30ba62e0e83b6ca2fc7c55177c3a7f82602e3bdd17ceb9b9091cf9dad672b8be961a9eac4d344bdba878edc5dcb5899f689ebd8dd1be3f67bff9813a464382381ab36b
MySQL数据库哈希提取
MySQL使用多种密码哈希算法,John the Ripper提供了全面的支持。
MySQL哈希类型
MySQL pre-4.1哈希示例:
445ff82636a7ba59
MySQL SHA1哈希示例:
*6C8989366EAF75BB670AD8EA7A7FD1174A8A09D0
提取方法
对于MySQL数据库,哈希通常直接从数据库系统表中提取:
-- 提取MySQL用户哈希
SELECT user, authentication_string FROM mysql.user;
PostgreSQL数据库哈希提取
PostgreSQL使用MD5挑战响应机制,哈希格式为:
$postgres$user*salt*hash
示例哈希:
$postgres$postgres*f063f05d*1d586cc8d137e5f1733f234d224393e8
哈希结构解析
MongoDB数据库哈希提取
MongoDB使用SCRAM认证机制,mongodb2john.js工具用于提取哈希。
使用方法
mongosh admin mongodb2john.js
支持的哈希格式:
| 认证机制 | 格式标识符 | 示例 |
|---|---|---|
| MONGODB-CR | $mongodb$0$ | $mongodb$0$admin$hash |
| SCRAM-SHA-1 | $scram$ | $scram$admin |
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



