100分求助!MacOS文件密码问题

微服森林 2019-08-11 11:10:04
背景:一个.dmg加密文件的密码忘记了。想用穷举法尝试我常用的密码组合,但每次打开都要手工输入各种密码,很崩溃也很容易输错。

于是我想问的是:想请教各位大神有没有什么命令行,接口或者工具,让我可以写个脚本或者程序,自动读取我穷举的密码去测试密码是否正确。而不是让我不断手工输入密码。
如:运行hdiunitl attach XXX.dmg 后,总是要我在终端命令行输入密码!我想直接一行命令搞定。
...全文
147 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
微服森林 2019-08-28
  • 打赏
  • 举报
回复
已经解决问题,分享上来给需要的人。 1)将下列代码部分的密码组合元素改成自己常用的密码组合元素; 2)将下列代码部分的要打开的带密码的文件路径修改 3)将下列代码保存为:passTest.exp 4)在passTest.exp的目录运行命令:expect passTest.exp 说明: 1)如果没有安装expect,自行搜索解决! 2)代码为expect代码code,非Python Code!
#!/usr/bin/expect

#....... 设置常用的密码组合元素
set m_pw(0) ~
set m_pw(1) !
set m_pw(2) #
set m_pw(3) $
set m_pw(4) %
set m_pw(5) a
set m_pw(6) bbq
set m_pw(7) ttz

## 设置数组长度为m_pw 数组的长度
set lens 8

## 二层组合的穷举。一层组合,还是三层、四层组合,根据自己情况去改
for {set i 0} {$i < $lens} {incr i} {
    for {set j 0} {$j < $lens} {incr j} {
        #设置组合密码
        set pw "$m_pw($i)$m_pw($j)"
        
        spawn hdiutil attach /Users/Marvin/Documents/person/mySecret.dmg
        expect "密码" { send "$pw\n" }
        expect eof   #退出
        wait         #结束子进程---必不可少的一行,否则会因子进程挂载太多程序异常退出
        
        #打印密码
        spawn echo "密码============$pw"
        expect eof   #退出
        wait         #结束子进程---必不可少的一行,否则会因子进程挂载太多程序异常退出
    }
}
注意:每一个spawn后面,一定要有 expect eof 和 wait 两行命令 否则会报错“too many programs spawned? could not create pipe: too many open files” 核心原因是因为spawn打开的子进程没有关闭,导致系统进程池用完了。 这个细节,我在网上找了一个多小时,并通过ps aux | grep <spawn进程号> 进行监控调试,确定有效才加入代码列中。 希望对他人有效!
微服森林 2019-08-12
  • 打赏
  • 举报
回复
正在尝试用expect来解决,解决了分享程序上来。

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧