[macOS] 黑苹果忘记密码

[TOC]

0x00 Hackintosh forgot password

曾经以为哪个傻B会把自己密码忘记,然后现在不知道自己的密码傻X诞生了——虽然我不是忘记,我是根本不知道密码是啥

事情是这样的:同事要用我电脑,不想直接告诉他密码(我的所有电脑的密码都是这个),然后远程把密码改成 HelloWorld 告诉了他。反馈密码不对,自己试了下果然不对,试了原密码也是不对,瞬间懵逼。再试了N个(N>100)密码之后,成功试对2次之后仍然不知道密码是啥时(试对了也不知道刚用的是啥密码),绝望了。

冷静一下:设置新密码的时候我输入的并不是 HelloWorld,而是中间某些字符变掉的一个字符串。

先说下环境:Hackintosh, Clover, macOS 10.14, SSH

0x01 重置密码

启动电脑进入 Clover 界面,按 F3 显示所有启动项,找到 Boot Recovery from Recovery 按回车。如果没有意外会启动到一个安装系统时也会出现的选择语言的界面:

Language

选择你熟悉的语言,然后下一步,进入那个熟悉的安装界面:


Recovery

此时选择 Utilities > Terminal,打开终端(此时你也可以输入方法二的命令):

terminal

输入resetpassword,一件可怕的事情发生了 —— 你可以直接在这个地方输入新的密码:

Reset Password

Reset Password

0x02 初始化电脑

启动电脑进入 Clover 界面,选择 Options,在 Boot Args: 后添加 -s,启动。这个时候会进入终端,而且是可怕的root账户,输入下面命令:

root# /sbin/fsck -y                 # 修复磁盘
root# /sbin/mount -uaw              # 挂载磁盘
root# rm /var/db/.AppleSetupDone    # 删除
root# reboot

重启之后会进入安装后的配置界面。这个时候创建一个新的管理员账户,登录这个新账户,在 System Preferences > Users & Groups 找到之前忘记密码的账户,对其重置密码即可。

Reset

-s: 单用户模式,不能正常进入系统时采用,脱离图形界面,以命令行方式进入

上述两个方法用了两次 可怕。主要原因是别人可以在未经许可的情况下修改你账户的密码。若要解决这个问题请打开 FileVault(上述两个方法成功的关键就是没有打开 FileVault)。

0x03 Python

若你打开了 FileVault,忘记了密码可以通过icloud账号或者恢复密钥来恢复密码,若这两样你都忘记了只能等死了吗?来我们试试Python 爆破一下。

前提是你开了 SSH(System Preferences > Sharing > Remote Login)

简单说原理:尝试所有可能的密码,SSH远程登录忘记密码的电脑,若登录成功,则密码正确。不逼逼,直接上代码:

#!/usr/bin python3
# coding:utf-8

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())


def your_dict():
    result = [
        'HeoolWrold',
        'HeoolWOrld',
        'HelloWrlod',
        'helloWrold',
        'heoolWrold',
        '..........',
        'HelloWrold',
        'helloWrold',
        'heoolWorld'
    ]
    return result


def login(i, password):
    try:
        ssh.connect("your.mac.ip.addr", 22, "your_username", password)
        # stdin, stdout, stderr = ssh.exec_command("pwd")
        # print(stdout.read())
        ssh.close()
    except Exception as e:
        print(str(i) + ": " + password + ", " + str(e))
        ssh.close()
        return False
    print(password)
    return True


if __name__ == '__main__':
    result = your_dict()
    index = 0
    for pwd in result:
        index += 1
        if login(index, pwd):
            print("Success: " + pwd)
            exit(0)

Python天下第一!

0xFF 参考

  1. https://blog.csdn.net/qq_33544860/article/details/77176513
  2. https://imac.hk/macos-resetpassword.html

你可能感兴趣的:([macOS] 黑苹果忘记密码)