Please enable Javascript to view the contents

暴力破解一个8位密码需要多长时间?

 ·  ☕ 2 分钟

暴力破解(英语:Brute-force attack),简称暴破,又称为穷举攻击(英语:Exhaustive attack),是一种密码分析的方法,即将密码进行逐个推算直到找出真正的密码为止。例如:一个已知是四位数并且全部由阿拉伯数字组成的密码,其可能共有10000种组合,因此最多尝试9999次就能找到正确的密码。

理论上除了具有完善保密性的密码以外,利用这种方法可以破解任何一种密码,问题只在于如何缩短试误时间。

尝试暴力破解

昨晚从网上下载了一个RAR的压缩文件,解压缩发现需要密码。去到原网站找线索,原来站长收费才能给密码,而且收费不低。

MD,你要收费提前说啊,害我浪费时间下载。这就像水浒传里的土匪一样,把你载到湖心才问你要钱要命。

当下心想,坚决不付费,还要把密码破解了,把内容分享给大家。

于是在github找到一个基于python+unrar.exe的项目:mnismt/CompressedCrack: Crack password .rar and .zip file with Python

简单浏览了代码及使用方法,设置了从5位密码~8位密码开始破解,执行,速度还行,每秒几十次的破解速度。

睡觉前还细心的关闭了电脑休眠,心想着睡醒之后,应该能从5位跳到6位。


时间分析

第二天睡醒,代码已经执行了10个小时,但是5位的密码一半都没有解完。瞬间,头秃的我感觉头上更凉了。

查看了一下代码,发现是基于94个字符串:

CHARACTER = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\\:;\"'<>,.?/"

这94个字符串覆盖了26个字母大小写、0~9数字及合法的密码标点符号。

1

基于这94个字符,5位的密码需要计算 94^5次,假设每秒能够计算10000次:

94 ** 5 / 10000 / 3600 / 24
8.494259518518518

需要8.5天才能破解。

2

如果密码为8位,每秒运算10000次,时间将以万年计:

94 ** 8 / 10000 / 3600 / 24 / 365
19329.304240901878

需要1.9万年。

3

如果只基于0~9这10个数字,密码为8位,每秒运算10000次,时间将为2.8小时:

10 ** 8 / 10000 / 3600
2.7777777777777777

我觉得我可以先试试纯数字,毕竟2小时还是等得起,前提是你的机器能每秒运算10000万次。

结论

最后我发现,原来RAR压缩文件支持中文字符做密码,那暴力破解难度就更大了。

暴力破解的机器成本、时间成本都很高,根本是mission impossible,没事别尝试。

参考资料

分享

码中人
作者
码中人
Web Developer