JS逆向:斷點調試分析 JS 代碼破解有道詞典加密參數(shù)

1. 前言

  • 本篇文章蛉威,旨在破解有道翻譯 http://fanyi.youdao.com/ 部分請求參數(shù)的 JS 加密方法日丹,從而構造請求訪問站點;

2. 分析

  • 輸入字符 “蘋果”蚯嫌,得到翻譯的結果哲虾;
  • 右鍵查看網(wǎng)頁源碼,ctrl + F 彈出搜索框择示,在網(wǎng)頁源碼中搜索 蘋果束凑,發(fā)現(xiàn)網(wǎng)頁源碼中并沒有 蘋果
  • 搜索 apple 同樣也不能找到栅盲;
  • 這說明 蘋果汪诉、apple 這些輸入輸出的字符串,并不是在網(wǎng)頁上的靜態(tài)內容谈秫,而是動態(tài)加載的扒寄;
image.png

3. 抓包

  • 右鍵檢查網(wǎng)頁,點擊 Network拟烫,調出網(wǎng)頁抓包工具该编;
  • 在網(wǎng)頁上重新點擊 翻譯 按鈕,在抓到的數(shù)據(jù)包中找到含有輸出信息的包构灸;
image.png
  • 在網(wǎng)頁輸入框重新輸入 西瓜 并再次抓包上渴,分析數(shù)據(jù)包的參數(shù)岸梨,發(fā)現(xiàn)參數(shù)有如下規(guī)律:
    -- i ------------------------------------------------------------------------ 輸入的字符串,例如:西瓜稠氮、蘋果曹阔;
    -- from: AUTO---------------------------------------------------------- 不變參數(shù);
    -- to: AUTO------------------------------------------------------------- 不變參數(shù)隔披;
    -- smartresult: dict --------------------------------------------------- 不變參數(shù)赃份;
    -- client: fanyideskweb --------------------------------------------- 不變參數(shù);
    -- salt: 15929685900475 ------------------------------------------ 未知參數(shù)奢米;
    -- sign: e8aeb3b7429d2198356378746cf291d1 ------------ 未知參數(shù)抓韩;
    -- ts: 1592968590047 ---------------------------------------------- 未知參數(shù)
    -- bv: 02a6ad4308a3443b3732d855273259bf -------------- 未知參數(shù)鬓长,多次抓包發(fā)現(xiàn)此參數(shù)值固定谒拴,換瀏覽器后變化;
    -- doctype: json ------------------------------------------------------ 不變參數(shù)涉波;
    -- version: 2.1 -------------------------------------------------------- 不變參數(shù)英上;
    -- keyfrom: fanyi.web ---------------------------------------------- 不變參數(shù);
    -- action: FY_BY_CLICKBUTTION ---------------------------- 不變參數(shù)啤覆;
image.png

4. 搜索參數(shù)苍日,尋找代碼

  • ctrl + shift + F 打開全局搜索,輸入 sign 搜索窗声,按下圖所示步驟尋找代碼相恃;
image.png
  • 說明:
    -- 在 4、5 兩步搜索的過程中笨觅,需要結合上下文仔細分析代碼內容拦耐;
    -- 很多情況下,目標代碼是以 代碼塊 的形式屋摇,集中在一起 出現(xiàn)的揩魂;
    -- 一個文件中會有多處代碼有相同關鍵字,對于這類相同的關鍵字炮温,可以多次搜索不同的關鍵字火脉,對比分析不同的代碼塊中摘完,關鍵字的區(qū)別斑响,推測可能性最大的代碼塊;

5. 下斷調試

  • 在目標代碼位置下斷點盟猖;
  • 在網(wǎng)頁重新點擊 翻譯 按鈕担巩;
    -- 注意:此處動作不可以用 刷新 替代方援,很多時候 刷新 并不能完成請求的再次發(fā)送;
  • 參考下圖涛癌,在斷點分析代碼犯戏,
image.png
  • 通過分析送火,得到下面的結果:
    -- i,即代碼中的 e先匪,表示輸入的字符串种吸;
    -- bv,即代碼中的 t呀非,是對瀏覽器版本字符串(注意:需要剔除 Mozilla/ 字符串<崴住!0度埂)的 md5 處理猖败;
    -- ts,即代碼中的 r降允,是 13 位時間戳恩闻;
    -- salt,即代碼中的 i拟糕,是 r 值尾部加上一個 0~9 隨機整數(shù)判呕;
    -- sign,是對 "fanyideskweb" + e + i + "mmbP%A-r6U3Nw(n]BjuEU" 字符串的 md5 處理送滞;

6. 代碼實現(xiàn)

import requests
import hashlib
import time
import random


def youdao(keyword):
    url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
    headers = {
        "Accept": "application/json, text/javascript, */*; q=0.01",
        "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "zh-CN,zh;q=0.9",
        "Connection": "keep-alive",
        "Content-Length": "251",
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        "Cookie": "OUTFOX_SEARCH_USER_ID=794950846@10.169.0.82; JSESSIONID=aaatjBaH10pyw8bRkOHlx; OUTFOX_SEARCH_USER_ID_NCOO=947970453.2625253; ___rl__test__cookies=1592932488300",
        "Host": "fanyi.youdao.com",
        "Origin": "http://fanyi.youdao.com",
        "Referer": "http://fanyi.youdao.com/",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36",
        "X-Requested-With": "XMLHttpRequest"
    }

    bv = hashlib.md5('5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'.encode("utf-8")).hexdigest()
    print(bv)
    ts = str(int(round(time.time() * 1000)))
    salt = ts + str(random.randint(0, 9))
    sign = hashlib.md5("fanyideskweb{}{}mmbP%A-r6U3Nw(n]BjuEU".format(keyword, salt).encode("utf-8")).hexdigest()

    form_data = {
        "i": keyword,
        "from": "AUTO",
        "to": "AUTO",
        "smartresult": "dict",
        "client": "fanyideskweb",
        "salt": salt,
        "sign": sign,
        "ts": ts,
        "bv": bv,
        "doctype": "json",
        "version": "2.1",
        "keyfrom": "fanyi.web",
        "action": "FY_BY_REALTlME"
    }
    print(form_data)
    response = requests.post(url=url, headers=headers, data=form_data).text

    return response


def main():
    keyword = '西瓜'
    response = youdao(keyword=keyword)
    print(response)


if __name__ == '__main__':
    main()
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市辱挥,隨后出現(xiàn)的幾起案子犁嗅,更是在濱河造成了極大的恐慌,老刑警劉巖晤碘,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褂微,死亡現(xiàn)場離奇詭異,居然都是意外死亡园爷,警方通過查閱死者的電腦和手機宠蚂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來童社,“玉大人求厕,你說我怎么就攤上這事∪怕ィ” “怎么了呀癣?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長弦赖。 經(jīng)常有香客問我项栏,道長,這世上最難降的妖魔是什么蹬竖? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任沼沈,我火速辦了婚禮流酬,結果婚禮上,老公的妹妹穿的比我還像新娘列另。我一直安慰自己芽腾,他們只是感情好,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布访递。 她就那樣靜靜地躺著晦嵌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拷姿。 梳的紋絲不亂的頭發(fā)上惭载,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音响巢,去河邊找鬼描滔。 笑死,一個胖子當著我的面吹牛踪古,可吹牛的內容都是我干的含长。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼伏穆,長吁一口氣:“原來是場噩夢啊……” “哼拘泞!你這毒婦竟也來了?” 一聲冷哼從身側響起枕扫,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤陪腌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后烟瞧,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诗鸭,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年参滴,在試婚紗的時候發(fā)現(xiàn)自己被綠了强岸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡砾赔,死狀恐怖蝌箍,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情过蹂,我是刑警寧澤十绑,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站酷勺,受9級特大地震影響本橙,放射性物質發(fā)生泄漏。R本人自食惡果不足惜脆诉,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一甚亭、第九天 我趴在偏房一處隱蔽的房頂上張望贷币。 院中可真熱鬧,春花似錦亏狰、人聲如沸役纹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽促脉。三九已至,卻和暖如春策州,著一層夾襖步出監(jiān)牢的瞬間瘸味,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工够挂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留旁仿,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓孽糖,卻偏偏與公主長得像枯冈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子办悟,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345