Python 破解Excel密码(还原工作表密码)

import win32com.client

a=[]

b=[]

c=[]

ProtectPass=[]

for i in range(2048):

    a.append(list('{:011b}'.format(i))) #生成2^11次的组合列表,因为11位密码有2^11种排列组合方式,将排列组合列表作为成员添加到列表中,此时生成的是二进制0和1

#print(a)

for i in a: # 遍历列表中的所有组合

    for j in i: # 对排列组合列表中的各个成员值进行遍历

        b.append(int(j)+65) # 对各个成员进行加65操作 0加65等于本身 1加65=66

    c.append(b) # 生成包含65和66的所有排列可能

    b=[]

for k in c: # 对所有的排列可能进行遍历 得到每组排列组合的列表形式

    #print(k)

    m=list(k) # 转换成列表

    m.append(0) #末尾再加一组成员0,因为要对其进行复制,末尾成员的值范围不是65或者66

    for n in range(32,127):

        m[len(m)-1]=n #末尾成员的赋值,范围是32-126

        #print(m)

        list2=[chr(i) for i in m] #将int类型转化成ascii码,也就是字符

        str=''.join(list2) #将字符列表转成字符串

        ProtectPass.append(str) # 最后将每一串字符串作为列表成员放入列表 方便破解密码

xlsx=win32com.client.Dispatch('Excel.Application') # 获得Excel对象

wb=xlsx.Workbooks.Open(r'C:\Users\Administrator\Desktop\hello.xlsx',False,False,None,Password="") #这里的Password是Excel文件打开密码 也可以使用穷举

xlsx.Visible = True #是否可见Excel界面

ws=wb.Sheets[1]  #获取第二张工作表,因为我设置了第二张工作表里面 第一张表则填0

# 如果是需要跑活动工作表的密码 可以使用 wb.ActiveSheet

for EditPass in ProtectPass:

    try:

        ws.Unprotect(EditPass)

        print(f"成功了 密码是{EditPass}") # 成功以后则直接跳出

        break

    except: # 出现异常就代表密码错误  此时需要无视异常继续试下一个密码

        continue
————————————————
版权声明:本文为CSDN博主「大飞哥软件自习室」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/china365love/article/details/122598056

Excel 工作表编辑密码位数为12位 范围是AAAAAAAAAAA (注意A后面有个空格)至BBBBBBBBBBB~ 拥有194560个组合

支持xlsx,支持wps

原理:
在保护工作表或者工作簿时,如果你设置了密码(图2),那么无论该密码的长度是多少,Excel都会将其转换成包含12个字符的特殊序列,并将这个经过转换的密码保存在Excel中。因此,虽然很难猜测出原始密码,但我们可以分析这12个字符序列。
假如Excel将所设置的密码转换后与包含12个字符的序列匹配,那么就相当于获取了原来由密码所限制的权限,实际上就是破解了设置的密码。也就是说,你设置的密码是什么都没有关系,存储在Excel中的实际上就是这12个字符序列组合之一。由于这12个字符可以组合成大约200000个(95*2^11=194560)不同的序列,可以通过遍历这些序列来破解密码,实际上是解除Excel给用户设置的限制。


其他方法

一、压缩法:加密的Excel表格破解的方法

1、在锁定的表格中解锁,输入密码不正确会出现这样的提醒,点击确定。

加密的Excel表格破解的方法

2、关闭文档保存一下。

加密的Excel表格破解的方法

3、右键点击文档,重新命名。

加密的Excel表格破解的方法

4、把后边格式更改为.rar。

加密的Excel表格破解的方法

5、解压文件,点击xl文件夹。

加密的Excel表格破解的方法

6、打开worksheets文件夹。

加密的Excel表格破解的方法

7、右键点击第一个文件,选择内部查看器打开。

加密的Excel表格破解的方法

8、点击查找按钮,输入protect点击查找下一个。

加密的Excel表格破解的方法

9、从<sheetProtection开始选择。

加密的Excel表格破解的方法

10、拉到scenarios=”1″/>结束,随即删除。

加密的Excel表格破解的方法

11、点击保存关闭文件夹。

加密的Excel表格破解的方法

12、回到文件主界面,点击确定。

加密的Excel表格破解的方法

13、回到文件夹,把文件格式重新命名为.xlsx。

加密的Excel表格破解的方法

14、更改完毕重新打开文件。

加密的Excel表格破解的方法

15、点击表格上方的审阅,点击保护工作表可以看到密码就被清除了。

加密的Excel表格破解的方法

二、VBA法

当时我就破解了税务局这份表格的密码,不过当初怕说出方法后,被别人乱改这份模板,所以直到今天才说明。

打开模板,可以看到各种功能都是灰色的,也就是工作表被保护了。

excel破解加密文件(xlsx格式文件加密破解方法)

这个我是借助VBA破解的。

在开发工具,点VB,进入后台,插入模块,将代码粘贴进去,点运行。

excel破解加密文件(xlsx格式文件加密破解方法)

运行后,稍等片刻,就可以破解。注意观察菜单栏,灰色的功能什么时候恢复正常的。整个操作过程,大概7秒。

excel破解加密文件(xlsx格式文件加密破解方法)

财务工作中,你是否遇到焦头烂额不知如何解决的问题呢?

(此处已添加小程序,请到今日头条客户端查看)

原模板还设置了工作簿保护,现在找不到那个没破解的,所以我自己重新设置了工作簿保护,这样隐藏起来的表格就没办法直接取消。

excel破解加密文件(xlsx格式文件加密破解方法)

针对这种,需要用另外一段代码,将所有工作表复制到新工作簿,这样就可以看到所有工作表。

被我隐藏的工作表叫下拉值,运行后,2-3秒就生成一个新工作簿,里面可以看到下拉值这个工作表。

excel破解加密文件(xlsx格式文件加密破解方法)

以上纯属技术交流,别用我教的方法去乱破解别人的模板,切记。最后,还有一种密码几乎破解不了,那就是工作簿的打开密码。

Sub 破解密码()

Dim i As Integer, j As Integer, k As Integer

Dim l As Integer, m As Integer, n As Integer

Dim i1 As Integer, i2 As Integer, i3 As Integer

Dim i4 As Integer, i5 As Integer, i6 As Integer

On Error Resume Next

If ActiveSheet.ProtectContents = False Then

MsgBox “当前表没有设置密码,请确定被保护的表是否为活动工作表! “

Exit Sub

End If

For i = 65 To 66: For j = 65 To 66: For k = 65 To 66

For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66

For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66

For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126

If ActiveSheet.ProtectContents = False Then

MsgBox “密码已经破解! “

Exit Sub

End If

ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _

Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _

Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

Next: Next: Next: Next: Next: Next

Next: Next: Next: Next: Next: Next

End Sub

Sub 复制到新工作簿()

ActiveWorkbook.Sheets.Copy

For Each sh In ActiveWorkbook.Sheets

sh.Visible = True

Next

End Sub