如何混淆 shell 脚本?

Vis*_*swa 1 bash shell obfuscation

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

小智 6

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

安全中心:

SHC 是用于此目的的一个很好的工具。并且根据该线程中的最后一篇文章,OP似乎已经尝试过,但是它在某些系统上不起作用。如果是这样的话,原因如下。SHC 的工作方式实际上非常简单。当使用它来混淆脚本时,您必须为要运行该脚本的任何操作系统重新编译该脚本。这意味着,您无法在 ubuntu 机器上运行 SHC 编译器并期望生成的脚本在 Red Hat/CentOS 机器上运行。看来可以在此处访问最新版本的 SHC 。

加密:

如果您的主要目标是阻止其他人尝试阅读您的代码,您可以将脚本粘贴到像这样的网站。该站点将自动生成脚本的混淆版本,该版本应该能够在最常见的 Unix 系统上运行而不会出现问题。

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

OpenSSL:

如果您的脚本确实那么敏感,那么 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)
Run Code Online (Sandbox Code Playgroud)

使用 OpenSSL 解密您的脚本:

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)
Run Code Online (Sandbox Code Playgroud)

关于 openssl 加密机制“ aes-128-cbc ”需要注意的一点:

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