Python爬蟲進階必備 | XX讀書window.__DATA加密分析

Python爬蟲進階必備 | XX讀書window.__DATA加密分析

今日網站:

aHR0cHM6Ly9zZWFyY2guZG91YmFuLmNvbS9ib29rL3N1YmplY3Rfc2VhcmNoP3NlYXJjaF90ZXh0PSVFNCVCOCU5QyVFOSU4NyU4RSVFNSU5QyVBRCVFNSU5MCVCRSZjYXQ9MTAwMQ==

抓包與定位加密位置

上面就是這次需要分析的網站了,先簡單看看抓包的結果。【圖1-1】

Python爬蟲進階必備 | XX讀書window.__DATA加密分析

圖1-1

抓包很清楚沒什麼幺蛾子,這次分析的網站加密的地方其實是他的搜索結果。

通過查看網頁源碼可以看到加密的地方。【圖1-2】

Python爬蟲進階必備 | XX讀書window.__DATA加密分析

圖1-2

這裏的 window._ _DATA 的值就是搜索的結果。

我們直接搜索這個值就可以找到解密的地方。【圖1-3】

Python爬蟲進階必備 | XX讀書window.__DATA加密分析

圖1-3

分析加密

這個網站的加密算法不同於之前我們分析的固定算法,我們先打上斷點看看。

通過調試我們可以看到解密的核心算法的位置。【圖2-1】

Python爬蟲進階必備 | XX讀書window.__DATA加密分析

圖2-1

先看看他解密後的值是什麼樣,確認下沒有找錯位置。【圖2-2】

Python爬蟲進階必備 | XX讀書window.__DATA加密分析

圖2-2

解密後的明文通過比對就是我們需要的內容。

接下來就是分析解密算法的部分了。

難點分析

鹹魚自己動手扣了一下,加密在前半段的地方不難,不過有許多部分需要重新改寫,所以建議大家自學Javascript部分語法,特別是實例化和原型對象的內容以及運算符中的三元表達式。

例如:

三元表達式


// 表達式1 ?表達式2 : 表達式3
var b = 1, c = 1;
var a = b == c ? 3:6
console.log(a)

原型對象

function xianyu(){
      this.name = 'xianyu',
    this.age = '18'
}

xianyu.prototype.hair = function(){
  return '茂密'
}

var xianyu1 = new xianyu()
var xianyu2 = new xianyu()
console.log(xianyu1.hair)
console.log(xianyu2.hair)
console.log(xianyu1.hair == xianyu2.hair)

同時需要注意的是這裏的加密代碼都是用n、a、c、S、s這類無語義的代碼替換而成的。且因爲許多部分需要重新改寫所以在改寫的時候方法命名一定要用使用規範,不要直接複製。

我們先看下核心解密的部分代碼


var a = e.from(r, "base64"), s = Math.max(Math.floor((a.length - 2 * i) / 3), 0), u = a.slice(s, s + i);
a = e.concat([a.slice(0, s), a.slice(s + i)]);
var c = Object(o.hash)(e.concat([u, e.from(t)]));
return n((l = {},l[c] = a,l));
var l

前三行的方法沒有什麼難度,到關於c的定義部分的時候,o.hash這個方法裏面有很多三元表達式以及原型對象的使用,需要逐步打斷點的,逐個補齊。(適合新手)

或者直接將原型對象xxx.prototype這種整體摳出來再改寫也是可以的(適合老手)

能夠弄清楚上面的兩塊內容,特別是原型的內容,這個加密就很簡單了。

接下來就是摳出代碼的時候,使用 Python 運行出現編碼報錯的坑。

這個在前人的文章中有提到,鹹魚這裏就直接指出修改的地方,就不贅述了。

subprocess.py 這個 python 文件中 類的初始化位置改下編碼類型爲 utf-8 即可

接下來 po 下運行截圖:

Python爬蟲進階必備 | XX讀書window.__DATA加密分析

EOF

這裏要感謝 s 哥之前的分析文章,給了我很大幫助。

大家也可以看看 s 哥的解密,全網第一篇關於XX讀書的解密

https://mp.weixin.qq.com/s/2mpu_oY2-M0wcLvf1eU7Sw

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章