Bash 如何混淆shell脚本?

Bash 如何混淆shell脚本?,bash,shell,obfuscation,Bash,Shell,Obfuscation,我正在使用Ubuntu 10.04。我已经创建了一个shell脚本。编写脚本后,右键单击文件并选择Gedit时可以编辑代码。我想知道如何使脚本在Gedit中不可读。您可能正在寻找类似shc的内容。 从手册页: shc创建 在命令行上用-f指定的脚本 免责声明:我没有测试过shc,也不知道它是否工作正常您可能正在寻找类似shc的产品。 从手册页: shc创建 在命令行上用-f指定的脚本 免责声明:我没有测试过shc,也不知道它是否工作正常您想要做的事情不太可能。脚本是解释的,而不是编译的,这就

我正在使用Ubuntu 10.04。我已经创建了一个shell脚本。编写脚本后,右键单击文件并选择Gedit时可以编辑代码。我想知道如何使脚本在Gedit中不可读。

您可能正在寻找类似shc的内容。 从手册页:

shc创建 在命令行上用-f指定的脚本


免责声明:我没有测试过shc,也不知道它是否工作正常

您可能正在寻找类似shc的产品。 从手册页:

shc创建 在命令行上用-f指定的脚本


免责声明:我没有测试过shc,也不知道它是否工作正常

您想要做的事情不太可能。脚本是解释的,而不是编译的,这就是为什么您会在其中看到文本

对于要执行的脚本,有效用户必须具有读取权限。除了给予执行权限或使用shc(正如KillerX很好地建议的那样)之外,在不让用户查看脚本竞赛的情况下,另一种选择是使用sudo。您可以像这样编辑
sudoers
文件(请记住使用
visudo
编辑此文件!):


现在,脚本可以通过“用户名”执行,但他无法读取其内容。当然,您需要从该文件中删除对“username”的所有权限…

您想要做的事情并不容易。脚本是解释的,而不是编译的,这就是为什么您会在其中看到文本

对于要执行的脚本,有效用户必须具有读取权限。除了给予执行权限或使用shc(正如KillerX很好地建议的那样)之外,在不让用户查看脚本竞赛的情况下,另一种选择是使用sudo。您可以像这样编辑
sudoers
文件(请记住使用
visudo
编辑此文件!):


现在,脚本可以通过“用户名”执行,但他无法读取其内容。当然,您需要从该文件中删除对“username”的所有权限…

混淆(这是大多数人说他们需要“二进制”shell脚本时的意思)是一个坏主意(TM)-已经做到了,已经做到了。它不提供任何针对已确定程序员的安全性(他们只是跟踪脚本以了解它在做什么),而且它使调试变得非常非常困难(可能,除非你是,否则你需要做很多。)。

混淆(这是大多数人说他们需要“二进制”shell脚本时的意思)是个坏主意(TM)-去过那里,做过那件事。它不提供任何针对特定程序员的安全性(他们只是跟踪脚本以了解它在做什么),而且它使调试变得非常非常困难(可能,除非你是,否则你需要做很多。)。

GEdit只是另一个可以用来编辑文件的工具,就像“vi”或“nano”一样。唯一的区别是,我相信它是图形化的。尽管如此,原始海报在这里试图做的似乎只是让其他人无法查看某些脚本。如果这是真的,那么有一些解决方案可能值得研究

SHC:

cat yourscript.sh | openssl aes-128-cbc -a -salt -k (specify-a-password-here) > yourscript.enc.sh

(OR)

openssl aes-128-cbc -a -salt -in yourscript.sh -k (specify-a-password-here) > yourscript.enc.sh

(OR)

openssl aes-128-cbc -a -salt -in yourscript.sh -out yourscript.enc.sh -k (specify-a-password-here)
cat yourscript.enc.sh | openssl aes-128-cbc -a -d -salt -k (specify-a-password-here) > yourscript.dec.sh

(OR)

openssl aes-128-cbc -a -d -salt -in yourscript.sh -k (specify-a-password-here) > yourscript.dec.sh

(OR)

openssl aes-128-cbc -a -d -salt -in yourscript.sh -out yourscript.enc.sh -k (specify-a-password-here)
SHC是用于此目的的一个很好的工具。根据这篇文章的最后一篇文章,OP似乎已经尝试过了,但在某些系统上不起作用。如果是这样的话,原因如下。SHC的工作方式实际上相当直截了当。当使用它来混淆脚本时,您必须为要运行脚本的操作系统重新编译脚本。这意味着,您不能在ubuntu机器上运行SHC编译器,而期望生成的脚本在Red Hat/CentOS机器上工作。看来最新版本的SHC可以下载

加密:

cat yourscript.sh | openssl aes-128-cbc -a -salt -k (specify-a-password-here) > yourscript.enc.sh

(OR)

openssl aes-128-cbc -a -salt -in yourscript.sh -k (specify-a-password-here) > yourscript.enc.sh

(OR)

openssl aes-128-cbc -a -salt -in yourscript.sh -out yourscript.enc.sh -k (specify-a-password-here)
cat yourscript.enc.sh | openssl aes-128-cbc -a -d -salt -k (specify-a-password-here) > yourscript.dec.sh

(OR)

openssl aes-128-cbc -a -d -salt -in yourscript.sh -k (specify-a-password-here) > yourscript.dec.sh

(OR)

openssl aes-128-cbc -a -d -salt -in yourscript.sh -out yourscript.enc.sh -k (specify-a-password-here)
如果您的主要目标是阻止其他人尝试阅读您的代码,您可以将脚本粘贴到类似的网站上。此站点将自动生成一个模糊版本的脚本,该脚本应该能够在大多数常见的Unix系统上运行而不会出现问题

如果您不希望将代码粘贴到上述站点或出于任何原因使用SHC,那么还有另一种解决方案。使用openssl

OpenSSL:

cat yourscript.sh | openssl aes-128-cbc -a -salt -k (specify-a-password-here) > yourscript.enc.sh

(OR)

openssl aes-128-cbc -a -salt -in yourscript.sh -k (specify-a-password-here) > yourscript.enc.sh

(OR)

openssl aes-128-cbc -a -salt -in yourscript.sh -out yourscript.enc.sh -k (specify-a-password-here)
cat yourscript.enc.sh | openssl aes-128-cbc -a -d -salt -k (specify-a-password-here) > yourscript.dec.sh

(OR)

openssl aes-128-cbc -a -d -salt -in yourscript.sh -k (specify-a-password-here) > yourscript.dec.sh

(OR)

openssl aes-128-cbc -a -d -salt -in yourscript.sh -out yourscript.enc.sh -k (specify-a-password-here)
如果您的脚本真的那么敏感,那么Openssl(或类似工具)可能是您的最佳选择。为什么?因为openssl工具尤其出现在大多数Unix系统上…例如。Ubuntu、CentOS、Red Hat、Mac、AIX。它是默认安装的一部分。请注意,如果您决定使用此方法,您需要以这样的方式编写脚本,即在脚本运行之前,用户必须提供密码

使用OpenSSL加密脚本:

cat yourscript.sh | openssl aes-128-cbc -a -salt -k (specify-a-password-here) > yourscript.enc.sh

(OR)

openssl aes-128-cbc -a -salt -in yourscript.sh -k (specify-a-password-here) > yourscript.enc.sh

(OR)

openssl aes-128-cbc -a -salt -in yourscript.sh -out yourscript.enc.sh -k (specify-a-password-here)
cat yourscript.enc.sh | openssl aes-128-cbc -a -d -salt -k (specify-a-password-here) > yourscript.dec.sh

(OR)

openssl aes-128-cbc -a -d -salt -in yourscript.sh -k (specify-a-password-here) > yourscript.dec.sh

(OR)

openssl aes-128-cbc -a -d -salt -in yourscript.sh -out yourscript.enc.sh -k (specify-a-password-here)
使用OpenSSL解密脚本:

cat yourscript.sh | openssl aes-128-cbc -a -salt -k (specify-a-password-here) > yourscript.enc.sh

(OR)

openssl aes-128-cbc -a -salt -in yourscript.sh -k (specify-a-password-here) > yourscript.enc.sh

(OR)

openssl aes-128-cbc -a -salt -in yourscript.sh -out yourscript.enc.sh -k (specify-a-password-here)
cat yourscript.enc.sh | openssl aes-128-cbc -a -d -salt -k (specify-a-password-here) > yourscript.dec.sh

(OR)

openssl aes-128-cbc -a -d -salt -in yourscript.sh -k (specify-a-password-here) > yourscript.dec.sh

(OR)

openssl aes-128-cbc -a -d -salt -in yourscript.sh -out yourscript.enc.sh -k (specify-a-password-here)
关于openssl加密机制“aes-128-cbc”,需要注意的一点是:


可能还有更安全的机制。但是,您希望运行加密脚本的某些系统很可能没有这些机制,因此无法运行脚本。因此,如果您决定更改它,请记住这一点。

GEdit只是另一种可以用来编辑文件的工具,就像“vi”或“nano”一样。唯一的区别是,我相信它是图形化的。尽管如此,原始海报在这里试图做的似乎只是让其他人无法查看某些脚本。如果这是真的,那么有一些解决方案可能值得研究

SHC:

cat yourscript.sh | openssl aes-128-cbc -a -salt -k (specify-a-password-here) > yourscript.enc.sh

(OR)

openssl aes-128-cbc -a -salt -in yourscript.sh -k (specify-a-password-here) > yourscript.enc.sh

(OR)

openssl aes-128-cbc -a -salt -in yourscript.sh -out yourscript.enc.sh -k (specify-a-password-here)
cat yourscript.enc.sh | openssl aes-128-cbc -a -d -salt -k (specify-a-password-here) > yourscript.dec.sh

(OR)

openssl aes-128-cbc -a -d -salt -in yourscript.sh -k (specify-a-password-here) > yourscript.dec.sh

(OR)

openssl aes-128-cbc -a -d -salt -in yourscript.sh -out yourscript.enc.sh -k (specify-a-password-here)
SHC是用于此目的的一个很好的工具。根据这篇文章的最后一篇文章,OP似乎已经尝试过了,但在某些系统上不起作用。如果是这样的话,原因如下。SHC的工作方式实际上是p