我正在尝试“混淆”javascript代码(使其不可读以避免盗版)我正在使用awk来执行此操作。这适用于长词,但不适用于单字符词。
输入文本 :
var t=document.getElementById(u)
预期输出:
var b7=document.getElementById(b8)
实际输出:
var b7 document getElementById b8
awk 代码:
${cor_var} is a unix variable which contains "t" in our example
${obf_var} is a unix variable which contains "b7" (the obfuscated variable)
awk -v AWK_COR_VAR="${cor_var}" -v AWK_OBF_VAR="${obf_var}" '
# We use Non-word characters as field separator
# Like this we can extract var/func
BEGIN {FS="[^A-Za-z0-9_]+"}
{
if ($0 ~ AWK_COR_VAR) {
# On a line containing our word, we go through each field till we find our word
# and then we replace it with sub
for ( x = 1; x < NF; x++ ) {
# Output fields with space as delimiter
if ($x == AWK_COR_VAR) {sub($x, AWK_OBF_VAR, $x)};
}
print $0;
} else {print $0}
}' $file
似乎子函数摆脱了字段分隔符。我还尝试了没有第三个参数的 sub ,它保留了字段分隔符,但也在不应该的地方更改了“t”:
if ($x == AWK_COR_VAR) {sub($x, AWK_OBF_VAR)};
输出 :
b7=documenb7.getElementById(t)