Skip to content

Instantly share code, notes, and snippets.

@clarencetw
Forked from zhenhappy/tv-changer-for-mac.py
Last active July 6, 2023 17:35
Show Gist options
  • Select an option

  • Save clarencetw/0eaedb50bac5d068f735318a8f664751 to your computer and use it in GitHub Desktop.

Select an option

Save clarencetw/0eaedb50bac5d068f735318a8f664751 to your computer and use it in GitHub Desktop.
TV changer for Mac
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import platform
import random
import re
import string
import sys
print('''
--------------------------------
TeamViewer ID Changer for MAC OS
--------------------------------
''')
if sys.version[0:1] != "2":
print("This script can be run only on Python27.")
sys.exit()
if platform.system() != "Darwin":
print("This script can be run only on MAC OS.")
sys.exit()
if os.geteuid() != 0:
print("This script must be run form root.")
sys.exit()
if "SUDO_USER" in os.environ:
USERNAME = os.environ["SUDO_USER"]
if USERNAME == "root":
print("Can not find user name. Run this script via sudo from regular user")
sys.exit()
else:
print("Can not find user name. Run this script via sudo from regular user")
sys.exit()
HOMEDIRLIB = "/Users/" + USERNAME + "/Library/Preferences/"
GLOBALLIB = "/Library/Preferences/"
CONFIGS = []
# Find config files
def listdir_fullpath(d):
return [os.path.join(d, f) for f in os.listdir(d)]
for file in listdir_fullpath(HOMEDIRLIB):
if 'teamviewer' in file.lower():
CONFIGS.append(file)
for file in listdir_fullpath(GLOBALLIB):
if 'teamviewer' in file.lower():
CONFIGS.append(file)
if not CONFIGS:
print('''
There is no TemViewer configs found.
Maybe you have deleted it manualy or never run TeamViewer after installation.
Nothing to delete.
''')
else:
# Delete config files
print("Configs found:\n")
for file in CONFIGS: print(file)
print('''
This files will be DELETED permanently.
All TeamViewer settings will be lost
''')
raw_input("Press Enter to continue or CTR+C to abort...")
for file in CONFIGS:
try:
os.remove(file)
except:
print("Cannot delete config files. Permission denied?")
sys.exit()
print("Done.")
# Find binaryes
TMBINARYES = [
'/Applications/TeamViewer.app/Contents/MacOS/TeamViewer',
'/Applications/TeamViewer.app/Contents/MacOS/TeamViewer_Service',
'/Applications/TeamViewer.app/Contents/Helpers/Restarter',
'/Applications/TeamViewer.app/Contents/Helpers/TeamViewer_Assignment'
]
for file in TMBINARYES:
if os.path.exists(file):
pass
else:
print("File not found: " + file)
print ("Install TeamViewer correctly")
sys.exit()
# Patch files
def idpatch(fpath, platf, serial):
file = open(fpath, 'r+b')
binary = file.read()
PlatformPattern = "IOPlatformExpert.{6}"
SerialPattern = "IOPlatformSerialNumber%s%s%s"
binary = re.sub(PlatformPattern, platf, binary)
binary = re.sub(SerialPattern % (chr(0), "[0-9a-zA-Z]{8,8}", chr(0)), SerialPattern % (chr(0), serial, chr(0)), binary)
file = open(fpath, 'wb').write(binary)
return True
def random_generator(size=8, chars=string.ascii_uppercase + string.ascii_lowercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size))
RANDOMSERIAL = random_generator(8)
RANDOMPLATFORM = "IOPlatformExpert" + random_generator(6)
for file in TMBINARYES:
try:
idpatch(file, RANDOMPLATFORM, RANDOMSERIAL)
except:
print("Error: can not patch file " + file)
sys.exit()
print("PlatformDevice: " + RANDOMPLATFORM)
print("PlatformSerial: " + RANDOMSERIAL)
os.system("sudo codesign --force --deep --sign - /Applications/TeamViewer.app/")
print('''
ID changed sucessfully.
!!! Restart computer before using TeamViewer !!!!
''')
@idarek
Copy link
Copy Markdown

idarek commented Jun 5, 2022

Any idea to make it work with python3?

@clarencetw
Copy link
Copy Markdown
Author

Any idea to make it work with python3?

You can use brew install python2.

brew install pyenv
pyenv install 2.7.18
pyenv global 2.7.18
python2 tv-changer-for-mac.py

@idarek
Copy link
Copy Markdown

idarek commented Jun 10, 2022

brew install pyenv
pyenv install 2.7.18
pyenv global 2.7.18
python2 tv-changer-for-mac.py

Thanks
As pyenv installing across user, not the whole system than final command will look

sudo .pyenv/versions/2.7.18/bin/python2 ~/tv-changer-for-mac.py

ps. a bit updated script to work with 15.30.3 and macOS 12.4 here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment