基于Edge的密码本强度分析工具¶
idea来自于某憨憨(指自己)上传了edge的密码本,在修改完密码后考虑到的密码本强度,所以写了一个简单的工具。
更新日志:
- 04-30 完成大部分逻辑
- 05-11 归档
前言¶
目前网上有大量的密码分析工具,但基本都是基于单一密码或给定输入密码的。而真实情况下,攻击者可能会知道我们的一部分信息,比如一些常见信息等。此程序可以基于一个密码本来分析密码本的总体强度并给出相关建议。
下载与使用¶
你可以在这里查看源代码,自己编译并运行 你也可以直接下载exe打包的文件,在windows环境下即可直接使用
【环境准备】
- 建议:从edge导出密码本的.csv文件。
- 具体操作操作为edge -> 设置 -> 个人资料 -> 密码(microsoft电子钱包) -> 设置旁边的'...' -> 导出密码 -> 导出为csv文件
- todo:从excel或剪贴板导入任意格式的密码本
注意:你的csv文件应该有如下格式:
Name | Url | UserName | Password |
---|---|---|---|
名称 | 链接 | 用户名 | 密码 |
运行文件
- 将csv密码本和运行文件放在同一目录下
- 编译.py文件或直接执行exe文件
- 请注意:本程序所有操作均在本地处理!!不涉及隐私的泄露,请放心使用。不承担任何因密码泄露的责任,请谨慎保管你的密码。
- 为了大家的方便,这里也提供了Web端的密码分析工具,全部基于本地处理
算法简介¶
单一密码分析:算法来自于 KeePass KeePass 使用高级算法来估计密码的质量/强度。 它搜索模式,例如流行的密码(基于大约10000个最常见密码的内置列表;检测到大小写和L33t替换的变化),重复序列,数字(由多个数字组成),恒定差异序列等。 覆盖整个密码的每个模式组合,计算成本(编码数据所需的比特数和模式标识符的顺序)。对于编码模式标识符,使用最佳静态熵编码器。 每个单个密码字符形成长度为1的模式,并使用依赖于字符空间的阻尼静态熵编码器进行编码。 最小模式组合成本用作最终质量估计。
简单密码分析:分析了一些简单的逻辑
撞库攻击:撞库字典算法来自于pydictor,详情可以参考pydictor(github.com)
- ps:这个字典挺可怕的,以至于下面的方法可以全部失效
关于你的密码/口令安全¶
你的密码安全吗?
多数情况下,你的密码都不是被暴力破解的,而是因为你在许多网站上都使用了同一个密码!
毕竟现在国内黑客破解密码的常用手段之一,就是攻入一些网站的后台,获取到数据库内的ID+密码后,到其他各大网站尝试相同ID+密码能否登录(撞库攻击)
所以实际不是密码复杂度的问题,而是你不要在那些不安全的小网站上使用和你重要网站一样密码的问题❌
这里最简单的解决方案就是密码分级,一般来说可以按3个梯度来进行设置
-
涉及到金钱的网站一类密码(如支付宝、微信、paypal)
-
包含大量个人隐私的网站一类密码(比如QQ、微博、邮箱)、同时绑定了其他登录方式的(微软、谷歌等等)
-
其他不索要个人隐私的网站一类密码(比如那种只需要邮箱就能进行注册的网站)
设计一个密码规则
这里推荐的一个好方法就是,规则密码法:通过设计一套加密规则,利用固定密码+不同登录网站生成不同密码。
这里的规则可以大胆的发挥你的想象力,比如:
- 借用网站的顶级域名(因为除了某些机场外 顶级域名很少改变)作为
变量1
,如.com .cn - 借用网站的主域名Domain,作为
变量2
,因为同一公司可能有多个二级域名,但大概率是同一个主域名(比如`account.alibaba.com
和alibaba.com
都有同一个主域名) - 一些固定字符串作为
变量3
,比如dancehole(注意这些固定字符串,应当定期全量替换,为了安全性可以每一两年修改一次) - 利用一个固定的拼接规则,比如
[变量1]+{变量2}-(变量3)/.q
完成不同网站不同密码,最后的/.q
只是做混淆用,可以替换成其他字符
怎么保证你的固定字符串是否安全?
我们可以从攻击者处考虑:
- 防止穷举攻击:设置高信息熵的密码,\(熵=log_2(int(不同字符的数量)^{int(长度)})\) ,当然这只是一个非常粗浅的办法
- 防止撞库攻击:设置低隐私相关的密码,不要涉及高隐私的东西,比如“生日/手机号/完整用户名/姓名等等”,攻击者获取这些信息轻而易举(程序里也会调用api,在后端搜索相关的隐私信息)。
- ^2替代的,我们可以用比如“身份证倒数三位”“宿舍在的楼层数”“自己小学学号”等不易获取也低敏感的隐私信息作为串值。发挥你的想象力!
其他
- 实操过程中发现目前还有很多网站不支持长密码,即对设置的密码的长度做出了限制(目前发现最短的限制是
最长15位
),所以也不建议设置的太长。此程序中使用128bit熵作为比较严苛的标准(AES-128)
密码管理软件
这里推荐一个一劳永逸的办法(暂时):借助一些密码管理软件确保绝对安全(保证可用性,不过稳定性依赖于软件公司),目前最强大最主流的就是KeePass
最后,不要有人傻傻的!把自己的密码本挂公网上了!!瑾此纪录2024-04-28
参考文献:csdn-阿虚