LEDE中的Bash外壳模糊器
我正在寻找一个bashshell脚本混淆器,并找到了这个,但是我想知道如何使它适应我的脚本,以便它也适用于我 如何使它运行,使我有加密的代码?对不起,我只是从论坛上学到了基本的bash,我的知识有限 非常感谢 如何让它运行 链接回购协议的作者没有提供任何自动混淆脚本的方法。你必须自己做,但我不建议你这样做 模糊概念 链接模糊处理方法用包含所述字符的变量替换每个字符。这样就生成了一个等于原始命令的字符串。然后将所述字符串传递到LEDE中的Bash外壳模糊器,bash,Bash,我正在寻找一个bashshell脚本混淆器,并找到了这个,但是我想知道如何使它适应我的脚本,以便它也适用于我 如何使它运行,使我有加密的代码?对不起,我只是从论坛上学到了基本的bash,我的知识有限 非常感谢 如何让它运行 链接回购协议的作者没有提供任何自动混淆脚本的方法。你必须自己做,但我不建议你这样做 模糊概念 链接模糊处理方法用包含所述字符的变量替换每个字符。这样就生成了一个等于原始命令的字符串。然后将所述字符串传递到eval。例如: cmd a "b c" 变得有点像 Ba=a; B
eval
。例如:
cmd a "b c"
变得有点像
Ba=a; Bb=b; Bc=c; Bm=m; Bd=d; Cs=' '; Cq='"'
eval $Bc$Bm$Bd$Cs$Ba$Cs$Cq$Bb$Cs$Bc$Cq
为什么链接混淆是不好的
- 这是非常容易撤销。将所有
s替换为eval
,然后运行脚本。脚本将打印其原始源代码printf“%s\n”
- 您必须确保脚本和模糊处理方法之间没有变量名冲突
- 在编写模糊处理程序时,您必须想出一种方法来模糊更高级的结构。例如,跨越多行的循环不能拆分为多个
s。你必须进行预处理。将换行符替换为eval
代码>或使用heredoc
对不起,有人对我的问题提出了-的问题。不知道怎么了?我正在研究如何实现这一点。我考虑了其他的选择,比如obfsh,但也无法让它起作用。如果其他人有任何建议,请尽管提,我也不确定你为什么被否决。也许是因为缺乏努力。通常人们希望你展示你自己已经解决了这个问题。谢谢,我喜欢这种方法!运行命令时。/obfuscate.sh myScript.sh我遇到了这个错误:-ash:obfuscate.sh:第7行:语法错误:意外”(“听起来您的shell不支持进程替换
对,我在LEDE操作系统上,版本是:GNU bash,版本4.3.42(1)-发行版(arm openwrt linux GNU)我不知道LEDE操作系统,但我相信我发布的替代版本应该适合您。是的,替代版本适用于我的
和bash-s-“$@”
并生成| source/dev/stdin
文件。如何执行或测试模糊文件?执行myScript.sh obfuscated.sh
时,我的ssh窗口关闭,命令(/myScript.sh obfuscated.sh
用于此测试)由于设备未重新启动,因此不会执行reboot
文件中的myScript.sh
#! /bin/bash loader='#! /bin/bash source <(gzip -c -d <(tail -n+"$((LINENO + 2))" "$BASH_SOURCE")); status="$?"; return "$status" 2> /dev/null || exit "$status" ' for original; do obfuscated="$original-obfuscated.sh" gzip -c "$original" | cat <(printf %s "$loader") - > "$obfuscated" chmod u+x "$obfuscated" done
#! /bin/bash loader='#! /bin/bash tail -n+"$((LINENO + 2))" "$BASH_SOURCE" | gzip -c -d | source /dev/stdin; status="$?"; return "$status" 2> /dev/null || exit "$status" ' for original; do obfuscated="$original-obfuscated.sh" printf %s "$loader" > "$obfuscated" gzip -c "$original" >> "$obfuscated" chmod u+x "$obfuscated" done