mirror of
https://github.com/pysunday/rs-reverse.git
synced 2025-04-12 11:56:55 +08:00
feat: add uuid、numToNumber4 function, add bignum list
This commit is contained in:
parent
cc899698f8
commit
852a6478b5
@ -5,6 +5,12 @@ const _get = require('lodash/get');
|
||||
const cache = {};
|
||||
|
||||
class GlobalVarible {
|
||||
get bignum() {
|
||||
return cache.bignum;
|
||||
}
|
||||
get utils() {
|
||||
return cache.utils;
|
||||
}
|
||||
get cp0() {
|
||||
return cache.cp0;
|
||||
}
|
||||
|
13
src/handler/parser/bignum.js
Normal file
13
src/handler/parser/bignum.js
Normal file
@ -0,0 +1,13 @@
|
||||
const gv = require('@src/handler/globalVarible');
|
||||
|
||||
exports.init = function() {
|
||||
const arr = [];
|
||||
for (let i = 0; i < gv.cp2[30]; i++) {
|
||||
let item = i;
|
||||
for (_$iv = 0; _$iv < gv.cp2[52]; _$iv++) {
|
||||
item = item & 1 ? gv.cp2[167] ^ item >>> 1 : item >>> 1;
|
||||
}
|
||||
arr[i] = item;
|
||||
}
|
||||
gv.setAttr('bignum', arr);
|
||||
}
|
@ -6,4 +6,6 @@ exports.encrypt = require('./encrypt');
|
||||
exports.decrypt = require('./decrypt');
|
||||
exports.extrace = require('./extrace');
|
||||
exports.decode = require('./decode');
|
||||
exports.uuid = require('./uuid');
|
||||
exports.numToNumarr4 = require('./numToNumarr4');
|
||||
|
||||
|
12
src/handler/parser/common/numToNumarr4.js
Normal file
12
src/handler/parser/common/numToNumarr4.js
Normal file
@ -0,0 +1,12 @@
|
||||
// 将数字转换为4位数字数组
|
||||
const gv = require('@src/handler/globalVarible');
|
||||
|
||||
module.exports = function (num) {
|
||||
if (typeof num !== 'number') num = 0;
|
||||
return [
|
||||
num >> gv.cp2[4] & gv.cp2[34],
|
||||
num >> gv.cp2[2] & gv.cp2[34],
|
||||
num >> gv.cp2[52] & gv.cp2[34],
|
||||
num & gv.cp2[34]
|
||||
];
|
||||
}
|
16
src/handler/parser/common/uuid.js
Normal file
16
src/handler/parser/common/uuid.js
Normal file
@ -0,0 +1,16 @@
|
||||
// 处理字符串或者数字数字返回唯一标识
|
||||
const gv = require('@src/handler/globalVarible');
|
||||
|
||||
function str2code(str) {
|
||||
str = unescape(encodeURIComponent(str));
|
||||
return str.split('').map(it => it.charCodeAt())
|
||||
}
|
||||
|
||||
module.exports = function (numarr) {
|
||||
if (typeof numarr === 'string') numarr = str2code(numarr);
|
||||
let val = 0 ^ gv.cp2[41];
|
||||
for (let i = 0; i < numarr.length; ) {
|
||||
val = val >>> gv.cp2[52] ^ gv.bignum[(val ^ numarr[i++]) & gv.cp2[34]];
|
||||
}
|
||||
return (val ^ gv.cp2[41]) >>> 0;
|
||||
}
|
@ -2,10 +2,12 @@ const gv = require('../globalVarible');
|
||||
const common = require('./common');
|
||||
|
||||
function init(ts) {
|
||||
gv.setAttr('utils', common);
|
||||
gv.setAttr('ts', ts);
|
||||
require('./r2mka').init();
|
||||
require('./tscp').init();
|
||||
require('./tscd').init();
|
||||
require('./bignum').init();
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
@ -26,6 +26,7 @@ const valueMap = {
|
||||
'parseFloat': swap(gv.cp0_96(5, 18)) + hexnum(gv.cp0_96(8, 30)),
|
||||
'11.678': hexnum(gv.cp0_96(7, 17)),
|
||||
'1.234': swap(gv.cp0_96(8, 36)),
|
||||
'captureStackTrace': main(gv.cp0_96(7, 63))[0],
|
||||
}
|
||||
|
||||
test('test cp0_96', () => {
|
||||
|
@ -1,6 +1,18 @@
|
||||
const paths = require('@utils/paths');
|
||||
const fs = require('fs');
|
||||
const { main, swap, hexnum, combine4, decrypt, encrypt, extrace, init, decode } = require('../src/handler/parser/');
|
||||
const {
|
||||
init,
|
||||
main,
|
||||
swap,
|
||||
hexnum,
|
||||
combine4,
|
||||
decrypt,
|
||||
encrypt,
|
||||
extrace,
|
||||
decode,
|
||||
uuid,
|
||||
numToNumarr4,
|
||||
} = require('../src/handler/parser/');
|
||||
const tsFullPath = paths.exampleResolve('codes', '1-$_ts-full.json');
|
||||
init(JSON.parse(fs.readFileSync(tsFullPath, 'utf8')));
|
||||
const gv = require('@src/handler/globalVarible');
|
||||
@ -28,8 +40,14 @@ describe('test parser common', () => {
|
||||
const arr = encrypt(decrypt('GGZGPQnkMJBUeWs2sLstGIr6oLYDI3AX'), gv.keys[17]);
|
||||
expect(extrace(arr)).toEqual([[], [], [47, 115, 103, 116, 109, 105], [], [], [], []]);
|
||||
});
|
||||
test('test extrace', () => {
|
||||
test('test decode', () => {
|
||||
const arr = extrace(encrypt(decrypt('GGZGPQnkMJBUeWs2sLstGIr6oLYDI3AX'), gv.keys[17]));
|
||||
expect(decode(arr[2])).toBe('/sgtmi');
|
||||
});
|
||||
test('test uuid', () => {
|
||||
expect(uuid("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36")).toBe(2290443310);
|
||||
});
|
||||
test('test uuid', () => {
|
||||
expect(numToNumarr4(uuid("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36"))).toEqual([136, 133, 100, 46]);
|
||||
});
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user