Chr*_*ian 22 bash shell obfuscation minify
当然,bash文件不能真正模糊,并且总是可读的.而且我不想将它们包装在一些二进制包中.重命名局部变量不值得麻烦.
但是有一个可靠的简单bash混淆器或minifier,至少删除所有的缩进,所有空行和所有空格而不破坏任何东西?特别是评论并注释掉了可能包含敏感文档或信息的脚本部分?
我会害怕简单的grep/sed-lines这样做,因为当然不能修改" HEREDOCs ",因此需要进行一些真正的解析.
也许有一个工具可以做到这一点,这将是伟大的!
c00*_*ter 28
:P这里有点搞笑.
假设您的脚本已命名,origin并且已将模糊的脚本命名obsf.
这是origin:
#!/bin/sh
echo "fooo"
Run Code Online (Sandbox Code Playgroud)
这是 obsf
$ echo "echo $(base64 origin)" > obsf
$ cat obsf
echo IyEvYmluL3NoCmVjaG8gImZvb28iCg==
$ chmod +x obsf
Run Code Online (Sandbox Code Playgroud)
现在rm origin运行obsf如下:
$ sh obsf | base64 -d | sh
fooo
Run Code Online (Sandbox Code Playgroud)
嘿:3
Vse*_*aga 10
这是我为bash脚本缩小创建的工具:https://github.com/precious/bash_minifier - 它尝试删除所有注释和尽可能多的空格/制表符/换行符.它也可以在这里作为服务https://bash-minifier.appspot.com/.
要缩小bash脚本,请运行以下命令:
python minifier.py /path/to/shell/script.sh
Run Code Online (Sandbox Code Playgroud)
即使这是一个老问题,它似乎在谷歌上很受欢迎.我也在寻找一个bash minifer/obfuscator,并且不喜欢答案中的那个.
我也不想添加乱码或编译脚本.所以我写了一个在Perl中做了我想要的东西,然后把它放在GitHub上,网址是https://github.com/Aralhach/bashobfus/tree/master
它可以:
可能会出现一些失败的情况,但我使用相当大的bash脚本对其进行了测试,并列出了列出的变量替换案例.它还将变量留在单引号(')中 - 这在打印AWK脚本时弹出 - 但当语句已在双引号(")内时替换单引号(') - 这在打印时弹出MySQL声明.
这让我觉得我已经涵盖了所有大用途,但我以前错了.如果您发现任何错误,请随时报告(或修复它们!:D).我还在考虑添加一个功能,将短线连接成一个带有";"的线路.但在截止日期前,案件分析太多了.
我希望人们觉得它很有用!
原始文件script.sh:
#!/usr/bin/env bash
echo "foo"
Run Code Online (Sandbox Code Playgroud)
创建 other.sh
$ echo '#!/usr/bin/env bash' > other.sh
$ echo "echo '$(base64 script.sh)' | base64 -d | sh" >> other.sh
$ chmod +x other.sh
Run Code Online (Sandbox Code Playgroud)
结果(cat other.sh):
#!/usr/bin/env bash
echo 'IyEvdXNyL2Jpbi9lbnYgYmFzaAplY2hvICJmb28iCg==' | base64 -d | sh
Run Code Online (Sandbox Code Playgroud)
尝试:
$ ./other.sh
foo
Run Code Online (Sandbox Code Playgroud)