Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save idarek/10cbc4fc28dd6a9db146122a1fe520a2 to your computer and use it in GitHub Desktop.
Save idarek/10cbc4fc28dd6a9db146122a1fe520a2 to your computer and use it in GitHub Desktop.
Teamviewer 15 ID Changer for macOS (Python 3)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# System: macOS 12+
# Version: TeamViewer v15.x.x
# Python: 3.x.x
# Command: sudo python3 TeamViewer-15-id-changer.py
#
import os
import platform
import random
import re
import string
import sys
print(
"""
--------------------------------
TeamViewer 15 ID Changer for MAC OS
Version: 7 2022
--------------------------------
"""
)
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(
"""
No TeamViewer configs found.
Maybe you have deleted it manually or never run TeamViewer after installation.
Nothing to delete.
"""
)
else:
# Delete config files
print("Configs found:\n")
for file in CONFIGS:
print(file)
print(
"""
These files will be DELETED permanently.
All TeamViewer settings will be lost
"""
)
input("Press Enter to continue or CTR+C to abort...")
for file in CONFIGS:
try:
os.remove(file)
except OSError:
print("Cannot delete config files. Permission denied?")
sys.exit()
print("Done.")
# Find binaries
TMBINARIES = [
"/Applications/TeamViewer.app/Contents/MacOS/TeamViewer",
"/Applications/TeamViewer.app/Contents/MacOS/TeamViewer_Service",
"/Applications/TeamViewer.app/Contents/MacOS/TeamViewer_Desktop_Proxy",
"/Applications/TeamViewer.app/Contents/Helpers/TeamViewer_Assignment",
"/Applications/TeamViewer.app/Contents/Helpers/Restarter",
]
for file in TMBINARIES:
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(str.encode(PlatformPattern), str.encode(platf), binary)
binary = re.sub(
str.encode(SerialPattern % (chr(0), "[0-9a-zA-Z]{8,8}", chr(0))),
str.encode(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 TMBINARIES:
try:
idpatch(file, RANDOMPLATFORM, RANDOMSERIAL)
except Exception as e:
print("Error: can not patch file " + file)
print(e)
sys.exit()
print("PlatformDevice: " + RANDOMPLATFORM)
print("PlatformSerial: " + RANDOMSERIAL)
os.system("sudo codesign -f -s - /Applications/TeamViewer.app/")
print(
"""
ID changed sucessfully.
!!! Restart computer before using TeamViewer !!!!
"""
)
@Wangtrung195
Copy link

I have successfully run the script by using python3, Terminal show "ID changed successfully". But after that, I opened app and the id teamviewer still unchanged ?

How can I fix (teamview Version: 15.41.8, python 3) :<

@Gq77
Copy link

Gq77 commented Mar 12, 2025

IF YOU COULD help us, on the 15.63 version. KEEPS BLOCKING CONNECTION. AS IF SOMETHING ELSE NEEDS TO BE TWEAKED. ANY CLUES? I HAVE TRIED THE SCRIPT - CHANGED ID GOOD. YET BLOCKED. ANY WAYS TO RESET IT?

@idarek
Copy link
Author

idarek commented Mar 20, 2025

I just checked, and the script above still working (PS. no need to restart anything), however, two things need to be done.

Close TeamViewer (make sure it is not working in the background as well).
Close Terminal as well.

macOS 15.3.2

  1. Settings > Privacy & Security > Full Disk Access

Turn ON for Terminal

  1. (optional) Settings > Privacy & Security > Deceloper Tools

Turn ON for Terminal

Then in Terminal

sudo python3 TeamViewer-15-id-changer-for-mac.py

Type your password and when requested, hit Enter and wait until finishes.

TeamViewer 15.63.4

You will need to re-do this after each TeamViewer update.

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