@kaadon.com/kaadon-decrypt
v0.0.2
Published
JS string-array decoder (RC4 + custom base64). Recovers plaintext from obfuscated string arrays. Supports Node.js & browser.
Maintainers
Readme
@kaadon.com/kaadon-decrypt
obfuscatejs.top.v1 风格字符串解密器。用于还原被 obfuscatejs.top.v1 风格(stringArrayEncoding = rc4)加密的字符串数组条目。
解密链路与加密包字节级一致:
密文 --b64decode--> 字节 --utf8decode--> U --RC4--> 明文算法要点(与"标准实现"不同,否则对不上)
- base64 使用非标准字母表(小写字母在前):
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/ - 密文不带
=填充,解码会容忍无填充并忽略非字母表字符 - RC4 只做密钥流异或(对称、无消息头),作用在 UTF-8 解码后的字符串上
utf8decode对畸形/被篡改输入会 try/catch 退回原字节串,绝不抛URIError
安装
npm install @kaadon.com/kaadon-decrypt用法
import { decode } from '@kaadon.com/kaadon-decrypt';
decode('W7VdH8kLWPbNW6n3WOX5', 'ywZf'); // => '2|0|1|3|4'CommonJS:
const {decode} = require('@kaadon.com/kaadon-decrypt');按数组索引派生密钥
在混淆产物里,字符串数组的每个条目使用按索引派生的密钥。本包导出 keyFor 辅助:
import { decode, keyFor } from '@kaadon.com/kaadon-decrypt';
// keyFor(i) = 'k' + (i * 7 + 3).toString(16) + 'Zx'
keyFor(0); // => 'k3Zx'
keyFor(1); // => 'kaZx'
// 解密数组第 i 个条目:
const plain = decode(stringArray[i], keyFor(i));CLI
dec <密文> <密钥>
# 例:
dec W7VdH8kLWPbNW6n3WOX5 ywZf # => 2|0|1|3|4API
decode(cipher: string, key: string): string— 解密单个密文条目。rc4xor(str: string, key: string): string— RC4 密钥流异或(对称)。b64decode(str: string): string— 非标准字母表 base64 解码(容忍无填充)。utf8decode(b: string): string— UTF-8 字节串解码(容错,失败退回原串)。keyFor(i: number): string— 按数组索引派生密钥。
开发与发布
npm install # 安装 devDependencies (typescript)
npm run build # tsc 编译到 dist/
npm test # node:test 运行测试
npm publish # prepublishOnly 会自动先 buildLicense
MIT © LoneWolf
