hashcat 暴力破解详细教程(附常见案例)

hashcat 暴力破解详细教程(附常见案例)
lololowe1. hashcat 简介
hashcat是一个使用C语言编写的密码破解工具,支持暴力破解多种哈希算法,是世界上最快最先进的爆破工具,可以调用CPU、GPU、DSP等多种硬件设备进行密码破解。
注意,hashcat是离线爆破工具,无法破解在线密码。
截至2024年11月,hashcat最后一次更新是2022年9月,最新版本是v6.2.6。
官网地址: https://hashcat.net
开源地址:https://github.com/hashcat/hashcat
beta版本:https://hashcat.net/beta/
Kali介绍页:https://www.kali.org/tools/hashcat/
2. 安装 hashcat
2.1. Linux
2.1.1. RHEL/CentOS
1 | wget https://hashcat.net/files/hashcat-6.2.6.7z # 下载hashcat预编译二进制版本 |
如果p7zip下不动,可以尝试更换国内epel镜像源: https://www.cnblogs.com/zenghi-home/p/9965448.html
2.1.2. Debian/Ubuntu
1 | apt install -y hashcat # 安装hashcat |
apt 安装hashcat时还会安装将近1GB的依赖包(包括驱动在内),如果安装过于缓慢,可以尝试更换国内镜像源:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
2.1.3. Windows
下载hashcat的Windows版本,解压后在终端调用hashcat.exe
即可:https://hashcat.net/files/hashcat-6.2.6.7z
2.2. 驱动
安装完hashcat后,可以使用hashcat的-I
参数或者--backend-info
参数查看支持的驱动:
Linux软件包仓库安装的hashcat默认会安装驱动依赖,而通过官网下载的hashcat通常需要手动安装驱动。驱动未安装时的输出如下:
2.2.1. Intel
RHEL/CentOS系的Linux下安装Intel驱动:
1 | wget https://registrationcenter-download.intel.com/akdlm/irc_nas/vcp/15532/l_opencl_p_18.1.0.015.tgz # 下载驱动包 |
Windows下安装Intel驱动直接到Intel官网或者OEM官网搜索并下载安装即可:https://www.intel.cn/content/www/cn/zh/download-center/home.html
2.2.2. AMD
使用AMD显卡的Linux用户可以参考AMD的官方文档进行驱动安装:https://rocm.docs.amd.com/en/docs-5.0.2/deploy/linux/os-native/install.html
Windows用户可以参考AMD的官方文档进行驱动安装:https://rocm.docs.amd.com/en/docs-5.0.2/deploy/windows/install.html
2.2.3. NVIDIA
Linux用户可以参考以下文章安装NVIDIA驱动以及CUDA:
https://cloud.tencent.com/developer/article/2054869
https://cloud.tencent.com/developer/article/2063866
Windows用户可以通过NVIDIA GeForce Experience安装GPU驱动,CUDA需要到NVIDIA官网下载安装:https://developer.nvidia.cn/cuda-toolkit
3. hashcat 使用
3.1. 常用参数
3.1.1. -I
, --backend-info
查看支持的GPU驱动:
3.1.2 -m
, --hash-type
指定hash模式,如果不指定,hashcat会自动识别hash模式并给出推荐模式:
如上图,没有指定hash模式时,hashcat自动识别到了唯一的hash模式13000,关联的文件格式是RAR5。
有时候想查某个格式的hash模式,可以打印hashcat的帮助文档,然后使用grep
命令查找,例如查找ZIP的hash模式:
查到多个相关模式时,建议直接拿hash值让hashcat自动识别:
自动识别出了3个ahsh模式,可以逐个模式去尝试。
常用hash模式:
hash模式 | hash名称 | hash示例 |
---|---|---|
0 | MD5 | 8743b52063cd84097a65d1633f5c74f5 |
11600 | 7-Zip | $7z$0$19$0$salt$8$f6196259a7326e3f0000000000000000$185065650$112$98$f3bc2a88062c419a25acd40c0c2d75421cf23263f69c51b13f9b1aada41a8a09f9adeae45d67c60b56aad338f20c0dcc5eb811c7a61128ee0746f922cdb9c59096869f341c7a9cb1ac7bb7d771f546b82cf4e6f11a5ecd4b61751e4d8de66dd6e2dfb5b7d1022d2211e2d66ea1703f96 |
13000 | RAR5 | $rar5$16$74575567518807622265582327032280$15$f8b4064de34ac02ecabfe9abdf93ed6a$8$9843834ed0f7c754 |
17220 | ZIP | $pkzip2$3*1*1*0*8*24*a425*8827*d1730095cd829e245df04ebba6c52c0573d49d3bbeab6cb385b7fa8a28dcccd3098bfdd7*1*0*8*24*2a74*882a*51281ac874a60baedc375ca645888d29780e20d4076edd1e7154a99bde982152a736311f*2*0*e3*1c5*eda7a8de*0*29*8*e3*eda7*5096*1455781b59707f5151139e018bdcfeebfc89bc37e372883a7ec0670a5eafc622feb338f9b021b6601a674094898a91beac70e41e675f77702834ca6156111a1bf7361bc9f3715d77dfcdd626634c68354c6f2e5e0a7b1e1ce84a44e632d0f6e36019feeab92fb7eac9dda8df436e287aafece95d042059a1b27d533c5eab62c1c559af220dc432f2eb1a38a70f29e8f3cb5a207704274d1e305d7402180fd47e026522792f5113c52a116d5bb25b67074ffd6f4926b221555234aabddc69775335d592d5c7d22462b75de1259e8342a9ba71cb06223d13c7f51f13be2ad76352c3b8ed*$/pkzip2$ |
22000 | WPA2 | WPA*02*024022795224bffca545276c3762686f*6466b38ec3fc*225edc49b7aa*54502d4c494e4b5f484153484341545f54455354*10e3be3b005a629e89de088d6a2fdc489db83ad4764f2d186b9cde15446e972e*0103007502010a0000000000000000000148ce2ccba9c1fda130ff2fbbfb4fd3b063d1a93920b0f7df54a5cbf787b16171000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001630140100000fac040100000fac040100000fac028000*a2 |
1800 | SHA512 | $6$52450745$k5ka2p8bFuSmoVT1tzOyyuaREkkKBcCNqoDKzYiJL9RaE8yMnPgh2XzzF0NDrUhgrcLwg78xs1w5pJiypEdFX/ |
3000 | LM | 299bd128c1101fd6 |
1000 | NTLM | b4b9b02e6f09a9bd760f388b67351e2b |
- 完整hash模式以及hash示例列表:https://hashcat.net/wiki/doku.php?id=example_hashes
3.1.3. -a
, --attack-mode
指定攻击模式:
序号 | 攻击模式 |
---|---|
0 | 字典破解 |
1 | 多字典组合破解 |
3 | 掩码破解 |
6 | 字典+掩码破解 |
7 | 掩码+字典破解 |
3.1.4. -O
, --optimized-kernel-enable
启用优化内核(会限制密码长度为32位),提高性能。不加此参数,破解过程会有提示:
3.1.5. -o
, --outfile
指定爆破完成后的哈希值与明文的存储位置。
3.1.6. --show
破解完成后忘记保存破解内容,并且终端被清屏,可以使用--show
参数重新显示已破解的哈希值与明文,只需在哈希值后面加上该参数即可:
3.1.7. -i
, --increment
启用密码长度范围功能。
3.1.8. --increment-min
指定密码长度范围的最小值,需要与-i
或者--increment
参数一起使用,否则会报错:
3.1.9. --increment-max
指定密码长度范围的最大值,需要与-i
或者--increment
参数一起使用,否则会报错。
3.1.10 -potfile-disable
hash破解完成后,不将破解结果写入到potfile文件中,这样就能重复破解(例如测试hash碰撞)。如果已经写入了,则需要手动删除potfile文件中的对应记录。
最新版的linux hashcat的potfile为文件的路径是~/.local/share/hashcat/hashcat.potfile
,不是~/.hashcat/hashcat.potfile
。
Windows的potfile文件的路径和hashcat主程序在同一目录下。
3.1.11. -d
, --opencl-device-types
当hashcat -I
显示有多个OpenCL设备时,可以使用此参数指定使用哪个设备进行破解。默认会使用所有设备。
3.1.12. --force
有时候会遇到报错导致破解失败,可以使用此参数强制继续破解。
例如有时候会提示硬件不支持某哈希模式而退出破解,此时可以使用--force
参数跳过报错强制继续破解:
3.1.13. --self-test-disable
禁用启动时的设备自检功能。加速进入破解过程。一般是测试时使用。
3.1.14 -h
, --help
此参数会打印一份超级长的帮助文档。通常结合grep
命令来搜索哈希模式。
3.1.15 -v
, --version
查看hashcat版本:
截至2024年11月,hashcat最后一次更新是2022年9月,最新版本是v6.2.6。
beta版本下载地址:https://hashcat.net/beta/
3.2. 掩码破解(-a 3
)
3.2.1. 掩码占位符
占位符 | 含义 |
---|---|
?l |
小写字母(lowercase): a-z |
?u |
大写字母(uppercase): A-Z |
?d |
数字(digits): 0-9 |
?h |
小写格式十六进制字符(hexadecimal): 0-9, a-f |
?H |
大写格式十六进制字符(hexadecimal): 0-9, A-F |
?s |
符号(symbols): ! “ # $ % & ‘ ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { |
?a |
所有字符(ascii): 0-9, a-z, A-Z, ! “ # $ % & ‘ ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { |
?b |
二进制字符(binary): 0, 1 |
3.2.2. 掩码示例
掩码 | 含义 |
---|---|
?d?d?d?d?d?d?d?d?d?d |
10位纯数字 |
?u?u?u?u?u?u?u?u?u?u |
10位纯大写字母 |
?d?d?d?d?d?l?l?l?l?l |
5位数字 + 5位小写字母 |
?l?u?d?d?d?d |
第一位是小写字母,第2位是大写字母,第3-6位是数字 |
mkbk?a?a?a |
前4位确定是mkbk,后面3位是任意字符 |
3.2.3. 自定义掩码
自定义掩码 | 自定义该掩码的字符集 |
---|---|
?1 |
?l, ?d |
?2 |
a, b, c, d |
?3 |
e, f, g, h |
?4 |
i, j, k, l |
比如想用?1
来表示m, k, b, k
,这4个字符,那么可以使用-1
参数来指定字符,并在后面作为占位符来使用:
1 | hashcat -m 0 -a 3 e9894d0cc46fa28e370ce7d94f0a72d5 -1 mkbk ?1?1?1?1?a?a?a -O |
3.3. 字典破解(-a 0
)
推荐字典:https://github.com/wwl012345/PasswordDic
使用-a
参数指定攻击模式为0,然后直接指定字典文件即可:
1 | hashcat -a 0 200ceb26807d6bf99fd6f4f0d1ca54d4 dict/rockyou-top15000.txt -O -o result.txt |
可以看到耗时了11秒,遍历了了15000个密码,成功恢复出了哈希值,但是并没有显示出明文,原因是-o
参数将哈希值与明文的对应关系存储到了result.txt
文件中,因此可以直接查看该文件,或者将-o
参数替换为--show
参数来查看明文:
1 | cat result.txt |
3.4. 多字典组合破解(-a 1
)
hashcat最多支持将2个字典文件中的单词进行组合破解,使用-a 1
参数并指定2个字典文件即可。
组合方式:Hashcat 从 dict1.txt 中选择一个单词作为前缀(Left Side),从 dict2.txt 中选择一个单词作为后缀(Right Side),然后将它们拼接在一起。
例如,假设,dict1.txt 包含:
1 | hello |
dict2.txt 包含:
1 | 123 |
Hashcat 将生成以下组合:
1 | hello123 |
爆破案例:
1 | hashcat -m 0 -a 1 34cf9968d4b20578f61c9b26d102fb59 dict/1.txt dict/2.txt -O |
3.5. 字典+掩码破解(-a 6
)
此模式会将字典中的每个单词作为前缀,然后使用掩码作为后缀来破解。
假设明文为sunshine123
,并且字典中包含sunshine
,那么可以使用该字典与掩码?d?d?d
的组合来进行破解:
1 | hashcat -a 6 -m 0 1669972908967b4076b39d4626090817 dict/passwd-EN-Top10000.txt ?d?d?d -O |
3.6. 掩码+字典破解(-a 7
)
此模式会将掩码作为前缀,然后使用字典中的每个单词作为后缀来破解,和-a 6
模式正好相反。
假设明文为need_money
,并且字典中包含money
,那么可以使用该字典作为前缀,掩码?u?s?u?u?u?u?s
的组合来进行破解:
1 | hashcat -a 6 -m 0 b4c80dd675a0d0f60d229075583d7d60 dict/passwd-EN-Top10000.txt ?l?l?l?l?s -O |
4. 常见爆破案例
4.1. 破解10位纯数字MD5
首先将明文0123456789
转换为转换为md5值:
1 | # 使用md5sum命令(末尾的 - 表示标准输入) |
使用hashcat进行破解:
1 | hashcat -m 0 -a 3 781e5e245d69b566979b86e28d23f2c7 ?d?d?d?d?d?d?d?d?d?d |
可以看到用时4秒,尝试了3072000个组合,破解出了明文0123456789
。
如果后续需要查看此哈希值对应的明文,可以使用--show
参数:
1 | ❯ hashcat -m 0 -a 3 781e5e245d69b566979b86e28d23f2c7 ?d?d?d?d?d?d?d?d?d?d --show |
4.2. 破解未知长度未知字符模式的MD5
由于不知道明文的长度以及字符模式,因此将无法指定掩码规则,此时hashcat将默认使用?a
(表示所有字符)进行暴力破解,并且是从较短的密码开始逐步增加,直到找到匹配为止(如果使用了-O
参数,则默认最大长度为32位)。如果明文长度较长,那么破解时间将会非常长。
1 | hashcat -m 0 -a 3 2e8e673825e962ccd6ce3ac8be404914 -O |
4.3. 破解已知长度但未知字符模式的MD5
如果知道明文的长度为7位,但是不知道明文的字符模式,那么可以使用increment
参数来指定密码长度范围,然后hashcat会自动使用?a
进行暴力破解:
1 | hashcat.bin -m 0 -a 3 9a33543ee42bb7791905ab66ed0555d9 -O --increment --increment-min 7 --increment-max 7 |
4.4. 破解已知字符模式但未知长度的MD5
假设已知明文的字符模式为小写字母和大写字母,但不知道明文的长度,那么可以使用自定义掩码规则组合?u?l
来表示小写字母和大写字母,然后逐个增加?1
的个数,直到找到匹配为止:
1 | # 尝试1位长度 |
4.5. 破解无线网络的WPA2密码
首先需要使用aircrack-ng工具来抓取无线认证时的握手包,具体方法参考我以前写的博客:https://blog.lololowe.com/posts/9315/
抓到握手包后(.cap),使用hashcat官方提供的web站点将握手包转换成hashcat可识别的格式(.hc22000):https://hashcat.net/cap2hashcat/
如果握手包大于20MB,则需要使用hcxtools本地转换,具体请看此帖子:https://www.bilibili.com/opus/653718564161716231
得到.hc22000
文件后,使用hashcat进行破解:
1 | hashcat -m 22000 -a 0 ~/903031_1731148635.hc22000 dict/passwd-CN-Top10000.txt # 字典破解 |
4.6. 破解压缩包密码
4.6.1. RAR
首先使用WinRAR打包一个压缩包,并设置一个密码:
接着需要使用John the Ripper来提取压缩包的hash值,下面分别给出Windows和Linux下提取rar压缩包hash值的方法。
注意:也可以使用该网站在线提取:https://hashes.com/zh/johntheripper/rar2john
4.6.1.1 Windows下提取rar压缩包hash值并爆破
直接下载 John the Ripper 的预编译二进制版本:https://www.openwall.com/john/k/john-1.9.0-jumbo-1-win64.7z
解压缩后,进入run目录,执行以下命令获取hash值:
1 | rar2john.exe <rar文件> |
复制hash值(不要复制冒号以及前面的压缩包路径),接着执行以下命令搜索rar格式的hash模式:
1 | hashcat.exe -h | findstr.exe RAR |
13000 表示rar5的hash模式,和上面的hash值对应。也可以直接将hash值作为唯一参数传递给hashcat,然后hashcat会自动识别出hash模式:
接着使用hashcat的-m 13000
参数指定hash模式并进行破解:
1 | hashcat.exe -m 13000 -a 3 $rar5$16$3a8ee78dece562ff5872b81a39a3e519$15$053c164b49eb214f7a1457b8066c88c9$8$20957738b54470fd ?d?d?d?d?d?d?d?d |
4.6.1.2 Linux下提取rar压缩包hash值并爆破
编译安装John the Ripper:
1 | apt install git libssl-dev -y # Debian/Ubuntu 安装依赖 |
接着使用下面的命令提取rar压缩包的hash值以及获取hash模式:
1 | ./rar2john <rar文件> |
最后使用hashcat进行破解:
1 | hashcat -m 13000 -a 3 '$rar5$16$3a8ee78dece562ff5872b81a39a3e519$15$053c164b49eb214f7a1457b8066c88c9$8$20957738b54470fd' '?d?d?d?d?d?d?d?d' |
注意:rar的hash值需要用单引号括起来(Windows系统不要加单引号),否则会报错,如果使用的shell是zsh,则还需将掩码值括起来。
得到明文密码:88888888
4.6.2. ZIP
流程和rar类似,都是拿到加密压缩包后使用John the Ripper提取hash值,然后使用hashcat进行破解。
- 提取hash值
注意:提取出来的hash值要去掉首尾的文件路径(包括冒号)。例如1.zip :
1 | 1.zip/1.txt:$pkzip2$1*1*2*0*1a*c*594c07d2*0*23*8*1a*594c*7609*a0d026cb2bce016e791db4a9eddceb69a5b6895e457899a0b936*$/pkzip2$:1.txt:1.zip::E:\user\lololowe\Desktop\1.zip |
去除文件路径后:
1 | $pkzip2$1*1*2*0*1a*c*594c07d2*0*23*8*1a*594c*7609*a0d026cb2bce016e791db4a9eddceb69a5b6895e457899a0b936*$/pkzip2$ |
- 获取hash模式
直接将hash值作为唯一参数传递给hashcat,然后hashcat会自动识别出hash模式:
1 | hashcat '$pkzip2$1*1*2*0*1a*c*594c07d2*0*23*8*1a*594c*7609*a0d026cb2bce016e791db4a9eddceb69a5b6895e457899a0b936*$/pkzip2$' |
识别出3个哈希模式,可以依次尝试每种hash模式。
- 破解
1 | hashcat '$pkzip2$1*1*2*0*1a*c*594c07d2*0*23*8*1a*594c*7609*a0d026cb2bce016e791db4a9eddceb69a5b6895e457899a0b936*$/pkzip2$' -a 3 -m 17220 -O |
得到明文密码:123456
4.6.3. 7-zip
- 提取hash值
john the ripper的7zip提取工具是7z2john.pl脚本,需要搭配Perl解释器运行,并且还不一定能正常提取:
建议使用在线网站提取7z的hash值:https://hashes.com/en/johntheripper/7z2john
- 获取hash模式
1 | hashcat '$7z$2$19$0$$16$f1ac8b88d28393a8ec6b55eda4c9f6a1$1498154962$16$16$6b60d3f0d467c15c7a3371b75733bc89$12$00' |
最后一句话的意思是:这个hash模式存在hash碰撞漏洞(1个hash值对应多个密码),可以使用
--keep-guessing
参数在破解出第一个密码后继续破解下一个。
- 破解
1 | hashcat '$7z$2$19$0$$16$f1ac8b88d28393a8ec6b55eda4c9f6a1$1498154962$16$16$6b60d3f0d467c15c7a3371b75733bc89$12$00' -m 11600 -a 3 -O |
得到明文密码:55sme
4.7. MySQL 密码破解
- 获取root用户密码的hash值:
1 | SELECT user, Host, authentication_string FROM mysql.user WHERE `User` = 'root'; |
注意:不要复制最前面的
*
符号。
- 获取hash模式
直接将hash值作为唯一参数传递给hashcat,然后hashcat会自动识别出hash模式:
1 | hashcat 81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
使用推荐300攻击模式(MySQL4.1/MySQL5)进行掩码破解:
1 | hashcat 81F5E21E35407D884A6CD4A731AEBFB6AF209E1B -m 300 -a 3 -O |
得到明文密码:root
4.8. KeePass密码管理器破解
KeePass是一个开源的密码管理器,它可以将所有密码保存在一个加密数据库文件中,该数据库文件是 KDBX 格式:
可以用 keepass2john 提取hash值:
也可尝试使用 https://hashes.com/zh/johntheripper/keepass2john 提取hash值。
将hash值(记得去掉最前面的Database:
标志)作为唯一参数传递给hashcat,然后hashcat会自动识别出攻击模式:
然后使用hashcat进行破解:
1 | hashcat '$keepass$*2*600000*0*ff332ebf333c88d87a9592307e297d4cac49184a359dc9b655d5d8490c404640*4878daf470d66264c3b3b085cb1d0495f8d2f20459193c1cbe17722d7e61ba9d*2a021d8a51c7955ea1d06409bd8822ed*ecdd6dd88837ede059f6fe7b758975ef4ab4193261beac50b641f5fdac250093*6bfdc8f6ae7313cadb0d2ac2adecbf4eab703ac3eb7fefe4e6a9b838e7b92464' -m 13400 -a 3 -O |
得到明文密码:mkbk
4.9. Windows 密码破解
推荐阅读,windows密码的抓取和利用:https://saucer-man.com/information_security/443.html
4.9.1. LM
对于早期的系统如Windows XP、Windows Server 2003来说,系统默认使用LM进行加密。
LM 的空密码hash值为: AAD3B435B51404EEAAD3B435B51404EE
使用Mimikatz提取凭证(Windows Server 2008 R2):
1 | mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit |
得到LM hash值为: af01df70036ebacfaad3b435b51404ee
LM Hash由32位16进制字符组成,前16位是用户密码的前7个字符(或更少)经LM算法处理后转换成的hash,后16位是用户密码的后7个字符(或更少)经LM算法处理后转换成的hash,如果用户密码只有7个字符,则后16位的hash固定为aad3b435b51404ee
。LM限制用户密码最长为14个字符。
得到的这个hash值后16位是aad3b435b51404ee
,说明密码长度等于或小于7个字符,可以直接对这个16位的hash进行暴力破解。
首先获取攻击模式:
1 | hashcat af01df70036ebacf |
爆破:
1 | hashcat -m 3000 af01df70036ebacf -a 3 -O '?a?a?a?d?d?d?s' |
得到明文密码:Abc123!
注意:LM算法不区分密码大小写。
4.9.2. NTLM
从Windows Vista和Windows Server 2008开始,默认情况下只存储NTLM Hash。因此提取到的hash值是空密码hash: aad3b435b51404eeaad3b435b51404ee
NTLM 的空密码hash为: 31D6CFE0D16AE931B73C59D7E0C089C0
凭据提取方法同上(下图是Win10提取结果):
获取攻击模式:
1 | hashcat -m 1000 -a 3 32ed87bdb5fdc5e9cba88547376818d4 -O |
4.10. Linux 密码破解
从 /etc/shadow
文件中提取密码hash值:
1 | tail /etc/shadow -n 1 |
linux的shadow文件中每一行的第二个字段保存了加密后的密码,这个字段的格式为 $type$salt$encrypted
,其中type是提示符,salt是随机生成的字符串,encrypted是明文密码和salt通过crypt函数加密后的结果。type用来标识采用了哪种加密方式,这样的标识符有以下几种:
1
代表采用了MD5加密方式2
Blowfish,是最早的版本,有一些缺陷,不推荐使用2a
Blowfish,是修复了一些缺陷后的版本,但仍然有一些问题,不推荐使用2b
Blowfish,是修复了2a中的问题后的版本,是安全、常用的版本2y
Blowfish,Eksblowfish版本y
是Yescrypt加密方式的前缀,是Blowfish加密方式的一个变种,提供了更高的安全性和性能,hashcat暂不支持这种算法。5
代表采用了SHA256加密方式6
代表采用了SHA512加密方式
获取攻击模式:
1 | hashcat '$1$PIdhJQ1b$6yidVdMl8VlsnVfiWsRu..' |
爆破:
1 | hashcat '$1$PIdhJQ1b$6yidVdMl8VlsnVfiWsRu..' -m 500 -a 3 -O |
得到明文密码:test
4.11. PDF密码破解
首先使用WPS加密PDF文件:
接着使用 John the Ripper 的 pdf2john.pl 提取hash值:
1 | perl pdf2john.pl <文件路径> |
或者也可以使用此网页提取:https://www.onlinehashcrack.com/tools-pdf-hash-extractor.php
获取攻击模式:
1 | hashcat '$pdf$4*4*128*-3904*0*16*f7b5882fa6583b73085398d2bf3e2eca*32*be6b1917664ce051136456751db1ad106681bfa2d6c40fd1996d4290804ea411*32*b33e83218acdc4e2d4bab4752bc67bf583707812d6700f8901d1012931595d58' |
暴力破解:
1 | hashcat '$pdf$4*4*128*-3904*0*16*f7b5882fa6583b73085398d2bf3e2eca*32*be6b1917664ce051136456751db1ad106681bfa2d6c40fd1996d4290804ea411*32*b33e83218acdc4e2d4bab4752bc67bf583707812d6700f8901d1012931595d58' -m 10500 -a 3 -O '?d?d?d?d?d?d?d?d?d' |
得到明文密码:789456123
4.12. 破解进度保存及恢复
使用session
参数指定进度保存文件的名称:
1 | hashcat 02cc5e493ad4e7cfacb34b7d5f335356 -m 0 -a 3 -O --session myhash |
使用--restore
参数来恢复进度(无需指定hash值):
1 | hashcat --session myhash --restore |
进度文件在
~/.local/share/hashcat/sessions/
目录下。
5. 个人密码使用建议
- 密码应至少包含12个字符(理想情况下是16个字符或更多);
- 密码应包含字母(大写和小写)、数字和特殊字符 4 种组合;
- 每个账户都必须有一个独特的密码(防止被撞库);
- 密码不应包含任何个人信息,如生日或地址,因为身份盗窃和数据泄露可能会泄露这些信息。
- 密码不应包含任何连续的字母或数字(例如:ABCD,1234,666888 等等)。
6. 参考
- https://hashcat.net/forum/printthread.php?tid=9594
- https://hashcat.net/wiki/
- https://www.sqlsec.com/2019/10/hashcat.html
- https://hashcat.net/wiki/doku.php?id=example_hashes
- https://superuser.com/questions/1329977/jtr-requires-openssl-and-openssl-devel-being-installed
- https://blog.csdn.net/qq_43750882/article/details/130713566