python的对文档密码的简单破解

最近简单学习了一下python语言,对模块和库有了一点了解,写个博客作为自己学习的记录。

这次是关于暴力破解excel密码的程序,起因是自己的一个文档忘记密码了,但自己没什么经验,就参照了一些博客的代码,按照自己的思路拼接而成。

首先是打开带密码的excel。

excel = DispatchEx("Excel.Application")  # 启动excel
excel.Visible = False  # 去掉可视化
demo = excel.Workbooks.Open(filename, UpdateLinks=False, ReadOnly=False, Format=None,
                                            Password=password)

然后是生成密码字典。

list1 = [chr(i) for i in range(48, 58)]  # 0-9的ASCLL码值
list2 = [chr(i) for i in range(65, 91)]  # A-Z的ASCLL码值
list3 = [chr(i) for i in range(97, 123)]  # a-z的ASCLL码值
newlist = list1+list2+list3 #看情况选择三种中的几种

然后就是尝试破解了。

        for i in product(newlist, repeat=length):  # 开始生成密码
            result = ''.join(i)
            password = result
            print('尝试第%d次,密码为%s' % (currentresult,password))
            try:
                demo = excel.Workbooks.Open(filename, UpdateLinks=False, ReadOnly=False, Format=None,
                                            Password=password)
                excel.Visible = True
                break

                # read_excel_password(filename, password)
            except:
                currentresult+=1
                continue

最后组合一下就可以得到完整代码。

from itertools import product
from win32com.client import DispatchEx
# product作用:将提供的容器中的所有元素排列组合形式按照指定的长度完全列出来
# 1.将数字、字母放入容器中
# 2.指定长度范围
# 3.开始生成“密码”

excel = DispatchEx("Excel.Application")  # 启动excel
excel.Visible = False  # 去掉可视化

list1 = [chr(i) for i in range(48, 58)]  # 0-9的ASCLL码值
list2 = [chr(i) for i in range(65, 91)]  # A-Z的ASCLL码值
list3 = [chr(i) for i in range(97, 123)]  # a-z的ASCLL码值
newlist = list1
print(newlist)

# 指定长度范围
currentresult=1
if __name__ == '__main__':
    filename = "此处是文件路径"
    for length in range(4, 8):
        # product(字符串容器,repeat=长度)
        for i in product(newlist, repeat=length):  # 开始生成密码
            result = ''.join(i)
            password = result
            print('尝试第%d次,密码为%s' % (currentresult,password))
            try:
                demo = excel.Workbooks.Open(filename, UpdateLinks=False, ReadOnly=False, Format=None,
                                            Password=password)
                excel.Visible = True
                break

           
            except:
                currentresult+=1
                continue
        break

自己尝试后才发现暴力破解其实根本行不通,因为自己的电脑只能做到每秒尝试20次左右,而三位数的组合就近万种,不过这也算是一次很不错的尝试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大胆无敌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值