123456789101112131415161718192021222324252627282930313233343536373839 |
- const fs = require("fs");
- extractFunction = (jsCode, regexp) => {
- const match = jsCode.match(regexp)
- if (!match && match.length <= 1) {
- return null;
- }
- let result = "";
- const dependencyMatchs = match[0].match(/([$a-zA-Z0-9]+\.[$a-zA-Z0-9]+)/g)
- const existDependencies = [];
- if (dependencyMatchs && dependencyMatchs.length >= 1) {
- for (let currentMatch of dependencyMatchs) {
- const varName = currentMatch.split('.')[0];
- if (existDependencies.includes(varName)) {
- continue
- }
- if (!/^[$A-Z]+$/.test(varName)) {
- continue
- }
- let reg = "var (\$)?" + varName + "={(.|\\n)*?};"
- const varNameMatch = jsCode.match(new RegExp(reg), 'ig');
- if (varNameMatch && varNameMatch.length >= 1) {
- result += varNameMatch[0] + "\n";
- }
- existDependencies.push(varName);
- }
- }
- result += `\n${match[0]}`;
- console.log(result);
- return eval(result);
- }
- const fileContent = fs.readFileSync('base.js');
- const result = extractFunction(fileContent.toString(), /([a-zA-Z0-9]+)=function\([a-zA-Z0-9]+\)\{a=a\.split\(""\).*};/)
- console.log(result('adoidjaijdioawjiodjaaa'))
- const result2 = extractFunction(fileContent.toString(), /([a-zA-Z0-9]+)=function\([a-zA-Z0-9]+\)\{var b=a\.split\(""\)[\s\S]*?};/)
- console.log(result2("dwjaiodjaiowidwa"));
|