如何使用训练完成的PassGAN模型生成密码并导出密码文件
PassGAN生成并导出密码文件操作指南
你完成模型训练后,直接使用项目内置的样本生成脚本即可导出密码文件,不需要额外开发功能,具体操作如下:
前置检查
先确认训练产出的模型权重文件均存放在项目的checkpoints目录下,正常训练完成后该目录会包含以.ckpt为核心的三类文件:权重数据文件、索引文件、计算图meta文件,这是生成密码的必要前提。
执行生成命令
在终端切换到PassGAN项目根目录,运行如下命令即可生成指定数量的密码并导出到文件:
python sample.py \ --checkpoint checkpoints/[你的模型文件前缀] \ --num-samples 1000000 \ --output-file generated_passwords.txt
参数说明:
--checkpoint:填写训练得到的模型文件前缀即可,例如目录下存在model_120000.ckpt.data-00000-of-00001文件,此处填checkpoints/model_120000--num-samples:指定要生成的密码总条数,如果你要和100万条测试集做比对,可按需填写1000000或更大的数值(生成量越大,匹配统计结果越贴近模型真实破解能力)--output-file:指定生成密码的导出路径,命令执行完成后,对应路径下会生成文本文件,每行存储1条生成的密码,格式和你使用的rockyou测试集完全一致。
常见问题处理
如果运行时出现模型加载错误、生成内容为乱码的问题,优先检查两点:
- 生成命令携带的参数必须和训练时的参数保持一致,例如训练时指定了密码最大长度
--max-length 12、自定义字符集,生成时必须追加同样的参数,否则模型输入维度不匹配会运行异常 - 你已经做了TensorFlow v1兼容修改,运行脚本前确认当前环境的TensorFlow版本和你修改代码适配的版本一致,避免版本冲突报错。
匹配统计快速实现
导出密码文件后,可直接通过如下方式快速统计和测试集的匹配数量:
如果是Linux/macOS环境,直接用终端命令即可完成去重、交集统计:
# 对两个密码文件分别去重,避免重复条目干扰统计 sort -u generated_passwords.txt > gen_unique.txt sort -u rockyou-test.txt > test_unique.txt # 统计两个文件的交集行数,即为匹配到的唯一密码数量 comm -12 gen_unique.txt test_unique.txt | wc -l
如果是Windows环境,可通过Python简单实现统计逻辑:
# 读取生成的密码存入集合去重 with open("generated_passwords.txt", "r", encoding="utf-8", errors="ignore") as f: gen_pwd = set(line.strip() for line in f if line.strip()) # 读取测试集密码存入集合去重 with open("rockyou-test.txt", "r", encoding="utf-8", errors="ignore") as f: test_pwd = set(line.strip() for line in f if line.strip()) # 计算交集大小得到匹配数 match_num = len(gen_pwd & test_pwd) print(f"匹配到的密码数量为:{match_num}")
内容的提问来源于stack exchange,提问作者Medhansh Garg
相关产品推荐
相关产品推荐

