teamviewer-检测为商业用途

简介

参考:teamviewer检测为商业用途-mac

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

img

以下给出在mac和windows上的解决方法

MAC

运行python脚本修改Teamviewer ID, 并重启电脑. 详细步骤如下:

  • 关闭Teamviewer

  • 创建一个python脚本 reset_teamviewer-id.py, 内容如下

#!/usr/bin/env python

# -*- coding: utf-8 -*-
import sys
import os
import glob
import platform
import re
import random
import string

print('''
--------------------------------
TeamViewer ID Changer for MAC OS
--------------------------------
''')

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 os.environ.has_key('SUDO_USER'):
    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'.lower() 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.
''')
# Delete config files
else:
    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/MacOS/TeamViewer_Desktop',  # for Teamviewer 15.x.xxxx
]

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%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

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 "Error: can not patch file " + file
            print "Wrong version?"
            sys.exit();

print "PlatformDevice: " + RANDOMPLATFORM
print "PlatformSerial: " + RANDOMSERIAL

print('''
ID changed sucessfully.
!!! Restart computer before using TeamViewer !!!!
''')
  • 检查 TeamViewer_Desktop 的路径在上述脚本填写正确: 不同版本的Teamviewer, 此路径不同. 可在终端执行如下命令, 寻找此路径:
cd /Applications/TeamViewer.app
find . -name TeamViewer_Desktop
  • Teamviewer 15 版本, 会返回
./MacOS/TeamViewer_Desktop
则在上述脚本中, 将 `TMBINARYES` 数组的最后一项改成
"/Applications/TeamViewer.app/Contents/MacOS/TeamViewer_Desktop"
  • Teamviewer 13 版本, 会返回
 
./Helpers/TeamViewer_Desktop
则在上述脚本中, 将 `TMBINARYES` 数组的最后一项改成
"/Applications/TeamViewer.app/Contents/Helpers/TeamViewer_Desktop"
  • 其余版本的T eamviewer 我虽未尝试, 不知其具体返回, 但您可依上法自行确定 TeamViewer_Desktop 的路径, 并修改 TMBINARYES 数组的最后一项.

  • python2运行上述脚本

    sudo /usr/bin/python reset_teamviewer-id.py

    若返回下图(出处)

    img

    切勿立即开Teamviewer , 需要先重启电脑

  • 电脑重启后, 关掉任何网络代理, 再次开启teamviewer, 会显示一个新的Teamviewer ID. 此时需要重新登录teamviewer账号, 输入原来teamviewer邮箱和密码, 此邮箱会受到确认信, 需确认才能完成登录.

  • 而后可以正常连接远程电脑的teamviewer, 不再会显示商业用途.

windows

卸载teamviewer, 修改MAC地址, 重装teamviwer, 以便让teamviewer看见未见过的mac地址, 以为这是新的设备, 故而给其分配一个新teamviwer ID. 如果过段时间再被误认为商业用途,需要重复这一过程.

以下操作较为麻烦, 可以找找网上的脚本来修改ID.

参考

  • 关闭Teamviewer

  • 卸载Teamviewer

  • 从注册表删Teamviewer:

    • win+R, 输入 regedit 打开注册表
    • 找到HKEY_LOCAL_MACHINE下的SOFTWARE下的Wow6432Node下的Teamviewer
    • Teamviewer这项删除
  • 删除下面2个目录

    C:\Program Files (x86)\TeamViewer
    C:\Users\Administrator\AppData\Roaming\TeamViewer
  • 改MAC地址:

    • win键, 搜索栏输入”控制面板”, 打开 控制面板, 找到 网络和共享中心
    ![草图](assets/%E8%8D%89%E5%9B%BE.png)
    
    • 更改适配器设置

      草图

    • 以太网 (或者别的你要改MAC地址的网)

      草图

    • 查看当前 MAC 地址: 点 详细信息, 找到 物理地址, 记下之, 以便与更改后的比较, 确认是否更改成功

      草图

    • 属性

      在这里插入图片描述

    • 配置

      在这里插入图片描述

    • 高级 , 找到网络地址, 勾选, 任意输入长为12的十六进制数串, 然后点 确定. 注意: 中间不要加横线 - . 如输入 1A093EB29D28 正确, 而输入 1A-09-3E-B2-9D-28 则不正确.

      在这里插入图片描述

  • 查看是否修改成功: 查看当前 MAC 地址: 点 详细信息, 找到 物理地址, 看看与之前记下的修改前的MAC地址是否不同, 若不同, 则修改成功.

 ![草图](assets/%E8%8D%89%E5%9B%BE-8388252.png)
  • 重新安装Teamviewer, 关掉任何网络代理, 开启teamviewer, 会显示一个新的Teamviewer ID. 此时需要重新登录teamviewer账号, 输入原来teamviewer邮箱和密码, 此邮箱会受到确认信, 需确认才能完成登录.