restringer
Version:
Deobfuscate Javascript with emphasis on reconstructing strings
31 lines (28 loc) • 1.3 kB
JavaScript
import {REstringer} from '../src/restringer.js';
import {argsAreValid, parseArgs} from'../src/utils/parseArgs.js';
try {
const args = parseArgs(process.argv.slice(2));
if (argsAreValid(args)) {
const fs = await import('node:fs');
let content = fs.readFileSync(args.inputFilename, 'utf-8');
const startTime = Date.now();
const restringer = new REstringer(content);
if (args.quiet) restringer.logger.setLogLevelNone();
else if (args.verbose) restringer.logger.setLogLevelDebug();
restringer.logger.log(`[!] REstringer v${REstringer.__version__}`);
restringer.logger.log(`[!] Deobfuscating ${args.inputFilename}...`);
if (args.maxIterations) {
restringer.maxIterations.value = args.maxIterations;
restringer.logger.log(`[!] Running at most ${args.maxIterations} iterations`);
}
if (restringer.deobfuscate()) {
restringer.logger.log(`[+] Saved ${args.outputFilename}`);
restringer.logger.log(`[!] Deobfuscation took ${(Date.now() - startTime) / 1000} seconds.`);
if (args.outputToFile) fs.writeFileSync(args.outputFilename, restringer.script, {encoding: 'utf-8'});
else console.log(restringer.script);
} else restringer.logger.log(`[-] Nothing was deobfuscated ¯\\_(ツ)_/¯`);
}
} catch (e) {
console.error(`[-] Critical Error: ${e}`);
}