怎么做网站主页,万江区网站建设公司,聊城手机网站建设公司,手机登录网站怎么建设一、常见五种js加密手段
#xff08;一#xff09;加密位置#xff1a;
1.Request Payload 加密
2.Request Headers 加密
3.Request URL params 参数加密
4.Response Data 数据加密
5.JS代码混淆加密
#xff08;二#xff09;加密算法
base64 编码
哈希算法一加密位置
1.Request Payload 加密
2.Request Headers 加密
3.Request URL params 参数加密
4.Response Data 数据加密
5.JS代码混淆加密
二加密算法
base64 编码
哈希算法md5,SHA
对称加密AES
非对称加密RSA
二、Python Js2Py库运行JS代码
1.index.js文件中书写一段js代码
var getCode function(str){prefix C13L02timestamp Math.floor(Date.now())return prefix timestamp str
}
2.终端安装js2py:pip install js2py
3.创建py文件C13L03.py
import js2pyjsExec js2py.EvalJs()
with open(./C13L03/index.js, r) as f:jsExec.execute(f.read())print(jsExec.getCode(abc))# C13L02 1679589330373 abc# C13L02 1679589342156 abc
三、JS逆向一Js2py 破解基础JS加密 一通过书写爬虫代码和网页响应可知请求头参数中红框内的参数是必须要添加的并且此参数是可变的故采用以下操作。
二两种方法
1.按住CTRLSHIFTF进行全局搜索sign(参数的名称之后找出现sign的地方 2.加断点将此链接Request URL复制到Sources中的XHR断点中之后刷新。在call stack中往回找到需要的函数位置 三定位函数位置后在文档中搜索CTRLF。搜索mySign 四创建C13L04.js文件将上述js代码复制并创建函数
var getSign function() {var prefix C13L04var timestamp Math.floor(Date.now())var rand Math.floor((Math.random()*500)100)var mySign prefix - timestamp - randreturn mySign
}
(五创建py文件调用上述函数重新请求网页
import requests
import js2pyjsExec js2py.EvalJs()
with open(./C13L04/C13L04.js, r) as f:jsExec.execute(f.read())
mySign jsExec.getSign()
print(mySign)
url http://127.0.0.1:5000/api/C13L04
headers {User-Agent:xxxxxxx,sign: mySign
}
res requests.get(url, headersheaders)
print(res.json())
四、JS逆向二Python 重构 JS加密流程
创建py文件,重构上述JS文件
import requests
import time
import randomprefix C13L04
timestamp int(time.time() * 1000)
rand random.randint(100, 599)
mySign prefix - str(timestamp) - str(rand)
print(mySign)
# JS生成的时间戳为1679650163011time.time()函数生成为1679650177.857263
var getSign function() {var prefix C13L04var timestamp Math.floor(Date.now())var rand Math.floor((Math.random()*500)100)var mySign prefix - timestamp - randreturn mySign
}
url http://127.0.0.1:5000/api/C13L04
headers {User-Agent:xxxxxxx,sign: mySign
}
res requests.get(url, headersheaders)
print(res.json())
五、JS逆向三重构JS Base64 编码问题破解JS Base64加密
一Base64编码原理
The Base64 Alphabet: import base64s1 中
s1_binary s1.encode(utf-8)
# b\xe4\xb8\xad
s1_base64 base64.b64encode(s1_binary).decode(utf-8)
print(s1_base64)
# 现在为string类型:5Lit
s2 base64.b64decode(s1_base64).decode(utf-8)
print(s2)
# 中
s3 base64.b64decode(s1_base64)
print(s3)
# b\xe4\xb8\xad# b\xe4\xb8\xad
# 14 4 11 8 10 13
# 1110 0100 1011 1000 1010 1101
# 111001 001011 100010 101101
print(0b111001, 0b001011, 0b100010, 0b101101)
# 57 11 34 45
# 5 L i t
二破解JS Base64加密 上图位置的参数为加密的数据可变参数。全局搜索“sign 全局搜索encode。
第一种方法最简单是用Js2py方法但这种方法运行效率低一些 第一种方法是用python复写。通过上述代码猜测是base64加密通过验证确实是base64加密 import requests
import time
import base64ts int(time.time()*1000)
msg C13L08 str(ts)
sign base64.b64encode(msg.encode()).decode()
print(sign)url http://127.0.0.1:5000/api/C13L08
headers {User-Agent:xxxxxxx,Referer: http://127.0.0.1:5000/api/C13L08,sign: mySign
}
data {ts: ts,sign:sign
}
res requests.get(url, headersheaders, datadata)
print(res.json())
六、JS逆向四破解MD5和SHA哈希加密
一Hash哈希算法原理
# 将数据通过算法生成固定长度的字符串
# 不可逆
# 相同数据生成的字符串一定是相同的 不同的数据生成的字符串一定不同
# MD5, SHAimport hashlibs1 hello
s1_md5 hashlib.md5(s1.encode()).hexdigest()
print(s1_md5)
s1_sha256 hashlib.sha256(s1.encode()).hexdigest()
print(s1_sha256)
二破解Md5和SHA哈希加密
此位置为加密位置参数 全局搜索”scode找到加密的函数猜测为MD5加密和SHA256加密方式并用在线工具进行验证 import requests
import time
import hashlibts int(time.time()*1000)
txt str(ts) ABC
mcode hashlib.md5(txt.encode()).hexdigest()
scode hashlib.sha256(txt.encode()).hexdigest()url http://127.0.0.1:5000/api/C13L11
headers {User-Agent:xxxxxxx,Referer: http://127.0.0.1:5000/api/C13L11,
}
data {ts: ts,mcode: mcode,scode: scode
}
res requests.get(url, headersheaders, datadata)
print(res.json())
七、实战千千音乐-JS逆向破解音乐mp3参数哈希加密
以下为加密参数位置 添加xhr断点发现函数位置 进入createSign import requests
import time
import hashlibsecret 0b50b02fd0d73a9c4c8c3a781c30845f
appid 16073360
TSID T10063717602
ts int(time.time())
r TSIDT10063717602appid16073360timestamp{}.format(ts) secret
sign hashlib.md5(r.encode()).hexdigest()url https://music.91q.com/v1/song/tracklink?sign{}appid{}TSID{}timestamp{}.format(sign, appid, TSID, ts)
headers {User-Agent: xxxxxxxxxxxxxxx,Referer: https://music.91q.com/player
}
res requests.get(url, headersheaders)
print(res.json())