使用hashcat找回office文档密码

2023-10-08 17:30

本文主要是介绍使用hashcat找回office文档密码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文已经发技术栈

Word软件是目前世界上使用最为广泛的办公文字处理软件之一,在国内应该有超过90%的用户在使用它。政府、企业公司以及个人都喜欢用Word文件来处理工作和个人事务,而在使用Word文件来保存文件的内容时,根据不同的安全需要,需要对文件内容进行保护时就需要进行加密,而需要阅读文件内容时就需要解密。很多个人都有记日记的习惯,可时间久了,往往会忘记自己的密码, 如果不能找回密码,则无法查看文档内容。

目前网上有很多关于Word密码破解的软件,例如Word Password Recvery Master无限制版、Advanced Office Password Recovery。其主要破解方式是采用暴力破解,破解成功后会显示原来的加密密码。如果密码设置的相对复杂,其破解时间特别长。“Office Password Remover” 是国外一家单独做密码恢复的软件的公司开发的,该公司还有许多其它密码恢复的软件,原版“Office Password Remover”软件下载地址http://www.rixler.com/download.htm。rixler破解“Office97/2000兼容”加密类型的word加密文件,其速度非常快,最慢不超过一分钟。其缺点是在破解时需要访问网络http://www.rixler.com/,而且破解后不显示原来密码(联网破解需要付费购买其软件)。通过笔者研究,发现hashcat新版本增加了很多新功能,hashcat采用暴力破解和哈希值碰撞方式进行暴力破解,按照其官方的说法,一个word加密文件有可能有多个密码可以用来打开该文件。

1.1.1word文件加密

1.加密Word文件

一般情况下说的对Word文件加密是指采用Word字处理软件所自带的加密功能,要使用该功能,可在word文件编辑状态下,选择“工具”-“选项”-“安全性”,就会出现如图1所示的界面。

1-打开word文件.JPG

1 打开加密Word文件选项

2.设置加密密码

Word文家加密常用的选项主要有二种,一种是打开权限,另外一种是拥有修改权限可以对文件进行修改。在对Word文件进行加密时可以根据需要,设置打开权限密码和修改权限密码,设置完毕后单击“确定”保存设置时,往往需要再次确认密码,如图2所示,确认完毕后,关闭Word文件后,再次打开时就需要输入密码。如果设置的是修改权限密码,这在打开时会提示分别输入打开权限密码和修改权限密码。

2-计算word哈希值.jpg

2 设置加密密码

目前也有单独针对Word文件开发的加解密软件,要解密这种Word文件非常困难。在Word字处理软件中提供了多种加密算法类型,在图3中单击“高级”可以查看和选择不同的加密类型。Word默认的加密类型是是Office97/2000兼容,该加密类型非常容易被破解,而如果要对Word文件进行较高等级的安全保护,建议采用其它加密类型,除了“Office97/2000兼容”加密类型外,其它加密类型均较难破解,对这些加密类型采取破解时多用暴力破解,其破解主要跟字典有关。

3-带摘要的哈希值.JPG

图3 选择Word加密类型

1.1.2找回office文档密码方法

对于加密Word文件笔者认为有三种方式找回:

1.暴力破解。这是最常用的,通过编程将字典中的值依次输入进行确认尝试,一旦尝试成功,则说明该值为破解值,其破解成功往往取决于字典的完善程度。字典在网络安全中扮演中非常重要的角色,不断的完善和更新字典是一个好习惯,一个高手往往有好多个字典,字典可以是以.dic.txt结尾的文件,文件中每一个字符串为一行。

2.针对算法的破解。 针对算法的破解,要求对加密算法非常熟悉,通过加密算法中的缺陷或者就是针对加密算法的破解算法进行编程,然后进行自动破解,这种方法往往破解速度快,但是使用破解软件的技术难度大,这类软件往往是国外的网络安全大牛们写的,国内也有很多大牛,不过他们不怎么写,看学论坛中有很多高手,大家可以去看看!

3.另类破解。另类破解,那就是天才中的天才,也就是“只有你想不到的,没有做不到的。”往往采用常人所想不到的破解方式来进行破解,例如王晓芸教授破解Md5加密算法。

1.1.3使用hashcat软件进行密码找回

hashcat是一款强大的综合密码破解工具,其支持高达数百种加密算法的破解,以前有一个Advanced Office Password Breaker可以对Office密码进行恢复,下面介绍如何利用hashcat来进行office文档的破解。

1.打开文件需要输入密码

   使用office软件打开某个被加密动word文件,需要输入密码,如图4所示,只有输入正确密码才能正常访问。

4-破解的哈希值.JPG

图4打开加密word文件

2.计算加密word文件的hash值

下载http://www.openwall.com/john/j/john-1.8.0-jumbo-1.tar.gz,从其压缩包中获取office2john.py文件,然后执行:

office2john.py 6.doc

执行效果如图5所示,可以将执行结果定向到hash文件:

office2john.py 6.doc >hash

5-执行破解.jpg

图5计算word文件hash值

3.整理hash文件

Hash文件生成的内容如图6所示,该hash文件无法直接进行计算,需要去掉一些无关信息。

6-破解结束.JPG

图6hash文件内容

   对hash文件进行整理,去掉“6.doc:”和“:::第6章 ***检测神话 渔樵 Normal 邓琦皓 2 Microsoft Word 9.0 YuQiao Studio::6.doc”,如图7所示,获取正确的哈希值:

$oldoffice$1*ae8adb6a8b3aeb7c1bd3bb6bf6514ef4*5e4ffbe5034d9fa2bf05dce0a9d34bb7*db9ca3e3291f536620ad7c987ac6e514

7-hashcat破解结果文件.JPG

图7整理好的哈希值

4.破解Office加密Offcie版本对应哈希类型

Office 97-03(MD5+RC4,oldoffice$0,oldoffice$1):   -m 9700  

Office 97-03($0/$1, MD5 + RC4, collider #1):   -m 9710 

Office 97-03($0/$1, MD5 + RC4, collider #2):   -m 9720 

Office 97-03($3/$4, SHA1 + RC4):   -m 9800 

Office 97-03($3, SHA1 + RC4, collider #1):   -m 9810 

Office 97-03($3, SHA1 + RC4, collider #2):   -m 9820 

Office 2007:   -m 9400  

Office 2010:  -m 9500 

Office 2013:   -m 9600

5.使用hashcat进行破解

(1)Hashcat中自定义破解含义值

   ?l = abcdefghijklmnopqrstuvwxyz 代表小写字母

   ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ 代表大写字母

   ?d = 0123456789 代表数字

   ?s =  !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~  代表特殊字符

   ?a = ?l?u?d?s 大小写数字及特殊字符的组合

   ?b = 0x00 - 0xff

6.破解示例

(1)8位数字破解

Hashcat64 -m 9700 hash -a 3 ?d?d?d?d?d?d?d?d -w 3 –O

(2)1-8位数字破解

Hashcat -m 9700 hash -a 3 --increment --increment-min 1 --increment-max 8 ?d?d?d?d?d?d?d?d

(3)18位小写字母破解

Hashcat -m 9700 hash -a 3 --increment --increment-min 1 --increment-max 8 ?l?l?l?l?l?l?l?l

(4)8小写字母破解

Hashcat -m 9700 hash -a 3 ?l?l?l?l?l?l?l?l -w 3 –O

51-8位大写字母破解

Hashcat -m 9700 hash -a 3 --increment --increment-min 1 --increment-max 8 ?u?u?u?u?u?u?u?u

68大写字母破解

Hashcat -m 9700 hash -a 3 ?u?u?u?u?u?u?u?u -w 3 –O

75位小写+大写+数字+特殊字符破解

Hashcat -m 9700 hash -a 3 ?b?b?b?b?b -w 3

(8)使用字典进行破解

使用password.lst字典进行暴力破解,-w 3参数是指定电力消耗

Hashcat  -m 9700 -a 0  -w 3 hash  password.lst

   破解时采取先易后难的原则,建议如下:

1)使用1-8位数字进行破解。

(2)使用1-8位小写字母进行破解

3)使用1-8位大写字母进行破解

4)使用1-8位混合大小写+数字+特殊字符进行破解

5)利用收集的公开字典进行破解

   如图8所示,对hash文件通过数字破解完成后,继续进行1-8位小写字母的破解,在该图中会显示掩码值,破解进度,破解开始时间,破解预计耗费时间,以及破解显卡或者CPU的温度,一般设置到90摄氏度就自动终止,以免烧坏计算机。

8-查看破解结果.jpg

图8开始破解

7.查看破解结果

   在执行破解成功后,hashcat会自动终止破解,并显示破解状态为Cracked,Recvoered中也会显示是否破解成功,如图9所示,经过34分钟的破解,成功将某一个加密文档破解。

图9破解word文件成功.jpg

图9破解word文件成功

   还可以通过查看hashcat.potfile以及执行破解命令后加“--show”命令查看,也即:

Hashcat64 -m 9700 hash -a 3 --increment --increment-min 1 --increment-max 8 ?l?l?l?l?l?l?l?l –show

如图10,图11所示,该word文件密码为shirley。

10.jpg

图10查看potfile查看破解结果


图11执行命令查看破解结果.jpg

图11执行命令查看破解结果


这篇关于使用hashcat找回office文档密码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/166883

相关文章

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(