“ 分析途游斗地主的加密協議。”
作為一個手機棋牌游戲廠商,途游是排得上號的,它的途游斗地主一直很火熱,隱約記得,這個廠商一直在搞斗地主的全國競技賽事,並蹭上了體育總局的IP,幾輪投資人包括昆侖萬維、奇虎360、創新工場、挑戰者資本、星路資本等,甚是了得,不知道身后是哪位大佬。
作為專業的協議分析平台,當然不能錯過對這個廠商的產品的分析,這里,將對途游棋牌的當家花旦——途游斗地主進行分析。
毫無疑問,途游斗地主的的數據是加密的,不是HTTP,不然這里就只有鄙視,而不會專門分析了。
它在整體上,加密分成兩個部分,一個是HTTP承載的加密數據,一個是TCP長連接承載的加密數據。因此本文會分別對這兩塊的加密進行分析。
01
—
整體情況
在剛接觸途游斗地主的時候,按標准分析套路,首先對它使用順便進行抓包,看看報文的大體情況,幾個26000端口的HTTP:
一個非標端口的TCP長連接:
不得不感慨,這款游戲采用的是上來直接就干的模式,進入游戲,一切都自動了,直接進入牌桌牌局,沒有其它額外的東西,我都忍不住玩了幾局。
言歸正傳,看了下游戲相關的流量加密了,那我們也開干吧!
使用android killer打開APK包,看了下大體結構,游戲是使用cocos2dx開發的,斗地主的游戲主體在腳本ddz_release.jsc里面:
下面的章節就介紹它的解密了。
02
—
HTTP體解密
前面抓包看到,打開途游斗地主首先出現的是幾個26000端口的HTTP,使用的域名是fee.uebilling.com,不知道這個服務器上都在做啥:
很明顯,請求和響應里面的http體是base64編碼的,解開base64是二進制,明顯有加密,一番探索,得到結果,加密方法是DES_ecb3_encrypt,密鑰固定24字節"dbbsRYnaQPKia/sCWJGRNAsQH7PLIw3a",直接上解密代碼:
解一段報文試試,各種參數:
基本上是屬於個人信息。
03
—
TCP長連接解密
游戲運行過程中,長連接一直存在,估計是進行游戲數據的交互的:
繼續分析,直接粗暴地上解密代碼,不詳細解釋了:
簡單的異或加密,只是用來異或的密鑰值是動態的,每次連接有變化,每個報文塊也會變化,密鑰是連接起始的數字和每塊長度數據相加的結果。
連接的IP端口怎么協商的,這里就不介紹了,如果哪位朋友有興趣,分析一番就能得到結論。
解密沒什么難度,詭異的是解密結果:
嘗試在游戲界面找結果出現的地方,沒找到呀,這是為啥?
再結合百度搜索出現的詭異熱點內容關聯:
是不是背后隱藏了什么秘密?
04
—
總結
途游斗地主這款游戲,加密的強度很小,分析起來基本沒有難度,有興趣的朋友可以拿去練手。3des、異或這些加密,是最初級的加密算法了。
我對它分析,其實感興趣的是它背后的東西,比如上一節的末尾“途游輸了傾家盪產”這個背后有些什么秘密,這個相關熱點,我傾向於相信百度沒有進行人工操控,完全是無數百度用戶的搜索動作配合代碼邏輯觸發的,大家不妨一起探索,看看是如何傾家盪產的。
大家一起努力,學習學習再提高,可與我聯系,一起交流心得。
長按進行關注,時刻進行交流。
點擊“在看”,與朋友一起分享↘