概要
提示:仅供学习,不得用做商业交易,如有侵权请及时联系
逆向:某物流 akm 3.0 补环境(sensor_data)
URL:aHR0cHM6Ly93d3cuZGhsLmNvbS9jbi16aC9ob21lLmh0bWw=
目标:sensor_data参数
结果:_abck
整体架构流程
提示:分析整体流程
一、第一次访问首页获取cookie值:_abck、ak_bmsc、bm_sz
注意:这里的_abck是~-1~-1~-1结尾
二、第二次请求一个从home.html中得到的一个js文件,并返回cookie值:_abck
注意:这里的_abck是~-1~-1~-1结尾
三、第三次还是请求返回的js接口并发送post,提交表单数据sensor_data,并获取响应请求头中的_abck参数、
注意:如果验证失败这里的_abck是~-1~-1~-1结尾,成功则得到的是:~-1~||0||~-1
四、akm一般我存在tls的校验,所以编写py时我们需要绕过:使用curl_cffi库或者其他库
from curl_cffi import requests
url = "https://xxx/home.html"
response = requests.get(url, headers=headers,impersonate="chrome101")
cookies = response.cookies.get_dict()
五、说一下sensor_data的生成(这里仅参考补环境):
- 当环境补通之后该参数的值会出现在XMLHttpRequest.prototype.send方法:
XMLHttpRequest = function XMLHttpRequest() { }
XMLHttpRequest.prototype.open = function () {
// dtavm.log('XMLHttpRequest.open:', arguments)
}
XMLHttpRequest.prototype.send = function () {
dtavm.log('XMLHttpRequest.prototype.send--->',JSON.parse(arguments[0])['sensor_data'])
}
XMLHttpRequest.prototype.setRequestHeader = function () { }
XMLHttpRequest.prototype.status = 0
XMLHttpRequest.prototype.statusText = ''
XMLHttpRequest.prototype.response = null
XMLHttpRequest.prototype.responseText = ''
XMLHttpRequest.prototype.responseType = ''
-
dom检测点:getElementsByTagName-》input、createElement-》span、p、div、iframe(nodeName,nodeType,ATTRIBUTE_NODE,baseURI,contentWindow,srcdoc,style)等、
-
window的属性和对象(及原型)等------自己补充、
-
RTCPeerConnection补充:
RTCPeerConnection = class {
}
RTCPeerConnection.prototype.getLocalStreams = function () {
}
RTCPeerConnection.prototype.createDataChannel = function () {
return {
onopen: function () {
}, onclose: function () {
}, onmessage: function () {
}, send: function () {
}, close: function () {
},
}
}
RTCPeerConnection.prototype.createAnswer = function () {
}
RTCPeerConnection.prototype.createOffer = function () {
return new Promise((resolve, reject) => {
const offer = {
sdp: "v=0\r\no=- 7557661829766968651 2 IN IP4 {127.0.0.1}\r\ns=-\r\nt=0 0\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS\r\n",
type: "offer"
};
resolve(offer);
});
}
RTCPeerConnection.prototype.setLocalDescription = function (sampleDescription) {
return new Promise((resolve, reject) => {
resolve();
});
}
RTCPeerConnection.prototype.setConfiguration = function () {
}
RTCPeerConnection.prototype.addIceCandidate = function () {
}
RTCPeerConnection.prototype.addTrack = function () {
}
RTCPeerConnection.prototype.onicecandidate = function () {
}
RTCPeerConnection.prototype.localDescription = {
sdp: "v=0\r\no=- 7557661829766968651 2 IN IP4 {127.0.0.1}\r\ns=-\r\nt=0 0\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS\r\n",
type: "offer"
}
RTCPeerConnection.prototype.sctp = {}
webkitRTCPeerConnection = RTCPeerConnection;
- 补充docuemnt.cookie时一定要动态传入前一次获取得到那三个cookie值:_abck、ak_bmsc、bm_sz
cookies = response.cookies.get_dict()
cookieStr = '; '.join([f"{key}={value}" for key, value in cookies.items()])
六、最后看结果
小结
提示:学习交流+v看主页