a57595135a 发表于 2024-3-22 17:24

手把手教你破解WPS 、Microsoft Office文档密码

本帖最后由 a57595135a 于 2024-3-24 20:02 编辑

前言
笔者就以WPS Excel为例,演示下破解过程,操作系统使用的是Ubuntu 22.04桌面版。

准备工作
1、一个带密码的excel文档
2、如果你的机器没有独显,则安装OpenCL驱动
```
sudo apt update
sudo apt install intel-opencl-icd
```

3、如果是NVIDIA独显
(1)安装显卡驱动
```
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt search nvidia-driver
sudo apt install nvidia-driver-525 #选择一个合适的版本我这里选的是525
sudo reboot
```

安装好显卡驱动后命令行输入:
```
nvidia-smi
```

如果能正常输出类似下面的版本信息,则驱动安正确
```
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.125.06   Driver Version: 525.125.06   CUDA Version: 12.0   |
|-------------------------------+----------------------+----------------------+```

(2)安装CUDA Toolkit
根据上面显卡驱动输出的 CUDA Version 下载对应的CUDA Toolkit,如果版本不对则有可能不能正常运行,我这里就下载CUDA Toolkit 12.0版本,下载地址:

CUDA Toolkit
https://developer.nvidia.com/cuda-toolkit

CUDA Toolkit Download
https://developer.nvidia.com/cuda-downloads

CUDA Toolkit Archive
https://developer.nvidia.com/cuda-toolkit-archive

一步一步的选择你的CUDA版本以及系统版本后会显示安装命令,以下是ubuntu 22.04下cuda 12.0版本的安装命令:
```
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/cuda-repo-ubuntu2204-12-0-local_12.0.0-525.60.13-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-0-local_12.0.0-525.60.13-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-0-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
```

设置环境变量:
```
vim ~/.bashrc
export CUDA_HOME=/usr/local/cuda
export PATH=${CUDA_HOME}/bin:${PATH}
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:$LD_LIBRARY_PATH
```

使其生效
```
source ~/.bashrc
```

检查cuda安装是否正确,命令行输入:nvcc -V
```
nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Mon_Oct_24_19:12:58_PDT_2022
Cuda compilation tools, release 12.0, V12.0.76
Build cuda_12.0.r12.0/compiler.31968024_0
```

安装破解工具HASHCAT
官网地址:https://hashcat.net/hashcat/
下载地址:https://hashcat.net/files/hashcat-6.2.6.7z

下载编译hash提取工具
下载地址:https://github.com/openwall/john

编译安装
```
cd src
./configure && make -s clean && make -sj4
```

编译完成后将会在run目录生成可执行文件。


提取office密码hash
进入john的run目录执行:
```
cd ../run
./office2john.py '/home/ubuntu/Desktop/test.xlsx' > ~/Desktop/hash.txt
```

内容如下:
```
cat ~/Desktop/hash.txt
test.xlsx:$office$*2007*20*128*16*8eb5dfb7076b984f872835699267d09d*a3f37477a61095f9d1823e4b798b4b3a*2d3a5d0c4b58ee023575a429433679cc8ecc2cae
```

通过hash头$office$*2007*可以观察出WPS采用的是MS2007版本的加密算法。

而office对应的hash_type有以下几种:

```
9700 | MS Office <= 2003 $0/$1, MD5 + RC4               | Documents
9710 | MS Office <= 2003 $0/$1, MD5 + RC4, collider #1| Documents
9720 | MS Office <= 2003 $0/$1, MD5 + RC4, collider #2| Documents
9800 | MS Office <= 2003 $3/$4, SHA1 + RC4            | Documents
9810 | MS Office <= 2003 $3, SHA1 + RC4, collider #1    | Documents
9820 | MS Office <= 2003 $3, SHA1 + RC4, collider #2    | Documents
9400 | MS Office 2007                                 | Documents
9500 | MS Office 2010                                 | Documents
9600 | MS Office 2013                                 | Documents
```

2007版本对应的hash_type id是9400

执行破解
进入hashcat目录执行
```
./hashcat.bin -a 3 -m 9400 '$office$*2007*20*128*16*8eb5dfb7076b984f872835699267d09d*a3f37477a61095f9d1823e4b798b4b3a*2d3a5d0c4b58ee023575a429433679cc8ecc2cae' --force ?l?l?l?a?a?a
```

几分钟后密码就破解成功了。我这里使用的是暴力破解的方式,hashcat也可以加载密码字典文件,具体的大家可以自行搜索学习下。

性能测试
输入下面的命令测试机器性能
```
./hashcat.bin -b -m 9400
```
建议大家使用带显卡的机器进行破解,经测试集显和独显差距很大,我的集显电脑破解速度为5000+每秒,而独显电脑则可以达到15万+每秒。

内置掩码规则

```
- [ Built-in Charsets ] -

? | Charset
===+=========
l | abcdefghijklmnopqrstuvwxyz 纯小写字母
u | ABCDEFGHIJKLMNOPQRSTUVWXYZ 纯大写字母
d | 0123456789                纯数字
h | 0123456789abcdef          小写子目录和数字
H | 0123456789ABCDEF          大写字母和数字
s |!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 特殊字符
a | ?l?u?d?s 键盘上所有可见的字符
b | 0x00 - 0xff 可能是用来匹配像空格这种密码的
```

下面举几个简单的例子来了解一下掩码的设置


八位数字密码:?d?d?d?d?d?d?d?d
八位未知密码:?a?a?a?a?a?a?a?a
前四位为大写字母,后面四位为数字:?u?u?u?u?d?d?d?d
前四位为数字或者是小写字母,后四位为大写字母或者数字:?h?h?h?h?H?H?H?H
前三个字符未知,中间为admin,后三位未知:?a?a?aadmin?a?a?a
6-8位数字密码:--increment --increment-min 6 --increment-max 8 ?d?d?d?d?d?d?d?d
6-8位数字+小写字母密码:--increment --increment-min 6 --increment-max 8 ?h?h?h?h?h?h?h?h
如果我们想设置字符集为:abcd123456!@-+,那该怎么做呢。这就需要用到自定义字符集这个参数了,hashcat支持用户最多定义4组字符集


```
--custom-charset1 等价于 -1
--custom-charset2 等价于 -2
--custom-charset3 等价于 -3
--custom-charset4 等价于 -4
```

在掩码中用?1、?2、?3、?4来表示。
再来举几个例子:

```
--custom-charset1 abcd123456!@-+。然后我们就可以用"?1"去表示这个字符集了
--custom-charset2 ?l?d,这里和?2就等价于?h
-1 ?d?l?u,?1就表示数字+小写字母+大写字母
-3 abcdef -4 123456 那么?3?3?3?3?4?4?4?4就表示为前四位可能是“abcdef”,后四位可能是“123456”
```

==========================================================================

补充说明
很多朋友说没有windows教程,其实跟上面的linux没什么太大区别,我这里简单的说一下windows步骤:
1、安装NVIDIA显卡驱动(前提是独显)
2、安装cuda-toolkit(前提是独显)
命令行输入nvidia-smi查看对应的CUDA Version,然后前往 https://developer.nvidia.com/cuda-toolkit-archive
选择CUDA版本、操作系统版本、下载exe(local)安装,安装时选择自定义安装,只勾选第一项CUDA,且CUDA的子项取消勾选Visual studio Integration
3、下载windows版本的 office、zip、rar等 hash提取工具:https://www.openwall.com/john/
4、下载HASHCAT破解工具:https://hashcat.net/files/hashcat-6.2.6.7z

优化建议
1、对于破解过的hash值,用./hashcat.bin hash --show查看结果
2、所有的hash破解结果都在hashcat.potfile文件中
3、如果破解的时间太长,可以按s键可以查看破解的状态,p键暂停,r键继续破解,q键退出破解
4、中途暂停或者终止后,使用./hashcat64.bin --restore恢复运行
5、在使用GPU模式进行破解时,可以使用-O参数自动进行优化
6、在实际破解中的建议,如果我们盲目的去破解,会占用我们大量的时间和资源,建议先跑一些常用的弱口令和密码字典文件
7、参数优化
考虑到hashcat的破解速度以及资源的分配,我们可以对一些参数进行配置
(1)Workload tuning 负载调优。
该参数支持的值有1,8,40,80,160
--gpu-accel 160 可以让GPU发挥最大性能

(2)Gpu loops 负载微调
该参数支持的值的范围是8-1024(有些算法只支持到1000)
--gpu-loops 1024 可以让GPU发挥最大性能

(3)Segment size 字典缓存大小
该参数是设置内存缓存的大小,作用是将字典放入内存缓存以加快字典破解速度,默认为32MB,可以根据自身内存情况进行设置,当然是越大越块了。
--segment-size 512 可以提高大字典破解的速度

8、性能测试
以wps office为例(如果不指定-m参数将跑所有hash-type):
```
./hashcat.bin -b -m 9400
-----------------------------------------------------
* Hash-Mode 9400 (MS Office 2007)
-----------------------------------------------------

Speed.#1.........:   156.1 kH/s (71.91ms) @ Accel:512 Loops:1024 Thr:32 Vec:1
```

根据上述测试,我的机器性能为每秒计算156100个office hash,从而我们可以评估下跑某一个密码长度所需的时间。
假设我们要跑1-10位数字:10 ** 10 / 156000 / 3600 ≈ 17.8小时

最后我的显卡是NVIDIA GeForce RTX 2060 12G,供大家参考一下,这个卡本身算力是比较弱的,如果是4090之类的很可能会突破百万每秒。

zuxin521 发表于 2024-3-23 10:16

好高深的呀,我记得以前有个方法是改扩展名后缀,然后用压缩软件提取出来的,是无密码的源文件,现在这个方法还能用吗?

wjbg2022 发表于 2024-3-23 08:11

暴力破解,要破解到什么时候啊!我的每秒1000次,破解了2天才跑完4位的

湿求了鸭 发表于 2024-3-23 08:10

sai609 发表于 2024-3-23 07:25
解密与显卡有啥关系?还非得上独显?

独显浮点性能强,跑得更快

jyjjf 发表于 2024-3-23 08:26

sai609 发表于 2024-3-23 07:25
解密与显卡有啥关系?还非得上独显?

了解一下挖矿为什么要好显卡,挖矿本身就是相当于一种加解密运算

xiaolong666 发表于 2024-3-23 06:43

破解wps文档密码眼

sai609 发表于 2024-3-23 07:25

解密与显卡有啥关系?还非得上独显?

wanderx2012 发表于 2024-3-23 08:00

有没有windows环境解密的教程?

gc66295 发表于 2024-3-23 08:00

好好学习说不定什么时候就用上了

morris1968 发表于 2024-3-23 08:12

显卡和破解有毛关系?
是升级显卡驱动 增加算法功力 降低暴力破解时间?

tsmjg 发表于 2024-3-23 08:22

太难了,电脑跑冒烟了
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 手把手教你破解WPS 、Microsoft Office文档密码