Teamviewer是一款非??岬倪h程控制系統(tǒng),可以遠程協(xié)同工作,分為個人版本和商業(yè)版本。個人版本可以基于非商業(yè)目的自由使用,商業(yè)版本需要付費(至少一個月49美元)。
在梁子湖等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設(shè)計制作按需開發(fā)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)整合營銷推廣,外貿(mào)營銷網(wǎng)站建設(shè),梁子湖網(wǎng)站建設(shè)費用合理。Teamviewer會根據(jù)一套算法檢測當(dāng)前是否用于商業(yè)用途,可能根據(jù)在線時間,是否跨網(wǎng)段遠程訪問,當(dāng)前操作系統(tǒng)是否為專業(yè)或企業(yè)版,以及其他因素進行檢測,具體算法不得而知,不過有時明明只是個人非盈利目的使用,卻彈出下面的對話框,在1到5分鐘后就會自動斷開,然后就連不上了,觸發(fā)重新運行Teamviewer。
其實解決這個問題也很簡單,Teamviewer是怎么知道哪臺機器疑似商業(yè)用途的呢?為什么每次運行Teamviewer,密碼每次都不一樣,但ID是一樣的呢?
如下圖,這是Teamviewer的主界面。之所以Teamviewer能控制每一個客戶端,是因為ID已經(jīng)與本機綁定。
ID通常與本機的Mac地址(網(wǎng)卡的地址)以及其他信息有關(guān)(如配置文件中的屬性值),不同操作系統(tǒng)不同。本文將通過Python語言自動修改這個ID,只要ID改變了,即使被識別出了商業(yè)用途,再次啟動,由于ID已經(jīng)改變,就相當(dāng)于重新在一臺全新的機器上運行,再識別出商業(yè)用途,再改變一次ID就可以了。
本文解決Mac版本的Teamviewer的疑似商業(yè)用途問題,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權(quán)限執(zhí)行腳本(在普通用戶狀態(tài)使用sudo切換到root權(quán)限),然后獲取當(dāng)前用戶對應(yīng)的目錄,刪除一些配置文件,然后修改一些配置文件中的ID值。具體的文件和操作直接看后面的代碼吧。
import sys
import os
import glob
import platform
import re
import random
import string
print('''
--------------------------------
修改Teamviewer for Mac的ID
--------------------------------
''')
# 必須是Mac系統(tǒng),否則本腳本無效
if platform.system() != 'Darwin':
print('必須是MAC OS X系統(tǒng).')
sys.exit();
if os.geteuid() != 0:
print('必須用root權(quán)限執(zhí)行腳本.')
sys.exit();
# 如果在root權(quán)限,os.environ['SUDO_USER']返回用戶名,如lining
if os.environ.has_key('SUDO_USER'):
USERNAME = os.environ['SUDO_USER']
if USERNAME == 'root':
print('請通過sudo命令切換到root權(quán)限')
sys.exit();
else:
print('請通過sudo命令切換到root權(quán)限')
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 ('''
為發(fā)現(xiàn)配置文件,沒什么可以刪除的
''')
# 刪除配置文件
else:
print("發(fā)現(xiàn)配置文件:\n")
for file in CONFIGS:
print file
print('''
這些配置文件將被永久刪除
''')
raw_input("請按鍵盤刪除文件或按組合鍵退出程序")
for file in CONFIGS:
try:
os.remove(file) // 刪除文件
except:
print("不能刪除文件,是否權(quán)限不夠?")
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
// 產(chǎn)生隨機數(shù),用于生成隨機的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)
# 開始依次替換前面文件中的內(nèi)容
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環(huán)境下執(zhí)行如下命令:
sudo python change_id.py
按一下
如果使用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:
修改電腦網(wǎng)卡的Mac地址,這個有專門的軟件,也可也在硬件設(shè)備中找到網(wǎng)卡進行修改,不過有的驅(qū)動不支持修改Mac地址。
step5:
如果成功修改了Mac地址,重新安裝teamviewer13。
這樣ID就變了,如果過段時間再被誤認為商業(yè)用途,重復(fù)這一過程即可。
如果讀者覺得太麻煩,可以關(guān)注“極客起源”公眾號,輸如954720下載經(jīng)過處理的teamviewer版本,包括一個ID自動修改工具。
掃描二維碼關(guān)注“極客起源”公眾號,技術(shù)文章、視頻課程應(yīng)有盡有
《Python從菜鳥到高手》開始連載了
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。