首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >密码破解

密码破解
EN

Stack Overflow用户
提问于 2019-12-02 16:27:15
回答 2查看 170关注 0票数 0

我以前问过这个问题一次,没有得到我想要的答案,但我找到了另一种方法。所以我又来了。

(前一个发现的答案的问题是,它非常有效,有点太高效了。我无法计算比较,我希望它是找到密码的最基本的方法,这样我就可以实现一个评分系统。)

我想做一个密码评级程序,根据时间长短对密码进行评级,并对程序进行比较,以便找到正确的密码。

我希望使用多种不同的方法来破解输入,例如:将输入与普通单词数据库进行比较,并从第一个字符开始生成密码的所有可能性。

问题:

我找不到从列表中的一个元素开始的方法,我们将它称为A

运行A通过chr(32) - chr(127) ('space' - '~'),然后向名为B的列表中添加第二个元素。

对于第二个循环,set A = chr(32)B将通过chr(32) - chr(127)运行。然后,A将转换为chr(33)B将运行所有字符,等等。在对所有可能的选项进行比较之前,在下一个循环中,它将向列表中添加另一个元素,并继续搜索,从chr(32)chr(32)chr(32-127)开始。继续此模式,直到找到正确的密码。

这是我最近能找到的有用的东西(我知道这很糟糕)。

代码语言:javascript
复制
while ''.join(passCheck) != ''.join(usrPassword) :


    for i in range(0, len(usrPassword)) :
        if ''.join(passCheck) != ''.join(usrPassword) :
            passCheck.append(' ')

            for j in range(32, 127) :
                if ''.join(passCheck) != ''.join(usrPassword) :
                    passCheck[i] = chr(j)
                    for k in range(0, len(passCheck)) :
                        for l in range(32, 127) :
                            if ''.join(passCheck) != ''.join(usrPassword) :
                                passCheck[k] = chr(l)
                                print(passCheck)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-03 02:59:42

这个问题的答案是,不幸的是,你可能想问另一个问题。

检查密码强度并不像计算所有可能的组合、Shannon熵等那么简单。

重要的是所谓的“猜测熵”,它是原始蛮力熵、已知密码列表和密码泄漏列表、适用于这些列表的规则、与这些列表中元素的距离、人工生成的字符串和短语、键盘行走等极其复杂的组合。

此外,密码强度深深植根于“这个密码是如何产生的?”这个问题。这是非常困难的,事实上,自动检测和计算后的事实。作为人类,在许多情况下,我们可以通过逆向工程来近似于这一点,即人们如何选择密码的心理.但这仍然是一门艺术,而不是一门科学。

例如,“itsmypartyandillcryifiwantto”是一个糟糕的密码,尽管它的Shannon熵相当大。“WYuNLDcp0yhsZXvstXko”是随机生成的密码.但既然这是公开的,那就不太好了。直到你知道像“qscwdvefbrgn”或“ji32k7au4a83”这样的密码是如何生成的,它们看起来很强大.但他们绝对不是。

所以,如果你用严格的答案回答你的问题,你可能会得到一个工具,它大大高估了许多密码的强度。如果您的目标实际上是鼓励用户创建抵抗暴力的密码,那么您应该鼓励他们使用随机生成的密码,并确保您的密码使用非常慢的散列(Argon2系列、scrypt、bcrypt等)--但是在选择一个密码之前,请确保为UX和服务器性能准备这些密码。

参考资料和进一步阅读(免责声明:有些是我的答案或有我的评论):

票数 1
EN

Stack Overflow用户

发布于 2019-12-02 17:02:02

如果您按字母顺序签入,那么只需要一个循环就可以计算出它需要检查多少次。

你有96个字符(127-32+1)

代码语言:javascript
复制
password = 'ABC'

rate = 0

for char in password:
    rate = rate*96 + (ord(char)-31)

print(rate)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59142980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档