mirror of
https://github.com/Bao-qing/123pan.git
synced 2025-11-13 12:16:07 +08:00
94 lines
2.6 KiB
JavaScript
94 lines
2.6 KiB
JavaScript
// 定义函数A,用于进行一些复杂的计算
|
||
function A(t, e = 10) {
|
||
// Generating an array 'n' with precomputed values
|
||
const n = (function () {
|
||
const t = [];
|
||
for (let e = 0; e < 256; e++) {
|
||
let n = e;
|
||
for (let r = 0; r < 8; r++)
|
||
n = 1 & n ? 3988292384 ^ (n >>> 1) : n >>> 1;
|
||
t[e] = n;
|
||
}
|
||
return t;
|
||
})();
|
||
|
||
// Encoding input 't' based on character codes
|
||
const r = t.replace(/\r\n/g, "\n");
|
||
let a = -1;
|
||
for (let i = 0; i < r.length; i++)
|
||
a = (a >>> 8) ^ n[(255 & (a ^ r.charCodeAt(i)))];
|
||
|
||
// Converting 'a' to an unsigned 32-bit integer and returning as a string of base 'e'
|
||
return ((-1 ^ a) >>> 0).toString(e);
|
||
}
|
||
|
||
|
||
// 定义全局变量
|
||
global.e = '/b/api/file/list/new'
|
||
global.n = "web"
|
||
global.r = 3
|
||
global.timestamp = 1702555131
|
||
|
||
function generateTimestamp() {
|
||
return Math.round(((new Date).getTime() + 60 * (new Date).getTimezoneOffset() * 1e3 + 288e5) / 1e3).toString();
|
||
}
|
||
|
||
function adjustTimestamp(o, timestamp) {
|
||
if (timestamp) {
|
||
var i = timestamp;
|
||
var m = i;
|
||
if (20 <= Math.abs(1e3 * o - 1e3 * m) / 1e3 / 60) {
|
||
return i;
|
||
}
|
||
}
|
||
return o;
|
||
}
|
||
|
||
|
||
|
||
function formatDate(t, e, n) {
|
||
var r;
|
||
n = 8
|
||
t = 1000 * Number.parseInt(t);
|
||
t += 60000 * new Date(t).getTimezoneOffset();
|
||
var data = {
|
||
y: (r = new Date(t + 36e5 * n)).getFullYear(),
|
||
m: r.getMonth() + 1 < 10 ? "0".concat(r.getMonth() + 1) : r.getMonth() + 1,
|
||
d: r.getDate() < 10 ? "0".concat(r.getDate()) : r.getDate(),
|
||
h: r.getHours() < 10 ? "0".concat(r.getHours()) : r.getHours(),
|
||
f: r.getMinutes() < 10 ? "0".concat(r.getMinutes()) : r.getMinutes()
|
||
}
|
||
return data
|
||
}
|
||
|
||
function generateSignature(a, o, e, n, r) {
|
||
var s = ["a", "d", "e", "f", "g", "h", "l", "m", "y", "i", "j", "n", "o", "p", "k", "q", "r", "s", "t", "u", "b", "c", "v", "w", "s", "z"];
|
||
var u = formatDate(o);
|
||
console.log(u)
|
||
var h = u.y;
|
||
var g = u.m;
|
||
var l = u.d;
|
||
var c = u.h;
|
||
var u = u.f;
|
||
var d = [h, g, l, c, u].join("");
|
||
var f = [];
|
||
for (var p in d) {
|
||
f.push(s[Number(d[p])]);
|
||
}
|
||
console.log(f.join(""))
|
||
h = A(f.join(""));
|
||
g = A("".concat(o, "|").concat(a, "|").concat(e, "|").concat(n, "|").concat(r, "|").concat(h));
|
||
return [h, "".concat(o, "-").concat(a, "-").concat(g)];
|
||
}
|
||
|
||
var a = Math.round(1e7 * Math.random());
|
||
var o = generateTimestamp();
|
||
o = 1702556971
|
||
console.log(o)
|
||
o = adjustTimestamp(o, timestamp);
|
||
console.log(o)
|
||
var e = '/b/api/file/list/new';
|
||
var n = "web";
|
||
var r = 3;
|
||
console.log(generateSignature(a, o, e, n, r));
|