在shell脚本中混淆命令

时间:2013-09-17 19:24:37

标签: bash shell command

这里有很多提示(和警告)用于混淆脚本中的各种项目。 我不是想隐藏密码,我只是想知道我是否可以在脚本中混淆执行命令以击败临时用户/ grepper。 背景:我们有一个软件可以帮助管理环境中的机器。这些机器归企业所有。用户有时会知道这台计算机是他们的,他们不希望“男人”看着他们的肩膀。

我已经开发了一些东西来检查某个进程是否正在运行,如果没有,则将其克隆并替换。 同样,这样做的目的不是打败除了临时用户以外的任何人。

有人建议可以回显八进制值('混淆'命令)并将其用作脚本中的变量。 e.g:

strongBad=`echo "\0150\0157\0163\0164\0156\0141\0155\0145"`

然后我可以在shell脚本中使用$ strongBad来调用我想用参数调用的命令吗?

/bin/$strongBad -doThatThingYouDo -DoEEET

这有什么道理吗?到目前为止,它通过命令行直接进入shell(使用带有echo的-e标志)但在脚本中没有那么多。我得到了意想不到的输出,也许是我使用它的方式?

作为测试,请在命令行中尝试:

strongBad=`echo -e "\0167\0150\0157"`

然后

$strongBad

您应该获得与“who”相同的输出。

修改

进一步检查后,在变量中添加echo命令的路径会破坏它。也许这就是我的问题的根源。

1 个答案:

答案 0 :(得分:1)

您可以事先在任何想要隐藏的命令上执行rotate 13,然后在shell脚本中使用模糊处理的命令。

这个小小的bash脚本:

#!/bin/bash

function rot13 {
   echo "$@" | tr '[a-m][n-z][A-M][N-Z]' '[n-z][a-m][N-Z][A-M]'
}


rot13 echo hello, world!

`rot13 rpub uryyb, jbeyq!`

产地:

rpub uryyb, jbeyq!
hello, world!