bash - 如何使用已知的基本密码暴力破解我自己的加密 .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
解决方案
编辑:明白了!
我找到了我正在寻找的密码......
原来我在“数字”这个词上有错字的脚本,因此没有正确执行。我将 for 循环修改为:
for a in "${digit[@]}"; do
for b in "${digit[@]}"; do
TryPassword "Myword$a$b%"
done
done
(“%”只是我尝试过的特殊字符之一)
推荐阅读
- java - Azure 访问令牌 - Jwt.io 中的签名无效
- javascript - 如何 wrap() 两个使用 wrap() 添加的嵌套 div?
- reactjs - FS 访问 api & React:重复条目
- javascript - 使用 XLSX NPM 包不显示数组中的值
- c - 编译器显示数据定义没有类型或存储类
- python - 如何从不同文件夹加载图像和文本标签以进行 CNN 回归
- lua - 可以通过字符串名称调用函数
- java - 无法使用 Firestore 回收器适配器从 Firestore 获取数据,得到空的回收器视图
- java - org.springframework.beans.NotWritablePropertyException。无效属性
不可写或具有无效的 setter 方法 - postgresql - Postgres 函数返回多次使用的表参数名称 - 轻微扭曲