You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用OSX Bash脚本暴力破解MD5哈希以查找已知密码对应盐?

针对固定盐MD5哈希的破解方案

嘿,你已经抓准了关键线索——这个网站用的是固定盐的MD5哈希,而且你还把盐的范围缩小到了2字符,这事儿就好办多了!结合你已知的密码123321和目标哈希896501b1d2ed4ec4e2d3a6c69a672152,我给你整理一套可行的思路:

第一步:确认盐的拼接规则

加盐MD5最常见的两种组合方式是「盐在前+密码」或者「密码+盐在后」,你可以先用自己的测试用例验证:比如你已知某个盐XX和密码生成的哈希,分别计算md5(XX+密码)md5(密码+XX),看哪个结果和测试用例的哈希一致,先把规则搞对。

第二步:暴力遍历2字符盐(附Python示例)

因为只有2字符,哪怕包含所有可打印ASCII字符,总共也才9000多种组合,完全可以暴力遍历出来。这里给你写个基础脚本:

import hashlib

# 替换成你的目标哈希和已知密码
target_hash = "896501b1d2ed4ec4e2d3a6c69a672152"
known_password = "123321"

# 定义盐的字符范围,可根据实际情况调整(比如只保留字母数字)
salt_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+-=[]{}|;:,.<>?"

# 遍历所有2字符组合
for first_char in salt_chars:
    for second_char in salt_chars:
        current_salt = first_char + second_char
        # 测试盐在前的情况
        hash_result = hashlib.md5(f"{current_salt}{known_password}".encode()).hexdigest()
        if hash_result == target_hash:
            print(f"找到匹配的盐(前缀):{current_salt}")
            exit()
        # 测试盐在后的情况
        hash_result = hashlib.md5(f"{known_password}{current_salt}".encode()).hexdigest()
        if hash_result == target_hash:
            print(f"找到匹配的盐(后缀):{current_salt}")
            exit()

print("没找到匹配的盐?可能需要扩大字符范围,或者检查拼接规则是不是有其他变种(比如加盐后再转大写?)")

第三步:用你的测试用例验证脚本

先把你已知盐和密码的测试数据代入脚本,确认脚本能准确输出已知的盐,这能确保你的脚本逻辑没问题,再拿去跑目标哈希。

如果你的测试代码遇到了报错或者不符合预期的情况,把代码片段贴出来,我帮你排查问题~

内容的提问来源于stack exchange,提问作者Cyborg

火山引擎 最新活动