Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LEDE中的Bash外壳模糊器_Bash - Fatal编程技术网

LEDE中的Bash外壳模糊器

LEDE中的Bash外壳模糊器,bash,Bash,我正在寻找一个bashshell脚本混淆器,并找到了这个,但是我想知道如何使它适应我的脚本,以便它也适用于我 如何使它运行,使我有加密的代码?对不起,我只是从论坛上学到了基本的bash,我的知识有限 非常感谢 如何让它运行 链接回购协议的作者没有提供任何自动混淆脚本的方法。你必须自己做,但我不建议你这样做 模糊概念 链接模糊处理方法用包含所述字符的变量替换每个字符。这样就生成了一个等于原始命令的字符串。然后将所述字符串传递到eval。例如: cmd a "b c" 变得有点像 Ba=a; B

我正在寻找一个bashshell脚本混淆器,并找到了这个,但是我想知道如何使它适应我的脚本,以便它也适用于我

如何使它运行,使我有加密的代码?对不起,我只是从论坛上学到了基本的bash,我的知识有限

非常感谢

如何让它运行

链接回购协议的作者没有提供任何自动混淆脚本的方法。你必须自己做,但我不建议你这样做

模糊概念 链接模糊处理方法用包含所述字符的变量替换每个字符。这样就生成了一个等于原始命令的字符串。然后将所述字符串传递到
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
为什么链接混淆是不好的
  • 这是非常容易撤销。将所有
    eval
    s替换为
    printf“%s\n”
    ,然后运行脚本。脚本将打印其原始源代码
  • 您必须确保脚本和模糊处理方法之间没有变量名冲突

  • 在编写模糊处理程序时,您必须想出一种方法来模糊更高级的结构。例如,跨越多行的循环不能拆分为多个
    eval
    s。你必须进行预处理。将换行符替换为
    或使用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
    文件。如何执行或测试模糊文件?执行
    /myScript.sh obfuscated.sh
    时,我的ssh窗口关闭,命令(
    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