Hashcat教程:利用“规则”破解密码

是这样的,想请教下,Hashcat教程:利用“规则”破解密码
最新回答
分手后的那一夜丶

2026-10-24 18:07:34

Hashcat 是一款高性能密码破解工具,支持基于规则的攻击方式,通过编写规则可对字典进行灵活变换,生成大量衍生密码以提高破解效率。以下是关于 Hashcat 规则编写的详细教程:

一、规则编写基础与调试
  • 基础规则测试:以单词 spring 为例,创建字典文件 dict.txt 并写入该单词,创建规则文件 test.rule 并写入规则 c(将首字母大写)。运行以下命令测试规则效果:

    hashcat64.exe -r test.rule --stdout dict.txt

    输出结果为 Spring,验证规则生效。

  • 规则作用范围:大写规则仅对字母有效。例如,输入 !spring 或 !SPRING 时,输出仍为 !spring,因规则不处理首字符的数字或特殊符号。

二、常用规则类型1. 字符追加与插入
  • 末尾追加:规则 c $2$0$1$9 先将单词首字母大写,再追加 2019。例如:

    echo spring > dict.txtecho "c $2$0$1$9" > test.rulehashcat64.exe -r test.rule --stdout dict.txt

    输出结果为 Spring2019。

  • 开头插入:规则 ^3^2^1 表示将字符串 123 反转后插入开头。例如:

    echo "^3^2^1" > test.rulehashcat64.exe -r test.rule --stdout dict.txt

    输出结果为 123spring。若需首字母大写,规则需调整为 c ^3^2^1,输出 123Spring。

2. 字符复制

通过重复规则生成长密码,例如:

  • c d $2$0$1$9 → SpringSpring2019
  • d c $2$0$1$9 → Springspring2019
  • $2$0$1$9 d c → Spring2019spring2019
3. 字符替换

使用替换规则修改特定字符,例如:

  • 规则 ss$ 将 password 转换为 pa$$word。
  • 参考 leetspeak.rule 或 Incisive-leetspeak.rule 文件获取更多替换示例。
三、规则融合与自动化生成1. 规则融合

根据密码模式组合规则。例如,生成 Spring2019 模式的密码:

  • 规则 c $2$0$1$9 可生成 Spring2019。
  • 若需覆盖多个年份,需手动编写多条规则:c $1$9$8$1 # 生成 Spring1981c $1$9$8$2 # 生成 Spring1982# ...c $2$0$1$9 # 生成 Spring2019
2. 自动化规则生成
  • 脚本生成:使用 date_rule.py 脚本批量生成日期规则。例如,为每个密码追加 1980-2020 年份:

    # 脚本逻辑示例:遍历年份范围并生成规则for year in range(1980, 2021): print(f"c ${year % 100}$")
  • Maskprocessor 工具:通过掩码生成复杂规则。例如:

    在密码末尾追加任意字符:

    mp64.exe -o test.rule "$?a"

    在密码开头插入数字、末尾追加任意字符并首字母大写:

    mp64.exe -o test.rule "c ^?d $?a"

四、规则优化建议
  1. 优先级控制:将高频规则(如首字母大写)放在规则文件开头,以加速破解。
  2. 避免冗余:合并重复操作,例如 c d(首字母大写后复制)比 d c(复制后首字母大写)更高效。
  3. 掩码组合:利用 Maskprocessor 生成混合规则,例如:mp64.exe -o test.rule "c $?d $?s" # 首字母大写 + 末尾追加数字和特殊字符
五、示例规则集

以下规则集覆盖常见密码模式:

# 基础变换c # 首字母大写d # 全小写u # 全大写$! # 末尾追加!^1^2^3 # 开头插入321# 复杂组合c $2$0$1$9 # Spring2019c d $! # Springspring!^3^2^1 c $! # 123Spring!c $?d $?d $?s # 首字母大写 + 末尾追加两位数字和特殊字符

通过灵活组合规则,可显著提升密码破解效率。建议根据目标密码特征设计针对性规则,并利用自动化工具减少手动操作。