老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

JS逆向代碼轉換為Python代碼怎么寫

這篇文章主要介紹“JS逆向代碼轉換為Python代碼怎么寫”,在日常操作中,相信很多人在JS逆向代碼轉換為Python代碼怎么寫問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”JS逆向代碼轉換為Python代碼怎么寫”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

10年積累的成都網站建設、做網站經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站設計后付款的網站建設流程,更有興寧免費網站建設讓你可以放心的選擇與我們合作。

JS代碼

本文使用的這個JS加密代碼來自某個小視頻網站,網頁上呈現的加密函數如下圖所示:

JS逆向代碼轉換為Python代碼怎么寫

加密方式不算太難,其中decodeMp4.decode()加密函數核心代碼如下所示。

define("tool", function(a, b, c) {
var d = a("jquery")
, e = a("support")
, f = a("constants")
, g = a("base64")
, h = "substring"
, i = "split"
, j = "replace"
, k = "substr";
b.decodeMp4 = {
getHex: function(a) {
return {
str: a[h](4),
hex: a[h](0, 4)[i]("").reverse().join("")
}
},
getDec: function(a) {
var b = parseInt(a, 16).toString();# 對應Python中的str(int(a, 16))
return {
pre: b[h](0, 2)[i](""),
tail: b[h](2)[i]("")
}
},
substr: function(a, b) {
var c = a[h](0, b[0])
, d = a[k](b[0], b[1]);
return c + a[h](b[0])[j](d, "")
},
getPos: function(a, b) {
return b[0] = a.length - b[0] - b[1],
b
},
decode: function(a) {
var b = this.getHex(a)
, c = this.getDec(b.hex)
, d = this[k](b.str, c.pre);
return g.atob(this[k](d, this.getPos(d, c.tail)))
}
};

可以看到調用了decodeMp4中的decode()函數,而decode()函數中依次又調用了getHex(a)、getDec(b.hex)、g.atob()、getPos(d, c.tail)等函數,而我們要做的,就是將這些函數,轉換為Python的寫法,然后構造對應的加密方式,得到加密后的結果,就可以完成逆向效果了。

轉換過程

這里的變量a通過打斷點的方式,得到的是一個長字符串,這里以下面的變量作為示例。

a = "c0b1Ly9tdnPflQ3cQpPZpZGVvMTAubWVpdHVkYXRhLmNvbS82MWM0NDNlOGI1MmFmMTYzMi5tcDkBOyQ"

這里先提前把后面需要用到的函數做個簡單的整理,這樣也方便大家后面查看。

JS逆向代碼轉換為Python代碼怎么寫

依次以每個函數來作為拆解,具體如下:

1、getHex(a)函數
var h = "substring",i = "split";
getHex: function(a) {
return {
str: a[h](4),
hex: a[h](0, 4)[i]("").reverse().join("")
}
},

上面這個是對應的getHex()函數JS代碼,可以看到直接返回了一個字典,字典的key分別是str和hex,其中str對應的值是a[h](4),h的定義是substring,這個函數的意思是字符串從指定下標開始取值直到到字符串結尾,這里翻譯過來就是a.substring(4),也就是字符串a從下標4開始取到結束;a[h](0, 4)[i]("").reverse().join("")這個理解起來復雜一些,首先是取字符串的值,位置是從0到4,之后調用了函數i,即split函數,以空格("")作為分割,調用reverse()函數倒序排序,之后調用join("")進行字符串連接,拆解之后就簡單很多了。接下來就是構造Python代碼了,對照寫完之后如下所示:

def getHex(a):
return {
"str": a[4:],# JS中的substring(4)指的是從4開始取值到字符串末尾
"hex": "".join(list(a[0:4])[::-1])# [::-1]代表的是反向取值
}

看著是不是似曾相識呢?同上面的JS代碼如出一轍。

2、getDec(a)函數

其JS代碼如下:

 getDec: function(a) {
var b = parseInt(a, 16).toString(); 
return {
pre: b[h](0, 2)[i](""),
tail: b[h](2)[i]("")
}
},

根據對應關系,可以寫出對應的Python代碼如下所示:

def getDec(a):
b = str(int(a, 16))
print(b)
return {
"pre": list(b[:2]),
"tail": list(b[2:])
}
3、substr(a, b)函數

其JS代碼如下:

substr: function(a, b) {
var c = a[h](0, b[0])
, d = a[k](b[0], b[1]);
return c + a[h](b[0])[j](d, "")
},

根據對應關系,可以寫出對應的Python代碼如下所示:

def substr(a, b):
c = a[0: int(b[0])]
print(c)
d = a[int(b[0]):int(b[0])+int(b[1])]
print(d)
return c + a[int(b[0]):].replace(d, '')
4、getPos(a, b)函數

其JS代碼如下:

getPos: function(a, b) {
return b[0] = a.length - b[0] - b[1],
b
},

根據對應關系,可以寫出對應的Python代碼如下所示:

def getPos(a, b):
b[0] = len(a) - int(b[0]) - int(b[1])
print(b[0])
return b
5、decode(a, b)函數

其JS代碼如下:

decode: function(a) {
var b = this.getHex(a)
, c = this.getDec(b.hex)
, d = this[k](b.str, c.pre);
return g.atob(this[k](d, this.getPos(d, c.tail)))
}

根據對應關系,可以寫出對應的Python代碼如下所示:

 b = getHex(a)
# print(b)
c = getDec(b['hex'])
print(c)
# d = k(str(b), c.pre)
d = substr(b['str'], c['pre'])
# print(d)
return base64.b64decode(substr(d, getPos(d, c['tail'])))
效果展示

直接通過網絡爬蟲進行請求,你拿不到最終的這個加密后的地址的,不論你怎么請求,都是拿不到的,你只能拿到data-src,即上面說的字符串變量a,只有通過逆向之后,通過上面的解析,運行代碼,即可得到和網頁上一樣的請求地址,如下圖所示,逆向成功!

JS逆向代碼轉換為Python代碼怎么寫

把這個地址放到瀏覽器,是可以播放的,然后一個請求下載,即可把視頻拿下。

到此,關于“JS逆向代碼轉換為Python代碼怎么寫”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注創新互聯網站,小編會繼續努力為大家帶來更多實用的文章!


分享文章:JS逆向代碼轉換為Python代碼怎么寫
文章出自:http://www.xueling.net.cn/article/jooegs.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: av免费在线观看不卡 | 日韩最新在线 | 欧美性猛交xxxx免费看野外 | 在线观看国产黄 | 亚洲精品欧美二区三区中文字幕 | 亚洲国产一区二区波多野结衣 | 欧美精品在线视频观看 | 国产在线播精品第三 | 亚洲色大成网站WWW永久 | 人妻激情另类国产 | 少妇MM被擦出白浆液视频 | 四川少妇BBBB槡BBBB槡 | 婷婷五月六月综合缴情 | 超碰个人在线 | 看真人视频a级毛片 | 成人亚洲欧美久久久久 | 9191久久| 亚洲欧美日韩人成在线播放 | 亚洲精品网站免费 | 亚洲一区视频在线观看视频 | 高清国产精品人妻一区二区 | 久久国产精品99久久久久久老狼 | 免费观看一区二区 | 午夜精品久久久99热使用方法 | 日韩福利一区二区 | 成人在线手机版视频 | 狠狠躁夜夜躁人人躁婷婷视频 | 色八区人妻在线视频免费 | 老司机午夜在线视频 | 人妖一区二区三区 | 一区二区三区视频免费视频观看网站 | 国产日本无码视频韩国网站写真 | 久久久久美女 | 日韩欧无码一区二区三区免费不卡 | 一区二区国产日产 | 亚洲W欧洲无码SSS222 | 俄罗斯freeⅹ性欧美 | 老司机久草 | 亚洲色欲色欲色欲www | 久久亚洲堂色噜噜av入口网站 | 水蜜桃视频在线观看免费 |