Repository navigation
Expand file tree
/
Copy pathapply_appleid_kernelpatch.py
More file actions
92 lines (80 loc) · 2.95 KB
/
Copy pathapply_appleid_kernelpatch.py
File metadata and controls
92 lines (80 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/usr/bin/env python3
import plistlib
import base64
import os
import sys
def add_kernel_patches(config_path):
# Make a backup of the original file
backup_path = config_path + '.backup'
os.system(f'cp "{config_path}" "{backup_path}"')
print(f"Backup created at {backup_path}")
# Read the plist file
with open(config_path, 'rb') as f:
config = plistlib.load(f)
# Prepare the patch entries
patch1 = {
'Arch': 'x86_64',
'Base': '',
'Comment': 'Sonoma VM BT Enabler - PART 1 of 2 - Patch kern.hv_vmm_present=0',
'Count': 1,
'Enabled': True,
'Find': base64.b64decode('aGliZXJuYXRlaGlkcmVhZHkAaGliZXJuYXRlY291bnQA'),
'Identifier': 'kernel',
'Limit': 0,
'Mask': b'',
'MaxKernel': '',
'MinKernel': '20.4.0',
'Replace': base64.b64decode('aGliZXJuYXRlaGlkcmVhZHkAaHZfdm1tX3ByZXNlbnQA'),
'ReplaceMask': b'',
'Skip': 0,
}
patch2 = {
'Arch': 'x86_64',
'Base': '',
'Comment': 'Sonoma VM BT Enabler - PART 2 of 2 - Patch kern.hv_vmm_present=0',
'Count': 1,
'Enabled': True,
'Find': base64.b64decode('Ym9vdCBzZXNzaW9uIFVVSUQAaHZfdm1tX3ByZXNlbnQA'),
'Identifier': 'kernel',
'Limit': 0,
'Mask': b'',
'MaxKernel': '',
'MinKernel': '22.0.0',
'Replace': base64.b64decode('Ym9vdCBzZXNzaW9uIFVVSUQAaGliZXJuYXRlY291bnQA'),
'ReplaceMask': b'',
'Skip': 0,
}
# Add patches to the kernel patch section
if 'Kernel' in config and 'Patch' in config['Kernel']:
# Check if patches already exist
patch_exists = False
for patch in config['Kernel']['Patch']:
if isinstance(patch, dict) and 'Comment' in patch:
if 'Sonoma VM BT Enabler' in patch['Comment']:
patch_exists = True
print(f"Patch already exists: {patch['Comment']}")
if not patch_exists:
config['Kernel']['Patch'].append(patch1)
config['Kernel']['Patch'].append(patch2)
print("Added both Sonoma VM BT Enabler patches to config.plist")
else:
print("Error: Could not find Kernel -> Patch section in config.plist")
return False
# Write the updated plist file
with open(config_path, 'wb') as f:
plistlib.dump(config, f)
print(f"Successfully updated {config_path}")
return True
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python apply_appleid_kernelpatch.py /path/to/config.plist")
sys.exit(1)
config_path = sys.argv[1]
if not os.path.exists(config_path):
print(f"Error: File {config_path} does not exist")
sys.exit(1)
success = add_kernel_patches(config_path)
if success:
print("Patches applied successfully. Please reboot to apply changes.")
else:
print("Failed to apply patches.")