Browse Source

initial

master
steve.gao 7 months ago
commit
64337f3339
  1. 18
      README.md
  2. 149
      app.js
  3. 1154
      douyin/_ac_signature.js
  4. 267
      hnw/hn.js
  5. 14017
      kuaishou/ks_slid.js
  6. 807
      package-lock.json
  7. 7
      package.json
  8. 135
      wx_video/tools.js
  9. 4709
      wx_video/wasm_video_decode.js
  10. BIN
      wx_video/wasm_video_decode.wasm
  11. 838
      xhs/xs-commen.js

18
README.md

@ -0,0 +1,18 @@
# nodejs-param
###nodejs---各个平台逆向参数生成
- kuaishou:js生成参数verifyParam
- api:
- POST: http://x:3000/kuaishou/get_verifyParam
- hnw: js翻译的wasm代码,生成部分参数的中间值
- api:
- GET: http://x:3000/hn/get_signature?nonce={key}
- douyin:js生成参数 __ac_signature
- api:
- GET: http://x:3000/douyin/get_signature?nonce={nonce}
###代码位置:
`
`
- 启动: pm2 app

149
app.js

@ -0,0 +1,149 @@
const express = require("express");
const bodyParser = require("body-parser");
const multer = require('multer'); // 接受视频流
const fs = require('fs');
var captcha = require("./kuaishou/ks_slid"); // 快手滑块
var hn = require("./hnw/hn"); // 惠农网 headers
var dy_signature = require("./douyin/_ac_signature"); // 抖音主页signature
var wx_func = require("./wx_video/wasm_video_decode"); // 微信视频号算法生成
var wx_tool = require("./wx_video/tools"); // 微信视频号解密
var xhs = require("./xhs/xs-commen"); // 小红书x-comment
let Module; // 保存对象存留
var app = express();
// 调整参数大小限制
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
// 设置multer来处理上传的文件
const storage = multer.memoryStorage();
const upload = multer({ storage: storage });
app.post("/kuaishou/get_verifyParam", function(req, res){
try{
var info = req.body["info"]
var result = captcha.getJose(info);
res.send(result);
console.log("[kuaishou-verify_fp] 请求成功");
}catch(e){
console.log(e);
res.send("[kuaishou-verify_fp] verify fp error");
}
});
app.get("/hn/get_signature", function(req, res){
try{
var noce = req.query.nonce;
var result = hn.getS(noce);
res.send(result);
console.log("[hn-get_header] 请求成功");
}catch(e){
console.log(e);
res.send("[hn-get_header] get header error");
}
});
app.get("/douyin/get_signature", function(req, res){
try{
var noce = req.query.nonce;
var result = dy_signature.get_ac_signature(noce);
res.send(result);
console.log("[douyin-get_signature] 请求成功");
}catch(e){
console.log(e);
res.send("[douyin-get_signature] get signature error");
}
});
app.post("/wx/decode", upload.single('file'), async (req,res) =>{
if(Module == undefined){
Module = await wx_func.createWasm(); // 创建modul实例
console.log("[wx] 初始化 wasm 模块!");
}
try{
if(req.file){
var buffer = req.file.buffer; // 视频流
var decodekey = req.query.decodekey; // 视频buffer
var local_path = "wx_video/tmp/".concat(decodekey).concat(".mp4");
console.log("[wx] 获取到的 decodekey:", decodekey,);
wx_func.p.decryptor = new Module["WxIsaac64"](decodekey);
wx_func.p.decryptor.generate(131072);
var video_res = await wx_tool.main1(local_path, buffer, decodekey, wx_func.p.decryptor_array);
wx_func.p.decryptor.delete();
console.log("[wx] ", video_res);
res.send(video_res);
}else{
res.send({"status": 500, "msg": "未识别文件"});
}
}catch(e){
console.log(e);
res.send("[wx] decode error");
}
});
// 测试版
app.post("/wx/decode1", upload.single('file'), async (req,res) =>{
if(Module == undefined){
Module = await wx_func.createWasm(); // 创建modul实例
console.log("[wx] 初始化 wasm 模块!");
}
try{
var buffer = req.file.buffer; // 视频流
console.log(buffer);
var decodekey = req.query.decodekey; // 视频buffer
var local_path = "wx_video/tmp/".concat(decodekey).concat(".mp4");
console.log("[wx] 获取到的 decodekey:", decodekey,);
wx_func.p.decryptor = new Module["WxIsaac64"](decodekey);
wx_func.p.decryptor.generate(131072);
const video_res = await wx_tool.main2(local_path, buffer, decodekey, wx_func.p.decryptor_array);
wx_func.p.decryptor.delete();
// 将Uint8Array转换为Buffer
const new_buffer = Buffer.from(video_res);
// 设置响应类型为二进制
res.setHeader('Content-Type', 'application/octet-stream');
// 发送Buffer数据
res.send(new_buffer);
}catch(e){
console.log(e);
res.send("[wx] decode error");
}
});
app.post("/xhs/get_comment", function(req, res){
try{
var a1 = req.body["a1"];
var xs = req.body["xs"];
var xt = req.body["xt"];
var result = xhs.getCommon(a1, xs, xt);
// console.log(result);
res.send(result);
// res.send(window.code);
// console.log(window.code);
// console.log(a);
console.log("[xhs-comment] 请求成功");
}catch(e){
console.log(e);
res.send("[xhs-comment] verify fp error");
}
// res.send(result.toString());
});
app.listen(3000, ()=>{
console.log("开启服务,端口3000", new Date().toString());
})

1154
douyin/_ac_signature.js
File diff suppressed because it is too large
View File

267
hnw/hn.js

@ -0,0 +1,267 @@
var w = 4294967296; // 先固定
var M = r2(0,0,false);
function mul_(v0, v1, v2, v3){
let i32_v0 = new Int32Array(8);
i32_v0[0] = v0;
let i64_v0 = new BigInt64Array(i32_v0.buffer)[0];
// console.log(i64_v0)
let i32_v1 = new Int32Array(8);
i32_v1[0] = v1;
let i64_v1 = new BigInt64Array(i32_v1.buffer)[0];
let i32_v2 = new Int32Array(8);
i32_v2[0] = v2;
let i64_v2 = new BigInt64Array(i32_v2.buffer)[0];
let i32_v3 = new Int32Array(8);
i32_v3[0] = v3;
let i64_v3 = new BigInt64Array(i32_v3.buffer)[0];
let i64_const = 32n;
// shl、or、mul操作
let tmp = (i64_v0 | (i64_v1 << i64_const)) * (i64_v2 | (i64_v3 << i64_const));
// console.log(Number(tmp), tmp)
// global0 shr_s
let get_length = Number(tmp >> i64_const);
let res = Number(tmp) >> 32;
// console.log(res, get_length);
return {mul: res, get_length: get_length}
}
function div_u_(v0, v1, v2, v3){
let i32_v0 = new Int32Array(8);
i32_v0[0] = v0;
let i64_v0 = new BigInt64Array(i32_v0.buffer)[0];
// console.log(i64_v0)
let i32_v1 = new Int32Array(8);
i32_v1[0] = v1;
let i64_v1 = new BigInt64Array(i32_v1.buffer)[0];
// console.log(i64_v1)
let i32_v2 = new Int32Array(8);
i32_v2[0] = v2;
let i64_v2 = new BigInt64Array(i32_v2.buffer)[0];
let i32_v3 = new Int32Array(8);
i32_v3[0] = v3;
let i64_v3 = new BigInt64Array(i32_v3.buffer)[0];
let i64_const = 32n;
// let u32_max = 0xFFFFFFFF;
// shl、or、div操作
let tmp = ((i64_v0 | (i64_v1 << i64_const)) / (i64_v2 | (i64_v3 << i64_const)))
// console.log(Number(tmp))
// global0 shr_s
let get_length = Number(tmp >> i64_const);
let res = Number(tmp) >> 32;
// console.log(res, get_length);
return {div_u: res, get_length: get_length}
}
function randomInt (e, t) {
return Math.floor(Math.random() * (t - e + 1) + e)
}
function o(t) {
return !0 === (t && t.__isLong__)
}
function m(t, e) {
return "number" == typeof t ? l(t, e) : "string" == typeof t ? y(t, e) : d(t.low, t.high, "boolean" == typeof e ? e : t.unsigned)
}
function toUnsigned(obj) {
return obj.unsigned ? obj : d(obj.low, obj.high, !0)
}
function isZero(obj) {
return 0 === obj.high && 0 === obj.low
}
function r2(t, e, n) {
return {low:0 | t, high:0 | e, unsigned:!!n}
}
function d(t, e, n) {
return r2(t,e,n)
}
function eq(t, obj) {
return o(t) || (t = m(t)),
(obj.unsigned === t.unsigned || obj.high >>> 31 != 1 || t.high >>> 31 != 1) && (obj.high === t.high && obj.low === t.low)
}
function not(obj){
return d(~obj.low, ~obj.high, obj.unsigned);
}
function neg(obj) {
let k = {
"low": 1,
"high": 0,
"unsigned": false
}
return add(k, not(obj));
}
function l(t, e) {
return t < 0 ? l(-t, e).neg() : d(t % w | 0, t / w | 0, e)
}
function isNegative(obj){
return !obj.unsigned && obj.high < 0
}
function isOdd(obj) {
return 1 == (1 & obj.low)
}
function mul(t, obj) {
if (isZero(obj))
return M;
if (o(t) || (t = m(t))){
let mul$ = mul_(obj.low, obj.high, t.low, t.high);
return d(mul$["mul"], mul$["get_length"], obj.unsigned);
}
if (isZero(t))
return M;
if (eq(j, obj))
return t.isOdd() ? j : M;
if (eq(j, t))
return isOdd(obj) ? j : M;
if (isNegative(obj))
return t.isNegative() ? this.neg().mul(t.neg()) : this.neg().mul(t).neg();
if (t.isNegative())
return this.mul(t.neg()).neg();
if (this.lt(x) && t.lt(x))
return l(this.toNumber() * t.toNumber(), this.unsigned);
var e = obj.high >>> 16
, r = 65535 & obj.high
, f = obj.low >>> 16
, c = 65535 & obj.low
, h = t.high >>> 16
, v = 65535 & t.high
, y = t.low >>> 16
, w = 65535 & t.low
, _ = 0
, S = 0
, E = 0
, k = 0;
return E += (k += c * w) >>> 16,
S += (E += f * w) >>> 16,
E &= 65535,
S += (E += c * y) >>> 16,
_ += (S += r * w) >>> 16,
S &= 65535,
_ += (S += f * y) >>> 16,
S &= 65535,
_ += (S += c * v) >>> 16,
_ += e * w + r * y + f * v + c * h,
d((E &= 65535) << 16 | (k &= 65535), (_ &= 65535) << 16 | (S &= 65535), obj.unsigned)
}
function div(t, o){
let div_ = div_u_(o.low, o.high, t.low, t.high);
return o.unsigned || -2147483648 !== o.high || -1 !== t.low || -1 !== t.high ? d(div_["div_u"], div_["get_length"], o.unsigned) : o;
}
function sub(t, obj) {
return o(t) || (t = m(t)),
add(neg(t), obj)
}
function toInt(obj) {
return obj.unsigned ? obj.low >>> 0 : obj.low
}
function toS(t, obj){
for (var r = l(Math.pow(t, 6), obj.unsigned), o = obj, f = ""; ; ) {
var c = div(r, o)
h = (toInt(sub(mul(r, c), o)) >>> 0).toString(t),
h = (toInt(sub(mul(r, c), o)) >>> 0).toString(t);
if (isZero(o = c))
return h + f;
for (; h.length < 6; )
h = "0" + h;
f = "" + h + f
}
}
function add(t, obj) {
o(t) || (t = m(t));
var e = obj.high >>> 16
, n = 65535 & obj.high
, r = obj.low >>> 16
, f = 65535 & obj.low
, c = t.high >>> 16
, h = 65535 & t.high
, l = t.low >>> 16
, v = 0
, y = 0
, w = 0
, _ = 0;
return w += (_ += f + (65535 & t.low)) >>> 16,
y += (w += r + l) >>> 16,
v += (y += n + h) >>> 16,
v += e + c,
d((w &= 65535) << 16 | (_ &= 65535), (v &= 65535) << 16 | (y &= 65535), obj.unsigned)
}
function y(t, e, n) {
var p;
for (var r = l(Math.pow(n, 8)), o = M, i = 0; i < t.length; i += 8) {
var f = Math.min(8, t.length - i)
, c = parseInt(t.substring(i, i + f), n);
if (f < 8) {
var h = l(Math.pow(n, f));
o = add(l(c), mul(h, o));
} else{
o = add(l(c), mul(r, o));
}
}
return o.unsigned = e,
o
}
function getS(key){
return toS(10, toUnsigned(y(key, !0, 16)));
}
module.exports = {
getS
}

14017
kuaishou/ks_slid.js
File diff suppressed because it is too large
View File

807
package-lock.json

@ -0,0 +1,807 @@
{
"name": "nodejs-param",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"dependencies": {
"body-parser": "^1.20.2",
"express": "^4.19.2",
"multer": "^1.4.5-lts.1"
}
},
"node_modules/accepts": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
"integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
"dependencies": {
"mime-types": "~2.1.34",
"negotiator": "0.6.3"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/append-field": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
"integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw=="
},
"node_modules/array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
},
"node_modules/body-parser": {
"version": "1.20.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
"integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
"dependencies": {
"bytes": "3.1.2",
"content-type": "~1.0.5",
"debug": "2.6.9",
"depd": "2.0.0",
"destroy": "1.2.0",
"http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"on-finished": "2.4.1",
"qs": "6.11.0",
"raw-body": "2.5.2",
"type-is": "~1.6.18",
"unpipe": "1.0.0"
},
"engines": {
"node": ">= 0.8",
"npm": "1.2.8000 || >= 1.4.16"
}
},
"node_modules/buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
},
"node_modules/busboy": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
"integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
"dependencies": {
"streamsearch": "^1.1.0"
},
"engines": {
"node": ">=10.16.0"
}
},
"node_modules/bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/call-bind": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
"integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
"dependencies": {
"function-bind": "^1.1.2",
"get-intrinsic": "^1.2.1",
"set-function-length": "^1.1.1"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/concat-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"engines": [
"node >= 0.8"
],
"dependencies": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"typedarray": "^0.0.6"
}
},
"node_modules/content-disposition": {
"version": "0.5.4",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
"integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
"dependencies": {
"safe-buffer": "5.2.1"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/content-type": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/cookie": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
"integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
},
"node_modules/core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
},
"node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dependencies": {
"ms": "2.0.0"
}
},
"node_modules/define-data-property": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
"integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
"dependencies": {
"get-intrinsic": "^1.2.1",
"gopd": "^1.0.1",
"has-property-descriptors": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/destroy": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
"engines": {
"node": ">= 0.8",
"npm": "1.2.8000 || >= 1.4.16"
}
},
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
},
"node_modules/etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/express": {
"version": "4.19.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
"integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
"body-parser": "1.20.2",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
"cookie": "0.6.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"finalhandler": "1.2.0",
"fresh": "0.5.2",
"http-errors": "2.0.0",
"merge-descriptors": "1.0.1",
"methods": "~1.1.2",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
"path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.7",
"qs": "6.11.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
"send": "0.18.0",
"serve-static": "1.15.0",
"setprototypeof": "1.2.0",
"statuses": "2.0.1",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
},
"engines": {
"node": ">= 0.10.0"
}
},
"node_modules/finalhandler": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
"integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
"dependencies": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
"statuses": "2.0.1",
"unpipe": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-intrinsic": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
"integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
"dependencies": {
"function-bind": "^1.1.2",
"has-proto": "^1.0.1",
"has-symbols": "^1.0.3",
"hasown": "^2.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/gopd": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
"integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
"dependencies": {
"get-intrinsic": "^1.1.3"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-property-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
"integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
"dependencies": {
"get-intrinsic": "^1.2.2"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
"integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-symbols": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/hasown": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
"integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
"dependencies": {
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/http-errors": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"dependencies": {
"depd": "2.0.0",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
"statuses": "2.0.1",
"toidentifier": "1.0.1"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
"engines": {
"node": ">= 0.10"
}
},
"node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
},
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
},
"node_modules/methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
"bin": {
"mime": "cli.js"
},
"engines": {
"node": ">=4"
}
},
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/minimist": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/mkdirp": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
"dependencies": {
"minimist": "^1.2.6"
},
"bin": {
"mkdirp": "bin/cmd.js"
}
},
"node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/multer": {
"version": "1.4.5-lts.1",
"resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz",
"integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==",
"dependencies": {
"append-field": "^1.0.0",
"busboy": "^1.0.0",
"concat-stream": "^1.5.2",
"mkdirp": "^0.5.4",
"object-assign": "^4.1.1",
"type-is": "^1.6.4",
"xtend": "^4.0.0"
},
"engines": {
"node": ">= 6.0.0"
}
},
"node_modules/negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/object-inspect": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
"integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/on-finished": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
"dependencies": {
"ee-first": "1.1.1"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
},
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
},
"node_modules/proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
"dependencies": {
"forwarded": "0.2.0",
"ipaddr.js": "1.9.1"
},
"engines": {
"node": ">= 0.10"
}
},
"node_modules/qs": {
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
"dependencies": {
"side-channel": "^1.0.4"
},
"engines": {
"node": ">=0.6"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/raw-body": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
"integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
"dependencies": {
"bytes": "3.1.2",
"http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"node_modules/readable-stream/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
]
},
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/send": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
"integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
"dependencies": {
"debug": "2.6.9",
"depd": "2.0.0",
"destroy": "1.2.0",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"fresh": "0.5.2",
"http-errors": "2.0.0",
"mime": "1.6.0",
"ms": "2.1.3",
"on-finished": "2.4.1",
"range-parser": "~1.2.1",
"statuses": "2.0.1"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/send/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/serve-static": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
"integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
"dependencies": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
"send": "0.18.0"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/set-function-length": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
"integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
"dependencies": {
"define-data-property": "^1.1.1",
"get-intrinsic": "^1.2.1",
"gopd": "^1.0.1",
"has-property-descriptors": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
"node_modules/side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"dependencies": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
"object-inspect": "^1.9.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/statuses": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/streamsearch": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
"integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/string_decoder/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"node_modules/toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
"engines": {
"node": ">=0.6"
}
},
"node_modules/type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
"dependencies": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
},
"node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
},
"node_modules/utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
"engines": {
"node": ">= 0.4.0"
}
},
"node_modules/vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"engines": {
"node": ">=0.4"
}
}
}
}

7
package.json

@ -0,0 +1,7 @@
{
"dependencies": {
"body-parser": "^1.20.2",
"express": "^4.19.2",
"multer": "^1.4.5-lts.1"
}
}

135
wx_video/tools.js

@ -0,0 +1,135 @@
const fs = require('fs');
const url = "https://crawl-files.pontoaplus.com/upload";
//const url = "http://172.18.1.113:8080/upload"
/**
* 视频流解密操作
**/
function I(t, e, decryptor_array) {
for (var r = new Uint8Array(t), n = 0; n < t.byteLength && e + n < decryptor_array.length; n++)
r[n] ^= decryptor_array[n];
return r
}
function toArrayBuffer(buffer) {
const arrayBuffer = new ArrayBuffer(buffer.length);
const view = new Uint8Array(arrayBuffer);
for (let i = 0; i < buffer.length; i++) {
view[i] = buffer[i];
}
return arrayBuffer;
}
/**
*
* 视频下载
**/
async function download(url, decode, decryptor_array){
let response = await fetch(url, {
headers:{
"Cache-Control": "no-cache"
}
});
if(response.status == 200){
let arrayBuffer = await response["arrayBuffer"]();
let m = I(arrayBuffer, 0, decryptor_array); // 进行计算
return m;
}
console.log("下载失败:", decode, ":", url);
return undefined;
}
/**
* 视频上传
**/
async function upload(arrayBuffer, file_name){
const formData = new FormData();
const videoBlob = new Blob([arrayBuffer], { type: 'video/mp4' });
formData.append('file', videoBlob, file_name);
try{
let response = await fetch(url, {
method: 'POST',
body: formData,
timeout: 20000 // 设置超时
});
if(response.status == 200){
let data = await response.text();
return data;
}
console.log("[wx] 视频上传失败")
}catch(e){
console.log("[wx] 视频上传异常", e)
}
return undefined;
}
/**
* 保存文件到本地
**/
function saveUint8ArrayToFile(uint8Array, filePath) {
const buffer = Buffer.from(uint8Array);
fs.writeFile(filePath, buffer, error => {
if (error) {
console.error('Failed to save file:', error);
} else {
console.log('File saved successfully.');
}
});
return filePath;
}
/**
*
* 视频整体处理流程
**/
async function main(local_path, url, decode, decryptor_array){
console.log(url);
let arrayBuffer = await download(url, decode, decryptor_array);
let file_name = decode.concat(".mp4");
let upload_file = arrayBuffer !== undefined ? await upload(arrayBuffer, file_name):undefined;
let filePath = upload_file !== undefined ? upload_file:saveUint8ArrayToFile(arrayBuffer, local_path);
return filePath == undefined ? {"status": 500, "filePath": filePath, "msg": "下载失败"}:
(filePath != local_path ? {"status": 200, "filePath": filePath, "msg": "上传成功"}:{"status": 203, "filePath": filePath, "msg": "上传失败"});
}
async function main1(local_path, buffer, decode, decryptor_array){
let arrayBuffer = toArrayBuffer(buffer);
let file_name = decode.concat(".mp4");
let m = I(arrayBuffer, 0, decryptor_array); // 进行计算
let upload_file = m !== undefined ? await upload(m, file_name):undefined;
let filePath = upload_file !== undefined ? upload_file:saveUint8ArrayToFile(m, local_path);
return filePath == undefined ? {"status": 500, "filePath": filePath, "msg": "视频流传输失败"}:
(filePath != local_path ? {"status": 200, "filePath": filePath, "msg": "上传成功"}:{"status": 203, "filePath": filePath, "msg": "上传失败"});
}
async function main2(local_path, buffer, decode, decryptor_array){
let arrayBuffer = toArrayBuffer(buffer);
let m = I(arrayBuffer, 0, decryptor_array); // 进行计算
return m;
}
module.exports = {main, main1, main2};

4709
wx_video/wasm_video_decode.js
File diff suppressed because it is too large
View File

BIN
wx_video/wasm_video_decode.wasm

838
xhs/xs-commen.js

@ -0,0 +1,838 @@
function encodeUtf8(e) {
for (var t = 55, r = 28, n = 25, o = 74, i = 229, a = 119, u = 193, s = 90, c = 259, l = 280, p = 456, f = 422, d = 185, g = 77, A = 355, h = 1195, v = {
ndbxf: function(e, t) {
return e === t
},
dlvDl: function(e, t) {
return e + t
},
OgZjF: function(e, t, r) {
return e(t, r)
}
},
y = encodeURIComponent(e),
m = [], _ = 0; _ < y[T(-t, r)]; _++) {
var b = y[T(-n, -82)](_);
if (v[T(o, i)](b, "%")) {
var w = y[T(-n, -126)](_ + 1) + y[T(-n, -a)](v[T(279, u)](_, 2))
, x = v[T(s, c)](parseInt, w, 16);
m[T(l, p)](x),
_ += 2
} else
m[T(l, f)](b[T(d, g) + T(228, A)](0))
}
function T(e, t) {
return a0_0x5bf4a2(e - -h, t)
}
return m
}
function a0_0x5bf4a2(e, t) {
return a0_0x4e04(e - 975, t)
}
a0_0x4e04 = function(e, t) {
return r[e -= 157]
}
function tripletToBase64(e) {
var t = 438
, r = 305
, n = 389
, o = 254
, i = 171
, a = 355
, u = 221
, s = 441
, c = 306
, l = 418
, p = 438
, f = 604
, d = 389
, g = 9
, A = 355
, h = 338
, v = 171
, y = 319
, m = 230
, _ = 137
, b = 69
, w = 1060
, x = {};
function T(e, t) {
return a0_0x5bf4a2(e - -w, t)
}
x[T(441, 298)] = function(e, t) {
return e + t
}
,
x[T(t, r)] = function(e, t) {
return e + t
}
,
x[T(n, o)] = function(e, t) {
return e & t
}
,
x[T(i, 27)] = function(e, t) {
return e >> t
}
,
x[T(a, u)] = function(e, t) {
return e & t
}
,
x[T(137, 45)] = function(e, t) {
return e & t
}
;
var E = x;
return E[T(s, c)](E[T(s, l)](E[T(p, f)](lookup[E[T(d, 529)](E[T(i, g)](e, 18), 63)], lookup[E[T(A, h)](E[T(v, y)](e, 12), 63)]), lookup[E[T(A, m)](e >> 6, 63)]), lookup[E[T(_, b)](e, 63)])
}
function encodeChunk(e, t, r) {
var n, o = 1203, i = 1278, a = 1291, u = 1130, s = 1214, c = 1327, l = 1429, p = 1431, f = 1320, d = 1439, g = 1181, A = 1151, h = 1478, v = 36, y = {
pWkTP: function(e, t) {
return e < t
},
HahEp: function(e, t) {
return e + t
},
xvACd: function(e, t) {
return e & t
},
Zymkz: function(e, t) {
return e << t
},
QCmLq: function(e, t) {
return e & t
},
Qdnej: function(e, t) {
return e + t
},
MMCMk: function(e, t) {
return e(t)
}
}, m = [];
function _(e, t) {
return a0_0x5bf4a2(t - -v, e)
}
for (var b = t; y[_(1385, o)](b, r); b += 3)
n = y[_(i, a)](y[_(u, s)](y[_(c, l)](e[b], 16), 16711680), y[_(1530, p)](e[y[_(f, 1291)](b, 1)] << 8, 65280)) + (255 & e[y[_(1479, 1469)](b, 2)]),
m[_(1490, d)](y[_(g, A)](tripletToBase64, n));
return m[_(h, 1437)]("")
}
function b64Encode(e) {
var t = 1063
, r = 1211
, n = 1255
, o = 1145
, i = 855
, a = 1021
, u = 1378
, s = 1313
, c = 1227
, l = 1353
, p = 1305
, f = 1294
, d = 1146
, g = 1246
, A = 1433
, h = 1291
, v = 1265
, y = 1152
, m = 1469
, _ = 1332
, b = 1199
, w = 1353
, x = 1186
, T = 1118
, E = 1296
, S = 1146
, k = 1109
, I = 1078
, B = 1189
, C = 1351
, O = 1300
, M = 1244
, L = 1353
, D = 1125
, N = 1465
, R = 1283
, j = 1035
, F = 1035
, P = 884
, W = {
QZCeF: Z(1139, 1245) + Z(t, r) + "1",
tucXA: function(e, t) {
return e === t
},
hhpmz: function(e, t) {
return e - t
},
MIBDd: function(e, t) {
return e + t
},
LpEPK: function(e, t) {
return e & t
},
wDmFl: function(e, t) {
return e << t
},
BKlTG: function(e, t) {
return e + t
},
mVqpt: function(e, t) {
return e - t
},
ivzJu: function(e, t) {
return e - t
},
wrQPO: function(e, t) {
return e + t
},
mzbVd: function(e, t) {
return e >> t
},
pMnQF: function(e, t) {
return e & t
},
KVFmX: function(e, t) {
return e % t
},
Izlkq: function(e, t) {
return e < t
},
jlpEd: function(e, t, r, n) {
return e(t, r, n)
},
nJCOz: function(e, t) {
return e > t
},
aLEDD: function(e, t) {
return e + t
}
}
, U = ['3', '6', '4', '7', '2', '5', '0', '1']
, z = 0;
function Z(e, t) {
return a0_0x5bf4a2(t - -122, e)
}
for (; ; ) {
switch (U[z++]) {
case "0":
W[Z(i, a)](G, 1) ? (V = e[W[Z(u, s)](K, 1)],
Y[Z(c, l)](W[Z(p, f)](lookup[V >> 2], lookup[W[Z(1167, d)](W[Z(1115, g)](V, 4), 63)]) + "==")) : 2 === G && (V = W[Z(A, h)](e[W[Z(v, y)](K, 2)] << 8, e[W[Z(m, _)](K, 1)]),
Y[Z(b, w)](W[Z(1118, x)](lookup[W[Z(951, T)](V, 10)], lookup[W[Z(E, S)](V >> 4, 63)]) + lookup[W[Z(k, I)](W[Z(B, g)](V, 2), 63)] + "="));
continue;
case "1":
return Y[Z(1263, C)]("");
case "2":
var H = 16383;
continue;
case "3":
var V;
continue;
case "4":
var G = W[Z(1378, O)](K, 3);
continue;
case "5":
for (var q = 0, Q = K - G; W[Z(1411, M)](q, Q); q += H)
Y[Z(1528, L)](W[Z(1169, D)](encodeChunk, e, q, W[Z(N, R)](W[Z(1018, j)](q, H), Q) ? Q : W[Z(951, F)](q, H)));
continue;
case "6":
var K = e[Z(P, 1018)];
continue;
case "7":
var Y = [];
continue
}
break
}
}
let lookup = [
"Z",
"m",
"s",
"e",
"r",
"b",
"B",
"o",
"H",
"Q",
"t",
"N",
"P",
"+",
"w",
"O",
"c",
"z",
"a",
"/",
"L",
"p",
"n",
"g",
"G",
"8",
"y",
"J",
"q",
"4",
"2",
"K",
"W",
"Y",
"j",
"0",
"D",
"S",
"f",
"d",
"i",
"k",
"x",
"3",
"V",
"T",
"1",
"6",
"I",
"l",
"U",
"A",
"F",
"M",
"9",
"7",
"h",
"E",
"C",
"v",
"u",
"R",
"X",
"5"
]
let r = [
"asStrin",
"6421023qDUTlG",
"GwcGK",
"rbzrd",
"ZmserbB",
"IuNbm",
"horPD",
"dlEti",
"length",
"defineP",
"fMQeE",
"tucXA",
"isBuffe",
"Csdwa",
"GMnXY",
"wXAzc",
"hECvuRX",
"rNCWZ",
"toStrin",
"Iqqni",
"gMCOT",
"mPqBk",
"njKvQ",
"iVrVM",
"BZDgY",
"aLEDD",
"zqlLt",
"A4NjFqY",
"qrstuvw",
"nlloK",
"XoRcW",
"PmRiF",
"gNPmw",
"qfKTl",
"size",
"hKqxo",
"call",
"ule",
"charAt",
"CVGZf",
"LApMt",
"GIOVd",
"FqzNC",
"BlYYJ",
"iveAI",
"0DSfdik",
"floor",
"AFspt",
"nUgYR",
"vwKJd",
"vvUDs",
"functio",
"QHyuq",
"MVAwP",
"getTime",
"MMCMk",
"sYpSd",
"navigat",
"lUAFM97",
"14166300GRKScn",
"_gg",
"PTckW",
"9828858gDvJWH",
"zQHLA",
"onGsF",
"jYLZN",
"LfzDW",
"fXyCY",
"pMnQF",
"KXVXf",
"tYPHy",
"xjGie",
"Bvk6/7=",
"default",
"q42KWYj",
"uLaUm",
"qQEvx",
"WhtXq",
"bytesTo",
"pow",
"JfMBq",
"asBytes",
"CSkFe",
"oVSCj",
"zxlnG",
"YfWLP",
"isArray",
"vKozY",
"oGIPg",
"_hh",
"alert",
"WGYNO",
"qKVdC",
"XIyHu",
"35gJWoke",
"qHhcm",
"JAJSl",
"SiQnD",
"rGcjO",
"iAdEk",
"hasOwnP",
"jkBcl",
"qRUYU",
"LmgEU",
"indexOf",
"jklmnop",
"oBytes",
"pWkTP",
"mzbVd",
"ZConF",
"SybVD",
"giCxm",
"DKJgG",
"0XTdDgM",
"ZKOQP",
"jlpEd",
"atLE",
"HInoH",
"xvACd",
"UUpXV",
"xZKow",
"iiDsP",
"zDWFE",
"WDznH",
"1510EVYxDf",
"encodin",
"_isBuff",
"ewsiq",
"nypTe",
"JGiLO",
"JPvwn",
"dLkrl",
"GVKTc",
"maGnI",
" argume",
"QZCeF",
"LpEPK",
"ndbxf",
"HIJKLMN",
"zpXoh",
"yzFgN",
"LQzcw",
"mVqpt",
"EsNua",
"fMLzk",
"[object",
"JzsgP",
"exports",
"sUVZX",
"random",
"a2r1ZQo",
"iXIuP",
"JXCdt",
"OgZjF",
"ZyrdF",
"ZPSxl",
"cVte9UJ",
"gsXZX",
"AyuWg",
"jpgNW",
"fhBCN",
"7|4",
"undefin",
"iEbrz",
"ijPny",
"vQLRG",
"wOcza/L",
"0|9|6",
"roANW",
"gHrQO",
"lImSF",
"__esMod",
"xjwrk",
"yrsxt",
"split",
"ble",
"wrQPO",
"ckmlP",
"stringT",
"IIbJk",
"wQkPs",
"substr",
"Hex",
"FcvYN",
"rVTGu",
"CJhpg",
"GPKgf",
"VWXYZab",
"GEFbL",
"lnMXU",
"ytRAA",
"sscMP",
"YYwTi",
"fdXbs",
"pBIon",
"HahEp",
"epseL",
"FFGBs",
"dGTfa",
"oHQtNP+",
"nt ",
"|2|5|0|",
"1|8|2|4",
"ofNul",
"roperty",
"ctor",
"configu",
"FUmrx",
"Words",
"Bytes",
"3|6|5|1",
"zNDxq",
"MziVH",
"Illegal",
"PjFzZ",
"wFbRI",
"AgtoL",
"ulmju",
"eMMmS",
"pBQVD",
"OXCLS",
"pZJmk",
"JLuYf",
"pngG8yJ",
"test",
"5|2|0|4",
"endian",
"binary",
"vnWPy",
"9082503wDHZUe",
"fpNFL",
"ExLNh",
"BmKDO",
"slice",
"Izlkq",
"3|6|4|7",
"wDmFl",
"WzyGE",
"lAwpi",
"kEjFq",
"WMgoB",
"enumera",
"JiFfc",
"u5wPHsO",
"YUgHM",
"|2|8|0|",
"ynYJU",
"dKjoH",
"charCod",
"ABCDEFG",
"kmWtQ",
"AxAhe",
"_ii",
"fpHmu",
"FlrTz",
"get",
"gRzQm",
"wYjQX",
"npUFn",
"prototy",
"766Zmjnab",
"|3|5|7|",
"hPODe",
"bHRnl",
"string",
"vsoyz",
"JqpwC",
"teXIb",
"RiLUl",
"rTLAS",
"ize",
"constru",
"iamspam",
"nJCOz",
"zNReR",
"guKIL",
"JOWCA",
"xyz0123",
"nSULH",
"oFlMR",
" Array]",
"BKlTG",
"bKzCF",
"QEjqG",
"MIBDd",
"lTzWN",
"456789+",
"rable",
"TWqcu",
"AbucO",
"KVFmX",
"eAt",
"yRnhISG",
"_ff",
"VTbZO",
"Ebvdl",
"xbNCz",
"XZJYH",
"aDKZQ",
"PImcW",
"qbsfA",
"XELvr",
"fromCha",
"hhpmz",
"KblCWi+",
"bVwGo",
"userAge",
"replace",
"x3VT16I",
"gJOmQ",
"xkufh",
"1423755YoONuB",
"OcKoU",
"UwDmp",
" Object",
"tRIaN",
"utf8",
"fOtaQ",
"String",
"pPTeX",
"FtpSe",
"HLigX",
"ivzJu",
"uyiOy",
"BWpCW",
"ULPBW",
"_digest",
"kptIO",
"LpfE8xz",
"ayXCW",
"readFlo",
"FsSjC",
"stringi",
"Zymkz",
"bin",
"QCmLq",
"URzpu",
"bJXmh",
"|3|1",
"ZuXog",
"QWgdM",
"join",
"dlvDl",
"push",
"_blocks",
"XyCSd",
"VvVIb",
"LjQYx",
"ajtxP",
"yWXJR",
"zCWHZ",
"rotl",
"ZyeCw",
"wordsTo",
"jnBeR",
"pAnrE",
"NdIIp",
"8lYxANC",
"XGsUl",
"rCode",
"pUeGA",
"zGNlp",
"cdefghi",
"wsVCK",
"IPplF",
"kUMTd",
"JHZDn",
"tkLYM",
"rXWku",
"wOKuD",
"701812dHtSeL",
"RhoIX",
"GfZNv",
"Qdnej",
"FjgPK",
"OPQRSTU"
]
var mcr = function(e) {
var t = 831
, r = 841
, n = 848
, o = 770
, i = 854
, a = 1024
, u = 667
, s = 820
, c = 773
, l = 850
, p = 973
, f = 872
, d = 753
, g = 824
, A = 868
, h = 857
, v = 1305
, y = 1283
, m = 1089
, _ = 1271
, b = 910
, w = 1003
, x = 1225
, T = 1296
, E = 1243
, S = 1353
, k = 1286
, I = 1379
, B = 1189
, C = 1363
, O = 1108
, M = 1042
, L = 1282
, D = 1262
, N = 1169
, R = 1154
, j = 442
, F = 579
, P = {};
P[U(768, 863)] = function(e, t) {
return e === t
}
,
P[U(t, r)] = U(n, 817),
P[U(672, 829)] = function(e, t) {
return e < t
}
,
P[U(o, i)] = function(e, t) {
return e ^ t
}
,
P[U(a, 921)] = function(e, t) {
return e ^ t
}
,
P[U(u, 672)] = function(e, t) {
return e < t
}
,
P[U(971, s)] = function(e, t) {
return e & t
}
,
P[U(c, 712)] = function(e, t) {
return e >>> t
}
,
P[U(978, l)] = function(e, t) {
return e & t
}
,
P[U(p, 868)] = function(e, t) {
return e ^ t
}
,
P[U(790, f)] = function(e, t) {
return e >>> t
}
,
P[U(d, 847)] = function(e, t) {
return e >>> t
}
;
var W = P;
function U(e, t) {
return a0_0x5bf4a2(t - -F, e)
}
for (var z, Z, H = 3988292384, V = 256, G = []; V--; G[V] = z >>> 0)
for (Z = 8,
z = V; Z--; )
z = W[U(g, l)](z, 1) ? W[U(1042, A)](W[U(h, f)](z, 1), H) : W[U(980, 847)](z, 1);
return function(e) {
function t(e, t) {
return U(e, t - j)
}
if (W[t(1196, v)]((0,
esm_typeof)(e), W[t(1183, y)])) {
for (var r = 0, n = -1; W[t(m, _)](r, e[t(b, w)]); ++r)
n = W[t(x, T)](G[W[t(1524, 1363)](255 & n, e[t(1233, E) + t(S, k)](r))], n >>> 8);
return W[t(I, 1363)](W[t(B, C)](n, -1), H)
}
for (r = 0,
n = -1; W[t(O, 1114)](r, e[t(M, 1003)]); ++r)
n = W[t(L, C)](G[W[t(1548, C)](W[t(1146, D)](n, 255), e[r])], W[t(N, R)](n, 8));
return W[t(1226, 1363)](n, -1) ^ H
}
}()
function esm_typeof(e){
return typeof e
}
// console.log(mcr(
// '1687697360034XYW_eyJzaWduU3ZuIjoiNTEiLCJzaWduVHlwZSI6IngxIiwiYXBwSWQiOiJ4aHMtcGMtd2ViIiwic2lnblZlcnNpb24iOiIxIiwicGF5bG9hZCI6IjU2OGRhNTM2Yzc4ODY4NzU2NDBlN2RhY2NhMzIyZWFlZGYyODQ0N2MxZDcyNWMwODRkN2QxOWMyNDE5MTY3NWY1NGI4OTM3OTQzZmZjNjIzNDFmNTkwOWZhYTlkNzc2Y2M5ZTNiZmRhMWZhYTFlYjkwZDc0YWEzMWI1NGM3MmNkMGQ3NGFhMzFiNTRjNzJjZGFjNDg5YjlkYThjZTVlNDhmNGFmYjlhY2ZjM2VhMjZmZTBiMjY2YTZiNGNjM2NiNWYyZDRlM2RlNzA0OTQ4YzE4OWUzZWQ5OTliZjgwMjM0MDIxYzgyMTQyMzI2MjlkYWYxY2VmMjlhZTA5NWU2OTZjMzkwNmQ0NjIxYzZlZTUzNjgxMDg4OGNlZDEwZWM3NzBiMzdkZmQ1Zjk1MTkzYzQ5YmZjNzhmNzhlYzYxOGNhZmVjYjk3ZmI2MTk2MmE3ZDVhYjgzYjgyYmFhODZhOWJkNWMyNTI3NjE3NTgxOGU2ZDU1ZjI4OTRkMzZmYjMwMSJ9I38rHdgsjopgIvesdVwgIC+oIELmBZ5e3VwXLgFTIxS3bqwErFeexd0ekncAzMFYnqthIhJeSfMDKutRI3KsYorWHPtGrbV0P9WfIi/eWc6eYqtyQApPI37ekmR1QL+5Ii6sdnosjoT5yqtXqqwYrBqoIx++GDi/sVtkIx0sxuwr4qtiIkrwIi/skcc3ICLfI3Oe0utl20DZsL5eDSJejVw0IieexVwL+Ptorqth+ZKexY8oICR1IErSgVwBGqtRIxE/eDdeVuwjIC0s1qtnIkpKIkRLee3eDoq6cU5sYqtzaDdefzq1zd/eWWF+IxoefutpIEoefqt9bmF9OoVGIvgeiqtu/YgexjqmIkLwIiDPGamjIvhm+I88IizuBVwlIvGF4eveDS7e1utCIC7sDc=='
// ))
function getCommon(a1,xs,xt) {
let f = "I38rHdgsjopgIvesdVwgIC+oIELmBZ5e3VwXLgFTIxS3bqwErFeexd0ekncAzMFYnqthIhJeD9MDKutRI3KsYorWHPtGrbV0P9WfIi/eWc6eYqtyQApPI37ekmR1QL+5Ii6sdnoeSfqYHqwl2qwYmf4OIClbOrm+sVtkIxdsxuwr4qtiIkrOIi/skcc3ICLdI3Oe0utl2ADmsLveDSKsSPw5IEvsiutJOqw8ButhNcKs6WqBIvSfIEr1gVw8Jqw7I3zceS5eVutkIvNs1PtyIkYKIimrzf7sYfGdZf0ejutmLLAsjZ47zfdeSDFwIxOeWPtGIheefPt7oYhMNBLsI30eiVtlnYvexfYPIi+LIES+N94AICPZtFrnIEQYgPtMI3Tu4o/sDLds6PwkIC7eSd7sffIeIhvsxLmC"
let ee = {
"s0":5,
"s1":"",
"x0":"1",
"x1":"3.6.8",
"x2":"Windows",
"x3":"xhs-pc-web",
"x4":"3.11.3",
"x5":a1,
"x6":xt,
"x7":xs,
"x8":f,
"x9":mcr((xt+'').concat(xs).concat(f)),
"x10":10
}
return b64Encode(encodeUtf8(JSON.stringify(ee)))
}
// data = getCommon("190be5ce563w91ew2bf8len812hfndyeklahbn52530000191674","XYW_eyJzaWduU3ZuIjoiNTEiLCJzaWduVHlwZSI6IngxIiwiYXBwSWQiOiJ4aHMtcGMtd2ViIiwic2lnblZlcnNpb24iOiIxIiwicGF5bG9hZCI6IjU1ZjExYjAwNTM5OGNiNmM3MDcyMGRiOTNiMjkzM2FkNWI0OWU2Yzc1YTMyMWIzZTA1MzYxYmY0N2UxYmQ5ZjUxMmUxMTcyODBkNTUzMzQxYTNkMWI3ZjRmZGNiYjIxNmM5ZTNiZmRhMWZhYTFlYjkwZDc0YWEzMWI1NGM3MmNkMGQ3NGFhMzFiNTRjNzJjZGFjNDg5YjlkYThjZTVlNDhmNGFmYjlhY2ZjM2VhMjZmZTBiMjY2YTZiNGNjM2NiNWYwOGJkNDA3OGY2YWQxZjdjNzM2YWU5MWM5OWIwMWNjMDgxMjk1OGRkYmU5ZDdlYWU1MjZjOWYzNzA0OTdiYjM5OTA4Yzc2Mjc0NDM5OTc1Njk2ZmRkMmU1ZWFiN2ExZDVmMjMyZjc2MWMzYWYzMjU4YzhmMDdjOTQyN2E2MGQ1NDUyMzMzMjU0M2NhOGVjY2JkOTYyMTk5ZmYyYzFiNDQ2OTM1NGVlOGUzNzU4MGMyZjg4MTFlZTFkZjVmY2M1MSJ9","1721197324979")
// console.log(data)
module.exports = {
getCommon
}
Loading…
Cancel
Save