首页 > 解决方案 > 如何使用已知的基本密码暴力破解我自己的加密 .dmg

问题描述

我在玩弄磁盘工具的加密 .dmg 功能。我不小心把一个重要文件放在那里,部分忘记了密码。(我知道!)我确切地知道密码的第一部分是什么,但最后 2-4 位数字我只是一个模糊的概念。像 Myword55& 或 Urword934 之类的东西!

我怎么能蛮力自动尝试所有密码组合?我找到了以下 bash 脚本,但不知道如何根据我的确切需要对其进行修改:

#!/bin/bash
dmgfile="Your Encrypted File.dmg"

function TryPassword
{
    echo -n "$1 "
    r=$(echo -n "$1" | hdiutil verify -stdinpass "$dmgfile" 2>&1)
    if ! [[ $r =~ "Authentication error" ]]; then
        echo ""
        echo "Found! The password is: $1"
    exit
    fi
}

chars=$(echo {0..9} {A..z})
alphanum=( $(echo $chars | sed -E 's/[^A-Za-z0-9 ]+/ /g') )
letter=( $(echo $chars | sed -E 's/[^A-Za-z ]+/ /g') )
lowercase=( $(echo $chars | sed -E 's/[^a-z ]+/ /g') )
uppercase=( $(echo $chars | sed -E 's/[^A-Z ]+/ /g') )
digit=( $(echo $chars | sed -E 's/[^0-9 ]+/ /g') )

for a in "${letter[@]}"; do
    for b in "${lowercase[@]}"; do
        for c in "${digit[@]}"; do
            TryPassword "$a$b$c"
        done
    done
done

标签: bashbrute-forcedmg

解决方案


编辑:明白了! 我找到了我正在寻找的密码......
原来我在“数字”这个词上有错字的脚本,因此没有正确执行。我将 for 循环修改为:

for a in "${digit[@]}"; do
    for b in "${digit[@]}"; do
        TryPassword "Myword$a$b%"
    done
done

(“%”只是我尝试过的特殊字符之一)


推荐阅读