欢迎来到 盛火数据
0411-62668989
公司新闻 行业动态

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

2018-10-08

  Teamviewer是一款非常酷的远程控制系统,可以远程协同工作,分为个人版本和商业版本。个人版本可以基于非商业目的自由使用。但是很多站长使用时被定义为商业用途,导致使用不了下面小盛来教大家怎么解决被误认为商业用途。
  Teamviewer会根据一套算法检测当前是否用于商业用途,可能根据在线时间,是否跨网段远程访问,当前操作系统是否为专业或企业版,以及其他因素进行检测,具体算法不得而知,不过有时明明只是个人非盈利目的使用,却弹出下面的对话框,在1到5分钟后就会自动断开,然后就连不上了,触发重新运行Teamviewer。
  其实解决这个问题也很简单,Teamviewer是怎么知道哪台机器疑似商业用途的呢?为什么每次运行Teamviewer,密码每次都不一样,但ID是一样的呢?
  如下图,这是Teamviewer的主界面。之所以Teamviewer能控制每一个客户端,是因为ID已经与本机绑定。

  ID通常与本机的Mac地址(网卡的地址)以及其他信息有关(如配置文件中的属性值),不同操作系统不同。本文将通过Python语言自动修改这个ID,只要ID改变了,即使被识别出了商业用途,再次启动,由于ID已经改变,就相当于重新在一台全新的机器上运行,再识别出商业用途,再改变一次ID就可以了。
  本文解决Mac版本的Teamviewer的疑似商业用途问题。后面有Windows的解决方法。
  本文使用Python2.7编写,为什么使用Python2.7呢,因为本文的读者并不都是Python程序员,MacOSX默认自带Python2.7,所以直接就可以运行本文提供的脚本。如果读者机器上安装了Python3.x,请切换到Python2.7,然后再运行本文提供的脚本。建议读者使用Anaconda,这样可以很容易地在Python2.7和Python3.x之间切换。
  其实更改ID的基本原理就是必须要用root权限执行脚本(在普通用户状态使用sudo切换到root权限),然后获取当前用户对应的目录,删除一些配置文件,然后修改一些配置文件中的ID值。具体的文件和操作直接看后面的代码吧。
  importsys
  importos
  importglob
  importplatform
  importre
  importrandom
  importstring
  print('''
  --------------------------------
  修改TeamviewerforMac的ID
  --------------------------------
  ''')
  #必须是Mac系统,否则本脚本无效
  ifplatform.system()!='Darwin':
  print('必须是MACOSX系统.')
  sys.exit();
  ifos.geteuid()!=0:
  print('必须用root权限执行脚本.')
  sys.exit();
  #如果在root权限,os.environ['SUDO_USER']返回用户名,如lining
  ifos.environ.has_key('SUDO_USER'):
  USERNAME=os.environ['SUDO_USER']
  ifUSERNAME=='root':
  print('请通过sudo命令切换到root权限')
  sys.exit();
  else:
  print('请通过sudo命令切换到root权限')
  sys.exit();
  #下面两个目录是要搜索包含teamviewer字样的文件
  HOMEDIRLIB='/Users/'+USERNAME+'/library/preferences/'
  GLOBALLIB='/library/preferences/'
  CONFIGS=[]
  #获取配置文件的完全路径
  deflistdir_fullpath(d):
  return[os.path.join(d,f)forfinos.listdir(d)]
  forfileinlistdir_fullpath(HOMEDIRLIB):
  if'teamviewer'.lower()infile.lower():
  CONFIGS.append(file)
  ifnotCONFIGS:
  print('''
  为发现配置文件,没什么可以删除的
  ''')
  #删除配置文件
  else:
  print("发现配置文件:\n")
  forfileinCONFIGS:
  printfile
  print('''
  这些配置文件将被永久删除
  ''')
  raw_input("请按键盘删除文件或按组合键退出程序")
  forfileinCONFIGS:
  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',
  ]
  //这些文件必须存在,否则退出程序
  forfileinTMBINARYES:
  ifos.path.exists(file):
  pass
  else:
  print("Filenotfound:"+file)
  print("InstallTeamViewercorrectly")
  sys.exit();
  #开始替换上述文件中的值
  defidpatch(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)
  returnTrue
  //产生随机数,用于生成随机的ID
  defrandom_generator(size=8,chars=string.ascii_uppercase+string.digits):
  return''.join(random.choice(chars)for_inrange(size))
  RANDOMSERIAL=random_generator()
  RANDOMPLATFORM="IOPlatformExpert"+random_generator(6)
  #开始依次替换前面文件中的内容
  forfileinTMBINARYES:
  try:
  idpatch(file,RANDOMPLATFORM,RANDOMSERIAL)
  except:
  print"错误:不能修改:"+file
  sys.exit();
  print"PlatformDevice:"+RANDOMPLATFORM
  print"PlatformSerial:"+RANDOMSERIAL
  print('''
  ID需要成功
  !!!必须重启计算机才能生效,goodluck!!!!
  ''')
  将上面的代码保存在change_id.py文件中,然后在Python2.7环境下执行如下命令:
  sudopythonchange_id.py
  按一下键,就搞定了,最后重启一下机器,会发现ID改变了。现在不会有人来打扰你了,尽管用Teamviewer吧。
  如果使用Windows,可以按下面步骤搞定。
  本文以最新的teamviewer13为例,步骤如下:
  step1:
  卸载teamviewer13
  step2:
  删除下面2个目录
  C:\ProgramFiles(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就变了,如果过段时间再被误认为商业用途,重复这一过程即可。