]> git.saurik.com Git - apple/security.git/blame_incremental - keychain/ResetCloudKeychainAccount/reset_ick_account
Security-59754.80.3.tar.gz
[apple/security.git] / keychain / ResetCloudKeychainAccount / reset_ick_account
... / ...
CommitLineData
1#!/usr/local/bin/python3
2
3import sys
4from glob import glob
5import subprocess
6import re
7import os
8import argparse
9
10parser = argparse.ArgumentParser(description='Reset your iCloud Keychain account')
11parser.add_argument('icloudpassword', help='iCloud password')
12parser.add_argument('passcode', help='passcode or password of the local device')
13args = vars(parser.parse_args())
14
15
16iCloudPassword = args['icloudpassword']
17passcode = args['passcode']
18
19def set_security_mac_cmd():
20 return 'security2'
21
22def set_security_ios_cmd():
23 return 'security'
24
25def security_cmd_by_platform():
26 swVers = subprocess.check_output(["sw_vers"])
27 deviceInformation = swVers.decode('utf-8')
28 if "Mac OS X" in deviceInformation or "macOS" in deviceInformation:
29 print("using security2 command on macos")
30 return set_security_mac_cmd()
31 elif "iPhone OS" in deviceInformation:
32 print("using security command on ios")
33 return set_security_ios_cmd()
34 else:
35 print("unsupported platform")
36 sys.exit(1)
37
38security_cmd = security_cmd_by_platform()
39
40print("deleting all escrow records")
41subprocess.check_output(["stingrayutil", "--deleteAll", "ReallyDeleteAll"])
42
43print("resetting SOS")
44subprocess.check_output([security_cmd, "sync", "-C"])
45subprocess.check_output([security_cmd, "sync", "-P", "$iCloudPassword"])
46subprocess.check_output([security_cmd, "sync", "-O"])
47
48print("resetting octagon")
49subprocess.check_output(["otctl", "resetoctagon"])
50
51print("creating new escrow record")
52subprocess.check_output(["sbdtool", "passcode_request_trigger"])
53subprocess.check_output(["sbdtool", "passcode_request_provide_passcode", "$passcode"])
54