Python中使用密码字典需限于授权场景,如CTF或本地测试环境;读取时用latin-1编码处理rockyou.txt等文件,逐行strip后尝试哈希匹配;严禁未授权爆破,开发中应采用bcrypt等安全哈希。

在Python中使用密码字典,通常指读取一个包含常见密码的文本文件(如 passwords.txt),逐行尝试匹配或用于安全测试(例如登录爆破模拟、弱口令检测等)。但需特别注意:未经许可对他人系统进行暴力破解是违法行为,仅限授权场景(如CTF练习、自己搭建的测试环境、渗透测试授权项目)。
准备密码字典文件
密码字典一般为纯文本,每行一个密码,例如:
123456
password
admin
qwerty
iloveyou
可从公开资源获取(如 rockyou.txt),注意解压后可能需用 iconv 或 Python 转换编码(常见为 latin-1)。
用Python读取并遍历字典
基础做法是逐行读取,去掉换行符后使用:
立即学习“Python免费学习笔记(深入)”;
- 用
with open(..., encoding='latin-1') as f:避免编码错误(尤其 rockyou.txt) - 用
line.strip()去除首尾空白和换行 - 可加
if not line.strip(): continue跳过空行 - 建议限制尝试次数(如前1000条)做快速验证,避免卡死
结合实际用途示例(仅限本地测试)
比如验证某哈希是否在字典中对应明文:
- 用
hashlib.md5(password.encode()).hexdigest()计算MD5 - 对比目标哈希值,匹配则输出密码
- 对SHA-1、SHA-256同理,注意编码统一(一般用
utf-8) - 若涉及加盐(salt),需将 salt + password 拼接后再哈希
安全与合规提醒
真实环境中务必遵守法律与权限边界:
- 禁止对非自有系统发起任何暴力猜测行为
- 企业内网弱口令扫描需书面授权并限定IP范围与时段
- 开发登录功能时,应使用
passlib或bcrypt安全哈希,而非明文比对字典 - 学习目的推荐使用 SecLists 中的字典,并配合 Docker 搭建靶机(如 WebGoat、DVWA)











