mirror of
https://github.com/horsicq/Detect-It-Easy.git
synced 2026-06-24 01:54:08 +00:00
27 lines
No EOL
1.5 KiB
JavaScript
27 lines
No EOL
1.5 KiB
JavaScript
function detect(){Binary.isHeuristicScan()&&main()}function main(){switch(Binary.getFileSuffix().toLowerCase()){case"js":case"jse":case"jsc":case"jsx":case"mjs":case"cjs":case"sg":var e=""
|
|
if(Binary.isPlainText()){if(1024<Binary.getSize()){for(var i=Binary.getString(0,Binary.getSize()),t=[],s="",r=!1,a="",n=!1,f=0;f<i.length;f++){var l=i[f]
|
|
if(r)if(n)n=!1
|
|
else if("\\"===l)n=!0
|
|
else if("`"===a&&"$"===l&&f+1<i.length&&"{"===i[f+1]){f++
|
|
for(var g=1;f+1<i.length&&0<g;){var c=i[++f]
|
|
if("\\"===c)f++
|
|
else if('"'===c||"'"===c){for(var o=c;f+1<i.length;)if("\\"===i[++f])f++
|
|
else if(i[f]===o)break}else if("`"===c)f=skipNestedTemplate(i,f+1)
|
|
else{if("{"===c)g++
|
|
else if("}"===c&&0===--g)break
|
|
s+=c}}}else l===a&&(r=!1,a="")
|
|
else'"'===l||"'"===l||"`"===l?(0<s.length&&(t.push(s),s=""),r=!0,a=l):s+=l}0<s.length&&t.push(s)
|
|
for(var h=0;h<t.length;h++){var v=t[h]
|
|
if(!/(?: |\t)/.test(v)&&(/(?:(?:(?:var|let|const)[\t ]|\())\b[a-zA-Z](?:,[a-zA-Z]){3,}\b/.test(v)||/[a-zA-Z][!=]?=?=![01][;,\}\)]/.test(v))){e="minified/compiled"
|
|
break}}}}else e="bytecode"
|
|
_setResult("~language","JavaScript","",Binary.isVerbose()?e:"")}}function skipNestedTemplate(e,i){for(;i<e.length;){var t=e[i]
|
|
if("\\"===t)i+=2
|
|
else{if("`"===t)return i
|
|
if("$"===t&&i+1<e.length&&"{"===e[i+1])for(i+=2;i<e.length;){var s=e[i]
|
|
if("\\"===s)i+=2
|
|
else if('"'===s||"'"===s){var r=s
|
|
for(i++;i<e.length;)if("\\"===e[i])i+=2
|
|
else{if(e[i]===r){i++
|
|
break}i++}}else if("`"===s)i=skipNestedTemplate(e,i+1)+1
|
|
else{if("}"===s){i++
|
|
break}i++}}else i++}}return i} |