前言
作者最近在做一個(gè)收集粉幣
的項(xiàng)目,可以用來干嘛這里就不展開了??,需要進(jìn)行登錄換算token從而達(dá)到監(jiān)控收集的作用,手機(jī)抓包發(fā)現(xiàn)他是通過APP進(jìn)行計(jì)算之后再請(qǐng)求接口的,通過官網(wǎng)分析可能要比APP逆向方便多
,但是通過這幾天的觀察我并沒有頭緒,這篇文章草稿創(chuàng)建了接近一個(gè)月了,無從下筆
,借助了人工智能也沒有達(dá)到效果,可見它的難度不一般(也可能是我JS基礎(chǔ)太過薄弱的原因
),本次我們用一種分析方法慢慢的瓦解擊破他的層層邏輯!
JS啟動(dòng)分析
這里從網(wǎng)站入手,原因如下:
沒有驗(yàn)證碼
JS結(jié)構(gòu)清晰
觀察不難發(fā)現(xiàn),密碼是被加密的
必定是通過js進(jìn)行加密的,我們查看啟動(dòng)器
發(fā)現(xiàn)有以下幾個(gè)關(guān)鍵JS
第一感覺是,main為主方法,其他的是用來調(diào)用的,encrypt應(yīng)該是用于加密的方法,通過上面的啟動(dòng)器證實(shí)了main.js的確是優(yōu)先啟動(dòng)的
找到main.js搜索password
密碼通過this.encrypt()進(jìn)行加密的
var n = {
phone: this.phone,
verification: this.verification,
password: this.encrypt(this.password)
};
找到encrypt()方法
encrypt(n) {
return window.encrypt(this.publicKey, n)
}
需要用到一個(gè)參數(shù)publicKey
到這里我們基本搞清楚了,登錄時(shí)將原密碼,進(jìn)行調(diào)用window.encrypt(this.publicKey, n)
加密
猜想
猜測(cè)n為原密碼,如何證實(shí)呢?有很多人想說觀察代碼的調(diào)用,這當(dāng)然可以,但如果是復(fù)雜的代碼或者加密的你還能看嗎?
這里用了一個(gè)瀏覽器自帶的功能本地替換
,可以無視代碼加密,為什么這么說,因?yàn)榇a加密最后還是要被執(zhí)行,不能執(zhí)行的代碼加密了有啥用呢??
我們找到main.js將n彈窗顯示
encrypt(n) {
alert(n);
return encrypt(this.publicKey, n)
}
替換到本地啟用后,我們進(jìn)行登錄模擬,看看有沒有效果?
這里將我的登錄密碼彈出來了,猜想正確!
順藤摸瓜
有了剛剛的思想,我們直接找encrypt.js,因?yàn)樵趍ain.js中最后調(diào)用了
return encrypt(this.publicKey, n)
而在main.js中沒有其他方法了 ,在encrypt.js我們找到了相關(guān)方法
av.encrypt = function(aG, z) {
var t = new N();
t.setPublic(a(aG), "10001");
return ai(t.encrypt(z))
}
代碼是否運(yùn)行到這里,和剛剛一樣驗(yàn)證一下就可以了
發(fā)現(xiàn)又調(diào)用了新的方法ai(t.encrypt(z))
function ai(aG) {
var z;
var aH;
var t = "";
for (z = 0; z + 3 <= aG.length; z += 3) {
aH = parseInt(aG.substring(z, z + 3), 16);
t += ad.charAt(aH >> 6) + ad.charAt(aH & 63)
}
if (z + 1 == aG.length) {
aH = parseInt(aG.substring(z, z + 1), 16);
t += ad.charAt(aH << 2)
} else {
if (z + 2 == aG.length) {
aH = parseInt(aG.substring(z, z + 2), 16);
t += ad.charAt(aH >> 2) + ad.charAt((aH & 3) << 4)
}
}
while ((t.length & 3) > 0) {
t += Y
}
alert(t);
return t
}
我們?cè)谛薷拇a將t進(jìn)行彈窗顯示,重新來一遍整個(gè)登錄過程,觀察最后的加密密碼是否與請(qǐng)求的一致
模擬登錄測(cè)試
經(jīng)過對(duì)比是一致的,由于我們的環(huán)境是python,接下來借助GPT進(jìn)行代碼轉(zhuǎn)換
代碼轉(zhuǎn)換
通過將涉及到的函數(shù)調(diào)用方法進(jìn)行羅列,通過人工智能改寫
var publicKey='ANKi9PWuvDOsagwIVvrPx77mXNV0APmjySsYjB1/GtUTY6cyKNRl2RCTt608m9nYk5VeCG2EAZRQmQNQTyfZkw0Uo+MytAkjj17BXOpY4o6+BToi7rRKfTGl6J60/XBZcGSzN1XVZ80ElSjaGE8Ocg8wbPN18tbmsy761zN5S';
var n='密碼'
encrypt(publicKey, n)
encrypt(aG, z) {
var t = new N();
t.setPublic(a(aG), "10001");
return ai(t.encrypt(z))
}
function a(aI) {
alert("經(jīng)過");
var aG = "";
var aH;
var t = 0;
var z;
for (aH = 0; aH < aI.length; ++aH) {
if (aI.charAt(aH) == Y) {
break
}
v = ad.indexOf(aI.charAt(aH));
if (v < 0) {
continue
}
if (t == 0) {
aG += aF(v >> 2);
z = v & 3;
t = 1
} else {
if (t == 1) {
aG += aF((z << 2) | (v >> 4));
z = v & 15;
t = 2
} else {
if (t == 2) {
aG += aF(z);
aG += aF(v >> 2);
z = v & 3;
t = 3
} else {
aG += aF((z << 2) | (v >> 4));
aG += aF(v & 15);
t = 0
}
}
}
}
if (t == 1) {
aG += aF(z << 2)
}
return aG
}
function ai(aG) {
// alert(aG);
var z;
var aH;
var t = "";
for (z = 0; z + 3 <= aG.length; z += 3) {
aH = parseInt(aG.substring(z, z + 3), 16);
t += ad.charAt(aH >> 6) + ad.charAt(aH & 63)
}
if (z + 1 == aG.length) {
aH = parseInt(aG.substring(z, z + 1), 16);
t += ad.charAt(aH << 2)
} else {
if (z + 2 == aG.length) {
aH = parseInt(aG.substring(z, z + 2), 16);
t += ad.charAt(aH >> 2) + ad.charAt((aH & 3) << 4)
}
}
while ((t.length & 3) > 0) {
t += Y
}
alert(t);
return t
}
最后
在當(dāng)今數(shù)字化時(shí)代,軟件開發(fā)領(lǐng)域正在經(jīng)歷著飛速的變革和增長(zhǎng)。隨著技術(shù)的不斷演進(jìn),開發(fā)者們面臨著越來越多的挑戰(zhàn),需要不斷提高他們的創(chuàng)造力和生產(chǎn)力。爬蟲的數(shù)據(jù)也越來越困難,從加密到鑒權(quán)封鎖IP等等,在爬蟲時(shí)一定要做好自身的安全問題,切勿做超越法律以外的事情
??我的其他作品
《記一次云之家簽到抓包》
《記一次視頻抓包m3u8解密過程》
《抓包部分軟件時(shí)無網(wǎng)絡(luò)+過代理檢測(cè) 解決辦法 安卓黃鳥httpcanary+vmos》
《Python】記錄抓包分析自動(dòng)領(lǐng)取芝麻HTTP每日免費(fèi)IP(成品+教程)》
《某課抓包視頻 安卓手機(jī):黃鳥+某課app+VirtualXposed虛擬框架》
推薦專欄:
《Python爬蟲腳本項(xiàng)目實(shí)戰(zhàn)》
該專欄往期文章:
《【Python爬蟲項(xiàng)目實(shí)戰(zhàn)一】獲取Chatgpt3.5免費(fèi)接口文末付代碼(過Authorization認(rèn)證)》
??如果感覺看完文章還不過癮,歡迎查看我的其它專欄
??如果你也喜歡爬蟲抓包分析,請(qǐng)關(guān)注我,我還完成過很多獨(dú)立的項(xiàng)目:例如滇醫(yī)通等等腳本,但是由于版權(quán)的原因下架了,爬蟲這一類審核比較嚴(yán)謹(jǐn),稍有不慎就侵權(quán)違規(guī)了,所以在保證質(zhì)量的同時(shí)會(huì)對(duì)文章進(jìn)行篩選
如果對(duì)爬蟲感興趣請(qǐng)收藏或者訂閱該專欄哦《Python爬蟲腳本項(xiàng)目實(shí)戰(zhàn)》,如果你有項(xiàng)目歡迎聯(lián)系我,我會(huì)同步教程到本專欄!
??Python爬蟲項(xiàng)目實(shí)戰(zhàn)系列文章!!
??歡迎訂閱??文章來源:http://www.zghlxwxcb.cn/news/detail-752528.html
【Python爬蟲項(xiàng)目實(shí)戰(zhàn)一】獲取Chatgpt3.5免費(fèi)接口文末付代碼(過Authorization認(rèn)證)
【Python爬蟲項(xiàng)目實(shí)戰(zhàn)二】Chatgpt還原驗(yàn)證算法-解密某寶偽知網(wǎng)數(shù)據(jù)接口文章來源地址http://www.zghlxwxcb.cn/news/detail-752528.html
到了這里,關(guān)于【爬蟲逆向分析實(shí)戰(zhàn)】某筆登錄算法分析——本地替換分析法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!