使用Python解决Teamviewer被误认为商业用途的问题

作者: teamviewer 分类: TeamViewer常见问题 发布时间: 2019-05-02 08:44

Teamviewer是一款非常酷的远程控制系统,可以远程协同工作,分为个人版本和商业版本。个人版本可以基于非商业目的自由使用,商业版本需要付费(至少一个月49美元)。

Teamviewer会根据一套算法检测当前是否用于商业用途,可能根据在线时间,是否跨网段远程访问,当前操作系统是否为专业或企业版,以及其他因素进行检测,具体算法不得而知,不过有时明明只是个人非盈利目的使用,却弹出下面的对话框,在1到5分钟后就会自动断开,然后就连不上了,触发重新运行Teamviewer。

其实解决这个问题也很简单,Teamviewer是怎么知道哪台机器疑似商业用途的呢?为什么每次运行Teamviewer,密码每次都不一样,但ID是一样的呢?

如下图,这是Teamviewer的主界面。之所以Teamviewer能控制每一个客户端,是因为ID已经与本机绑定。

ID通常与本机的Mac地址(网卡的地址)以及其他信息有关(如配置文件中的属性值),不同操作系统不同。本文将通过Python语言自动修改这个ID,只要ID改变了,即使被识别出了商业用途,再次启动,由于ID已经改变,就相当于重新在一台全新的机器上运行,再识别出商业用途,再改变一次ID就可以了。

本文解决Mac版本的Teamviewer的疑似商业用途问题,Windows版的问题请见本文最后的部分。

本文使用Python 2.7编写,为什么使用Python 2.7呢,因为本文的读者并不都是Python程序员,Mac OS X默认自带Python 2.7,所以直接就可以运行本文提供的脚本。如果读者机器上安装了Python 3.x,请切换到Python 2.7,然后再运行本文提供的脚本。建议读者使用Anaconda,这样可以很容易地在Python 2.7和Python 3.x之间切换。

其实更改ID的基本原理就是必须要用root权限执行脚本(在普通用户状态使用sudo切换到root权限),然后获取当前用户对应的目录,删除一些配置文件,然后修改一些配置文件中的ID值。具体的文件和操作直接看后面的代码吧。

import sys

import os

import glob

import platform

import re

import random

import string

print(”’

——————————–

修改Teamviewer for Mac的ID

——————————–

”’)

#  必须是Mac系统,否则本脚本无效

if platform.system() != ‘Darwin’:

    print(‘必须是MAC OS X系统.’)

    sys.exit();

if os.geteuid() != 0:

    print(‘必须用root权限执行脚本.’)

    sys.exit();

#  如果在root权限,os.environ[‘SUDO_USER’]返回用户名,如lining

if os.environ.has_key(‘SUDO_USER’):

    USERNAME = os.environ[‘SUDO_USER’]

    if USERNAME == ‘root’:

      print(‘请通过sudo命令切换到root权限’)

      sys.exit();

else:

    print(‘请通过sudo命令切换到root权限’)

    sys.exit();

#  下面两个目录是要搜索包含teamviewer字样的文件

HOMEDIRLIB = ‘/Users/’ + USERNAME  + ‘/library/preferences/’

GLOBALLIB  =  ‘/library/preferences/’

CONFIGS = []

#  获取配置文件的完全路径

def listdir_fullpath(d):

    return [os.path.join(d, f) for f in os.listdir(d)]

for file in listdir_fullpath(HOMEDIRLIB):

    if ‘teamviewer’.lower() in file.lower():

        CONFIGS.append(file)

if not CONFIGS:

    print (”’

为发现配置文件,没什么可以删除的

”’)

# 删除配置文件

else:

    print(“发现配置文件:\n”)

    for file in CONFIGS:

        print file

    print(”’

这些配置文件将被永久删除

”’)

    raw_input(“请按<Enter>键盘删除文件或按<CTR+C>组合键退出程序”)

    for file in CONFIGS:

        try:

            os.remove(file)    //  删除文件

        except:

            print(“不能删除文件,是否权限不够?”)

            sys.exit();

    print(“搞定!”)

# 下面的文件会替换里面的值

TMBINARYES = [

‘/Applications/TeamViewer.app/Contents/MacOS/TeamViewer’,

‘/Applications/TeamViewer.app/Contents/MacOS/TeamViewer_Service’,

‘/Applications/TeamViewer.app/Contents/Helpers/TeamViewer_Desktop’,

]

//  这些文件必须存在,否则退出程序

for file in TMBINARYES:

    if os.path.exists(file):

        pass

    else:

        print(“File not found: ” + file)

        print (“Install TeamViewer correctly”)

        sys.exit();

#  开始替换上述文件中的值

def idpatch(fpath,platf,serial):

    file = open(fpath, ‘r+b’)

    binary = file.read()

    # 定义模板

    PlatformPattern = “IOPlatformExpert.{6}”

    SerialPattern =  “IOPlatformSerialNumber%s%s%sUUID”

    # 开始替换

    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

//  产生随机数,用于生成随机的ID

def random_generator(size=8, chars=string.ascii_uppercase + string.digits):

    return ”.join(random.choice(chars) for _ in range(size))

RANDOMSERIAL = random_generator()

RANDOMPLATFORM = “IOPlatformExpert” + random_generator(6)

#  开始依次替换前面文件中的内容

for file in TMBINARYES:

        try:

            idpatch(file,RANDOMPLATFORM,RANDOMSERIAL)

        except:

            print “错误:不能修改: ” + file

            sys.exit();

print “PlatformDevice: ” + RANDOMPLATFORM

print “PlatformSerial: ” + RANDOMSERIAL

print(”’

ID需要成功

!!! 必须重启计算机才能生效,good luck !!!!

将上面的代码保存在change_id.py文件中,然后在Python2.7环境下执行如下命令:

sudo python change_id.py

按一下键,就搞定了,最后重启一下机器,会发现ID改变了。现在不会有人来打扰你了,尽管用Teamviewer吧。

如果使用Windows,可以按下面步骤搞定。

本文以最新的teamviewer13为例,步骤如下:

step1:

卸载teamviewer13

step2:

删除下面2个目录

C:\Program Files (x86)\TeamViewer

C:\Users\Administrator\AppData\Roaming\TeamViewer

step3:

在注册表中删除下面的键值,如果没有就不用删除了。

HKEY_LOCAL_MACHINE\SOFEWARE\Wow6432Node\TeamViewer

HKEY_CURRENT_USERS\Software\TeamViewer

HKEY_LOCAL_MACHINE\SOFTWARE\TeamViewer

step4:

修改电脑网卡的Mac地址,这个有专门的软件,也可也在硬件设备中找到网卡进行修改,不过有的驱动不支持修改Mac地址。

step5:

如果成功修改了Mac地址,重新安装teamviewer13。

这样ID就变了,如果过段时间再被误认为商业用途,重复这一过程即可。

如有任何问题,欢迎点击加我QQ咨询:3234803245,也可以扫码下方公众号:TeamViewer14,回复 1 获取。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注