我使用的是Ubuntu 10.04。我创建了一个shell脚本。编写脚本后,右键单击该文件并选择Gedit时可以编辑该代码。我想知道如何在Gedit中使脚本无法读取。如何模糊shell脚本?
回答
您可能正在寻找类似shc的东西。 从手册页:
shc在命令行上创建使用-f指定的 脚本的剥离二进制可执行版本。
http://freecode.com/projects/shc
免责声明:我没有测试过SHC我也不知道如何/如果它的工作原理
你想要做什么是不容易成为可能。脚本被解释,而不是编译,这就是为什么你看到文本。
要执行一个脚本,有效用户必须具有读取访问。除了允许执行权限或使用shc(如KillerX已经提出的良好建议)而不让用户查看脚本竞赛之外,替代方案是使用sudo。您可以编辑sudoers
文件中像这样(记得用visudo
编辑这个文件!):
username ALL=(ALL) /path/to/your_script.sh
现在脚本将是“用户名”可执行,但他将无法读取其内容。当然,你需要删除所有权限,从这个文件中“用户名” ...
什么是需要是创建脚本后我被转换执行权限。如果我将这个脚本给这个人的其他人一定不能打开这个脚本,他们只能运行这个脚本。 – Viswa 2012-03-14 11:56:27
然后,你应该尝试shc。除了使用非解释语言之外,我无法弄清楚其他解决方案。 – 2012-03-14 11:59:14
我是下载SHC 3.8.7和安装成功,那么脚本test.sh转化通过终端i被跑./test.sh.x到test.sh.x format.Then。它运行我的系统。但是同样的test.sh.x被复制并粘贴到另一个系统并安装了shc。然后我运行./test.sh.x它没有运行。该怎么办。 – Viswa 2012-03-14 13:17:44
混淆(这是什么时,他们说,他们希望有一个“二进制” shell脚本大多数人的意思)是一个坏主意(TM) - 去过也做过。它不提供与一个确定的程序员任何安全(他们刚刚跟踪脚本搞清楚它在做什么),这使得它真的,真的很难调试(这可能是除非你是GreyCat,你会需要做很多。)。
GEdit只是另一个可用于编辑文件的工具,非常像“vi”或“nano”。唯一的区别是,我相信它是图形的。不过,看起来原来的海报试图在这里做的只是让别人无法查看某些脚本。如果那是真的,那么有些解决方案可能值得研究。
SHC:
SHC是用于此目的的一个很好的工具。并基于此线程中的最后一篇文章,看起来OP已经尝试过,但它在某些系统上不起作用。如果是这样,那么继承人之所以会这样。 SHC的工作方式其实非常简单。当使用它来混淆脚本时,您必须重新编译脚本以用于您想要运行的任何操作系统。这意味着,你不能在Ubuntu机器上运行SHC编译器,并期望生成的脚本能够在Red Hat/CentOS机器上运行。看来最新版本的SHC可以是accessed here。
EnScryption:
如果你的主要目标是从尝试读取你的代码劝阻别人,你可以只贴上你的脚本像this one网站。该站点将自动生成脚本的混淆版本,该脚本应该能够在大多数常见Unix系统上运行而不会出现问题。
如果您不希望将代码粘贴到上述网站或出于任何原因使用SHC,那么还有另一种解决方案。使用openssl!
的OpenSSL:
如果你的脚本是真的那么敏感,那么Openssl的(或类似的工具)可能是您的最佳选择。为什么?由于openssl工具特别适用于大多数Unix系统......也就是说, Ubuntu,CentOS,Red Hat,Macs,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)
解密你的脚本使用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)
快速一点需要注意有关OpenSSL的加密机制“AES-128- cbc':
那里可能有更安全的机制。但是,您希望运行加密脚本的某些系统很可能没有这些机制,因此无法运行脚本。因此,如果您决定改变它,请记住这一点。
- 1. shell脚本模板
- 2. Shell脚本模式识别
- 3. shell脚本模式匹配?
- 4. Shell脚本通用模板
- 5. 如何使用shell脚本
- 6. 如何在shell脚本
- 7. 如何使用shell脚本
- 8. 如何检索shell脚本
- 9. 如何从shell脚本
- 10. 如何使用shell脚本
- 11. 如何编写shell脚本?
- 12. 如何使用shell脚本
- 13. 如何加入shell脚本
- 14. 如何使用shell脚本
- 15. 如何使用shell脚本
- 16. 如何使用shell脚本
- 17. 如何使用shell脚本
- 18. 如何从shell脚本
- 19. 如何使用shell脚本
- 20. 如何编写shell脚本
- 21. 如何使用shell脚本
- 22. 如何从shell脚本调用另一个shell脚本的Unix
- 23. shell的shell脚本
- 24. 如何使用Shell脚本编写shell脚本来查找shell类型
- 25. 编写shell脚本的shell脚本
- 26. 通过packer.js模糊java脚本
- 27. python脚本模糊错误消息
- 28. Laravel 5.4混合如何裂伤/丑化/模糊处理脚本
- 29. 如何添加模糊增强模糊?
- 30. 如何模糊ListView项目与模糊?
脚本_必须是可读的,以便解释器能够运行它。你在问如何用编译语言重新编写脚本作为程序来阻止某人修改脚本?或者......你真的想完成什么? [编译器的shell脚本]的 – sarnold 2012-03-14 11:20:06
可能重复(http://stackoverflow.com/questions/1297318/compilers-for-shell-scripts) – l0b0 2012-03-14 11:54:17
模糊处理是东西比缺少访问(读取)的权限不同。你是指哪一个? – bitmask 2012-03-14 12:03:40