【驗(yàn)證碼逆向?qū)凇磕瞅?yàn)四代五子棋饿自、消消樂驗(yàn)證碼逆向分析

聲明

本文章中所有內(nèi)容僅供學(xué)習(xí)交流使用,不用于其他任何目的龄坪,不提供完整代碼昭雌,抓包內(nèi)容、敏感網(wǎng)址健田、數(shù)據(jù)接口等均已做脫敏處理烛卧,嚴(yán)禁用于商業(yè)用途和非法用途,否則由此產(chǎn)生的一切后果均與作者無關(guān)抄课!

本文章未經(jīng)許可禁止轉(zhuǎn)載唱星,禁止任何修改后二次傳播,擅自使用本文講解的技術(shù)而導(dǎo)致的任何意外跟磨,作者均不負(fù)責(zé)间聊,若有侵權(quán),請(qǐng)?jiān)诠娞?hào)【K哥爬蟲】聯(lián)系作者立即刪除抵拘!

逆向目標(biāo)

  • 目標(biāo):某驗(yàn)四代消消樂哎榴、五子棋驗(yàn)證碼,w 參數(shù)逆向及算法分析

  • 行為驗(yàn)證 4.0 demo:aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20v

  • 加密算法:RSA僵蛛、AES尚蝌、MD5

通訊流程

01

消消樂流程分析

02

進(jìn)入網(wǎng)頁后,F(xiàn)12 進(jìn)行抓包充尉,選擇消消樂驗(yàn)證碼飘言,抓包到 load 接口:

03
  • captcha_id:驗(yàn)證碼 id,固定值驼侠,四代滑塊文章中有講姿鸿;
  • challenge:動(dòng)態(tài)變化谆吴,由 gtc4.js 文件生成,四代滑塊文章中有講苛预;
  • client_type:web 端句狼;
  • risk_type:驗(yàn)證碼類型,例如滑塊為 slide热某,無感為 ai腻菇,消消樂為 match;
  • lang:語言昔馋;
  • callback:回調(diào)參數(shù)筹吐,geetest_ + 時(shí)間戳。

響應(yīng)預(yù)覽中返回的關(guān)鍵內(nèi)容如下:

04
  • captcha_type:驗(yàn)證碼類型绒极;
  • gct_path:gct4 文件路徑骏令;
  • lot_number:生成 pow_msg、w 的關(guān)鍵參數(shù)垄提;
  • payload:verify 請(qǐng)求參數(shù)榔袋;
  • datetime:ISO 8601 擴(kuò)展格式的日期,生成 pow_msg 的關(guān)鍵參數(shù)铡俐;
  • process_token:verify 請(qǐng)求參數(shù)凰兑;
  • ques:消消樂矩陣(3x3),每個(gè)數(shù)字代表一種顏色审丘,將三個(gè)相同數(shù)字換到同一列或同一行即可通過吏够。

點(diǎn)擊驗(yàn)證按鈕,彈出消消樂驗(yàn)證碼滩报,移動(dòng)圖案之后锅知,抓包到 verify 校驗(yàn)接口:

05
  • captcha_id:與 load 請(qǐng)求頭中的 captcha_id 一致;
  • client_type:web 端脓钾;
  • lot_number:load 響應(yīng)返回售睹;
  • risk_type:驗(yàn)證碼類型;
  • payload:load 響應(yīng)返回可训;
  • process_token:load 響應(yīng)返回昌妹;
  • payload_protocol:1;
  • pt:1握截;
  • w:加密參數(shù)飞崖,由軌跡、passtime谨胞、userresponse 等參數(shù)加密得到固歪;
  • callback:回調(diào)參數(shù),geetest_ + 時(shí)間戳胯努。

響應(yīng)預(yù)覽中返回的內(nèi)容如下昼牛,result 值為 success 即校驗(yàn)通過术瓮,fail 即校驗(yàn)失敗,攜帶 seccode 下的五個(gè)參數(shù)請(qǐng)求 login 接口贰健,即可登錄成功:

06

逆向分析

w 參數(shù)

四代的基本流程都是差不多的,直接搜索特征值 "\u0077" 即可定位到 w 參數(shù)生成的位置恬汁,先全局搜索 "\u0077"伶椿,找到對(duì)應(yīng)的 js 文件,點(diǎn)擊進(jìn)去格式化后氓侧,再 ctrl + f 局部搜索定位關(guān)鍵位置:

07

在第 6251 行打下斷點(diǎn)脊另,移動(dòng)圖案即會(huì)斷住,rw 參數(shù)的值:

08

跟進(jìn) r 生成的位置约巷,其定義在第 6237 行偎痛,可以看到加密方式與四代滑塊是一樣的:

var r = (0,d.default)(f.default.stringify(e), i)

唯一不同的就是 e 中參數(shù)值的構(gòu)成,以下是四代滑塊與消消樂的對(duì)比:

09

可以看到不同點(diǎn)在于四代滑塊 e 中參數(shù)包括 setLeft(缺口距離)独郎、track(滑動(dòng)軌跡)踩麦,自然消消樂是沒有的,userresponse 在滑塊中是數(shù)值計(jì)算氓癌,而消消樂中是交換的兩個(gè)圖片的坐標(biāo)谓谦,舉個(gè)例子:

10

上圖中的驗(yàn)證碼,接口返回的 ques 值為:

ques = [
    [0, 1, 0], 
    [1, 3, 3], 
    [1, 0, 1]
]

ques[0]贪婉、ques[1]反粥、ques[2] 分別對(duì)應(yīng)驗(yàn)證碼的第0列、第1列疲迂、第2列才顿,注意是列,不是行尤蒿!而我們只需要關(guān)心 ques 數(shù)組里的交換即可郑气,正確應(yīng)該交換第0行第1列和第0行第0列,那么 userresponse 的值應(yīng)該為:[[0, 1], [0, 0]]优质。

其他參數(shù)值的生成都是一樣的方式竣贪,具體可以閱讀 K 哥往期文章《【驗(yàn)證碼逆向?qū)凇磕瞅?yàn)四代滑塊驗(yàn)證碼逆向分析》,這里就不再重復(fù)寫了巩螃。

消消樂結(jié)果驗(yàn)證

只要 JS 和交換的坐標(biāo)沒問題演怎,成功率就為 100%。

11

五子棋流程分析

12

五子棋的流程跟消消樂一樣避乏,進(jìn)入網(wǎng)頁后爷耀,F(xiàn)12 進(jìn)行抓包,選擇五子棋驗(yàn)證碼拍皮,抓包到 load 接口:

13
  • captcha_id:驗(yàn)證碼 id歹叮,固定值跑杭,四代滑塊文章中有講;
  • challenge:動(dòng)態(tài)變化咆耿,由 gtc4.js 文件生成德谅,四代滑塊文章中有講;
  • client_type:web 端萨螺;
  • risk_type:驗(yàn)證碼類型窄做,例如滑塊為 slide,無感為 ai慰技,五子棋為 winlinze椭盏;
  • lang:語言;
  • callback:回調(diào)參數(shù)吻商,geetest_ + 時(shí)間戳掏颊。

響應(yīng)預(yù)覽中返回的關(guān)鍵內(nèi)容如下:

14
  • captcha_type:驗(yàn)證碼類型;
  • gct_path:gct4 文件路徑艾帐;
  • lot_number:生成 pow_msg乌叶、w 的關(guān)鍵參數(shù);
  • payload:verify 請(qǐng)求參數(shù)掩蛤;
  • datetime:ISO 8601 擴(kuò)展格式的日期枉昏,生成 pow_msg 的關(guān)鍵參數(shù);
  • process_token:verify 請(qǐng)求參數(shù)揍鸟;
  • ques:五子棋矩陣(5x5)兄裂,每個(gè)數(shù)字代表一種顏色,0 表示空位阳藻,將五個(gè)相同數(shù)字換到同一列晰奖、同一行或?qū)蔷€上即可通過。

其他的與消消樂是一樣的腥泥,e 參數(shù)如下匾南,其中 userresponse 就是需要交換的兩個(gè)棋子的坐標(biāo):

15

五子棋結(jié)果驗(yàn)證

同樣的,只要 JS 和交換的坐標(biāo)沒問題蛔外,成功率就為 100%蛆楞。

16

五子棋和消消樂算法

以下是消消樂和五子棋坐標(biāo)交換的 Python 算法,注意是交換坐標(biāo)的算法喲夹厌,不是全部的代碼哈豹爹,消消樂大概30來行,五子棋大概60來行矛纹,還是很簡(jiǎn)單的臂聋,有需要的可以去k哥爬蟲公眾號(hào)看看。

【驗(yàn)證碼逆向?qū)凇磕瞅?yàn)四代五子棋、消消樂驗(yàn)證碼逆向分析

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末孩等,一起剝皮案震驚了整個(gè)濱河市艾君,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肄方,老刑警劉巖冰垄,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異权她,居然都是意外死亡播演,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門伴奥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人翼闽,你說我怎么就攤上這事拾徙。” “怎么了感局?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵尼啡,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我询微,道長(zhǎng)崖瞭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任撑毛,我火速辦了婚禮书聚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘藻雌。我一直安慰自己雌续,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布胯杭。 她就那樣靜靜地躺著驯杜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪做个。 梳的紋絲不亂的頭發(fā)上鸽心,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音居暖,去河邊找鬼顽频。 笑死,一個(gè)胖子當(dāng)著我的面吹牛膝但,可吹牛的內(nèi)容都是我干的冲九。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼莺奸!你這毒婦竟也來了丑孩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤灭贷,失蹤者是張志新(化名)和其女友劉穎温学,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甚疟,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仗岖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了览妖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轧拄。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖讽膏,靈堂內(nèi)的尸體忽然破棺而出檩电,到底是詐尸還是另有隱情,我是刑警寧澤府树,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布俐末,位于F島的核電站,受9級(jí)特大地震影響奄侠,放射性物質(zhì)發(fā)生泄漏卓箫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一垄潮、第九天 我趴在偏房一處隱蔽的房頂上張望烹卒。 院中可真熱鬧,春花似錦魂挂、人聲如沸甫题。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坠非。三九已至,卻和暖如春果正,著一層夾襖步出監(jiān)牢的瞬間炎码,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國打工秋泳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留潦闲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓迫皱,卻偏偏與公主長(zhǎng)得像歉闰,于是被迫代替她去往敵國和親辖众。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容