{Max} 請求頭參數分析(待更新)

滲透逆向 · 30 天前 · 18 人浏览
{Max} 請求頭參數分析(待更新)

看上去參數蠻多的,請求内容倒是沒加密,主要是請求頭的這部分:
2024-12-18T09:13:54.png
traceparent 和 tracestate 蠻簡單的,一個是直接扣就行,另一個是webpack,像之前一樣扣就行,這兩個參數搞定了。後續的參數等我更新吧。
2024-12-18T09:19:22.png

var Tool_obj


function k(e) {
    return Array.from({
        length: e
    }).map(( () => "0123456789abcdef".charAt(Math.floor(16 * Math.random())))).join("")
}

traceparent = `00-${k(32)}-${k(16)}-${"00"}`

 console.log(traceparent)
 
!function(o){
    c = {};
    function l(e) {
        var t = c[e];
        if (void 0 !== t)
            return t.exports;
        var n = c[e] = {
            id: e,
            loaded: !1,
            exports: {}
        };
        console.log("Loading " + e)
        return o[e].call(n.exports, n, n.exports, l),
        n.loaded = !0,
        n.exports
    }
    l.o = function(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
    }
    l.d = function(e, t) {
        for (var n in t)
            l.o(t, n) && !l.o(e, n) && Object.defineProperty(e, n, {
                enumerable: !0,
                get: t[n]
            })
    }


    Tool_obj = l


}({
    43138: function(e, t, n) {
        "use strict";
        function a() {
            let e;
            try {
                e = performance.now()
            } catch (t) {
                e = Date.now()
            }
            return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (t => {
                let n = 16 * Math.random();
                return n = (e + n) % 16 | 0,
                e = Math.floor(e / 16),
                ("x" === t ? n : 3 & n | 8).toString(16)
            }
            ))
        }
        n.d(t, {
            w: function() {
                return a
            }
        })
    },

    3229: function(e, t, n) {
        "use strict";
        n.d(t, {
            C: function() {
                return i
            }
        });
        var a, r = n(43138);
        class i {
            static get createdAt() {
                return this._refreshWhenExpired(),
                this._createdAt
            }
            static _getStoredTenantValue() {
                var e, t, n;
                try {
                    const r = null === (e = a._storage) || void 0 === e ? void 0 : e.readSync(a._BOOTSTRAP_CONFIG_STATE_KEY);
                    if (r)
                        return (null === (n = null === (t = JSON.parse(r)) || void 0 === t ? void 0 : t.routing) || void 0 === n ? void 0 : n.tenant) || "beam"
                } catch (e) {}
                return "beam"
            }
            static getSessionDuration() {
                return "br" === this._getStoredTenantValue() ? this._maxBRSessionDuration : this._maxBEAMSessionDuration
            }
            static extendSession() {
                this._sessionExpiration = Date.now() + this.getSessionDuration(),
                this._saveSessionToStorage()
            }
            static get sessionId() {
                return this._refreshWhenExpired(),
                this._sessionId
            }
            static isSessionExpired() {
                return !this._sessionId || Date.now() >= this._sessionExpiration
            }
            static _isValidStorageSession(e, t, n) {
                const a = Boolean(t) && "number" == typeof t
                  , r = Boolean(n) && "number" == typeof n && !this.isSessionExpired.apply({
                    _sessionId: e,
                    _sessionExpiration: n
                });
                return a && r
            }
            static _loadSessionFromStorage() {
                var e;
                let t, n, r;
                try {
                    const i = null === (e = a._storage) || void 0 === e ? void 0 : e.readSync(a._SESSION_STATE_KEY);
                    if (!i)
                        return;
                    ({created: n, expires: r, uuid: t} = JSON.parse(i))
                } catch (e) {
                    return
                }
                this._isValidStorageSession(t, n, r) && this._updateSession(t, n)
            }
            static onSessionCreated(e) {
                this._callbacks.add(e)
            }
            static _refreshWhenExpired() {
                this.isSessionExpired() && this._updateSession()
            }
            static _saveSessionToStorage() {
                const {_storage: e} = this;
                e && e.writeSync(this._SESSION_STATE_KEY, JSON.stringify({
                    uuid: this._sessionId,
                    created: this._createdAt,
                    expires: this._sessionExpiration
                }))
            }
            static setStorage(e) {
                if (!e || !e.readSync || !e.writeSync)
                    throw new Error("SessionManager: IStorage must support readSync and writeSync");
                a._storage = e,
                this._loadSessionFromStorage()
            }
            static _updateSession(e, t) {
                this._sessionId = null != e ? e : (0,
                r.w)(),
                this._createdAt = null != t ? t : Date.now(),
                this.extendSession(),
                this._callbacks.forEach((e => e()))
            }
        }
        a = i,
        i._callbacks = new Set,
        i._createdAt = Date.now(),
        i._maxBEAMSessionDuration = 18e5,
        i._maxBRSessionDuration = 3e5,
        i._sessionId = (0,
        r.w)(),
        i._sessionExpiration = a._createdAt + a.getSessionDuration(),
        i._SESSION_STATE_KEY = "session",
        i._BOOTSTRAP_CONFIG_STATE_KEY = "bootstrap-config"
    },

})


var a = Tool_obj(3229)
function _generateTraceState(){
    return `wbd=session:${a.C.sessionId}`
}
tracestate = _generateTraceState()

console.log(tracestate)
本站立足于美利堅合衆國,請讀者自覺遵守當地法律!如有違規,本站不承擔任何法律責任! This site is based in the United States of America, readers are requested to abide by local laws! If there are any violations, this site does not bear any legal responsibility! Theme Jasmine by Kent Liao