某物流 akm 3.0 补环境(sensor_data)

概要

提示:仅供学习,不得用做商业交易,如有侵权请及时联系

逆向某物流 akm 3.0 补环境(sensor_data)

URLaHR0cHM6Ly93d3cuZGhsLmNvbS9jbi16aC9ob21lLmh0bWw=

目标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的生成(这里仅参考补环境):

  1. 当环境补通之后该参数的值会出现在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 = ''

在这里插入图片描述

  1. dom检测点:getElementsByTagName-》input、createElement-》span、p、div、iframe(nodeName,nodeType,ATTRIBUTE_NODE,baseURI,contentWindow,srcdoc,style)等、
    在这里插入图片描述

  2. window的属性和对象(及原型)等------自己补充、
    在这里插入图片描述

  3. 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;
  1. 补充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看主页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值