如何在我们的bash脚本中混淆或隐藏代码

有时我们在其中编写脚本 并且我们希望其代码不可见,即不是纯文本。 当我们谈论隐藏代码时,正确的术语是 混淆在我的情况下,我想混淆代码 我前段时间做过的剧本,我为此找到的实用程序称为: SHC

SHC 它允许我们混淆代码,以下是使用代码的步骤:

1. 首先我们必须下载它

下载SHC v3.8.9

2. 下载后,我们右键单击压缩文件,然后选择“在这里提取”或类似的内容。 这将使我们看到一个名为 SHC-3.8.9,这里我向您展示其内容的屏幕截图

3. 好,假设文件夹位于 /home/usuario/Downloads/shc-3.8.9 好吧,我们打开一个航站楼,然后转到该路线(cd“ /home/usuario/Downloads/shc-3.8.9”),然后安装从此处开始。

 4. 在终端中(正如我已经告诉您的),该文件夹中 SHC-3.8.9,为了安装此应用程序,我们需要建立文件的符号链接 SHC-3.8.9.C a shc 因此我们执行以下操作:

ln -s shc-3.8.9.c shc.c

 4. 建立链接后,我们执行 使安装 具有root权限(我们将使用sudo):

 sudo make install

 4. 它将要求我们提供密码,并且会稍等片刻,它将等待我们按下键 [和] 然后按 [输入],即,我们确认确实要安装该软件。 完成此操作后,安装将没有问题。 我为您提供了整个准备和安装过程的屏幕截图:

 


正如您最终看到的那样,我得到一个错误,该错误是指我的系统上不存在某个文件夹的事实,如果看到此错误,根本就不要赋予它重要性...即使如此 SHC 安装成功😉
这样他们就可以跑 sudo make install es 必要 已安装软件包: GCC y 使

5. 做完了,这就是安装😀

安装后,我们只需要学习如何使用它。 假设我们家有一个脚本 脚本文件 其内容如下:

#!/bin/bash
echo "Script de prueba para DesdeLinux.net"
exit

执行此脚本时,它将明显在终端显示以下消息:«测试脚本 DesdeLinux净“ 或不? …但是,现在我们要混淆该代码。

在终端中,我们输入以下内容并按 [输入]:

shc -v -f $HOME/script.sh

还有宾果! 准备好😀

这在脚本旁边为我们创建了两个新文件,现在我们有了 脚本文件 y script.sh.xc

script.sh.x-» 这是我们模糊的bash脚本,执行时它与我们创建的第一个脚本完全相同,不同之处在于,如果使用文本编辑器(nano,kate,gedit等)打开它,则第一个脚本我们可以清楚地看到它的内容,而如果我们打开 脚本文件 我们将清楚地看到我们什么都看不到...大声笑!!!,也就是说,代码是“加密的”🙂

script.sh.xc-» 这是我们的脚本,但是使用C语言...我们可以不用担心删除它,因为我们真的不需要它,至少我根本不需要它。

实际上,在技术方面没有什么可添加的,只是为了澄清一点,据我所知(隐藏或混淆bash脚本代码),这并不违反许可证或类似的东西。 我澄清一下,因为几个月前在Facebook上,当我提到我已经学会混淆bash代码时,一些用户提醒我这违反了许可证或类似的东西……据我所知,许可证没有被违反与此😉

非常感谢 马蒂亚斯·加斯顿(Matias Gaston) 前段时间向我提到了这个实用程序

没有更多补充,任何疑问或疑问,投诉或建议让我知道。

问候😀


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   西克兹

    并不是违反许可证,而是不再是自由软件...

    1.    KZKG ^ Gaara

      当然是。 关键是我不想让别人看到我的某些个人脚本,例如,因为其中一个脚本具有来自本地MySQL的纯文本密码或类似密码。

      1.    莫非斯
        1.    KZKG ^ Gaara

          实际上,我使用SHA来“隐藏”密码(https://blog.desdelinux.net/como-saber-la-suma-md5-o-sha-de-una-palabra-oracion-o-archivo/),然后在脚本中保留密码哈希值,然后做的是比较用户输入的密码(我将其与读取内容一起保存),得到SHA总和并在末尾将两者进行比较🙂

          无论如何,非常感谢您提供的链接,我已经在对其进行审核😀

          问候

        2.    让我们使用Linux

          精确! 提示输入密码的shell提示是一个很好的选择。
          干杯! 保罗

          1.    MSX

            但是它不像其他方式那样提供自动和无人值守的执行。 🙂

      2.    威廉·维凡科

        在脚本中放置密码和其他访问权限或破坏数据是一个大错误。 此信息必须以适当的权限保存在另一个文件中,因此您不必混淆bash脚本。 容易吧?

        1.    KZKG ^ Gaara

          将数据(登录变量,confs等)保存在另一个文件中的问题是,“系统”或“应用程序”需要2个文件才能运行,而如果我以“安全”的方式将所有内容存储为单个文件,好吧,我只需要一个文件。

          1.    莫非斯

            良好的做法是将应用程序与数据分开。
            更确切地说,对数据进行硬编码是一种可怕的做法!
            http://es.wikipedia.org/wiki/Hard_code
            它与将代码和数据放在同一文件中的安全性无关。 甚至更多,如果您在那里输入密码,则相反!

          2.    威廉·维凡科

            从“另一个文件”中读取敏感信息的成本与“未获取”代码所需的处理器成本几乎可以忽略不计。

            另一方面,您将放弃模块化开发的整个范例,而将赌注押在一个单一的模型上,这种模型比经证明的问题多于解决方案。

          3.    MSX

            而且,如果您使用的权限必然涉及其他组/用户,则还需要输入初始密码才能执行第一个脚本。

          4.    MSX

            @KZKG上面的评论是对您的评论的回应
            @morpheus:绝对与特定需求相关。

    2.    莫非斯

      但是,有免费的二进制编译软件(不只是模糊处理)。 它是免费的事实意味着它也有源代码,但是它与混淆(或编译,与编译无关),例如,如果我想运行C程序,这是必不可少的。

      1.    威廉·维凡科

        对于编译的自由软件,这是所使用语言要求的问题(如果您使用C进行编程,则必须进行编译才能使应用程序正常工作)。 同样,如果它确实是自由软件,则始终可以使用源代码。

  2.   日向_宁次

    哼,我表示一定程度地对代码共享感到冷漠,哈哈,看看有多少人最终开始“混淆他们的代码”,以使我们更加依赖于他们的解决方案...

    1.    KZKG ^ Gaara

      我并不是说应该对代码进行混淆处理……我提供了工具,每个工具都可以根据需要使用它们。

      1.    评论员

        混淆此页面上的代码?

        我认为这对远程读者来说是一个好主意,因为我认为访问此博客的许多人都是自由软件的追随者,因此我们不共享混淆代码的做法。

        1.    MSX

          您显然没有读过KZKG争论的原因以及为什么它解释了混淆脚本的必要性。

          感谢KZKG分享您的发现!

  3.   加布里埃尔

    因此,病毒开始在Linux中传播...

    就个人而言,我永远不会使用任何混淆的脚本。 不仅因为涉及安全风险,而且因为如果您的脚本过于珍贵而无法共享,则最好将其放在* ulo中; 我肯定可以找到一个愿意分享自己知识的人。

    1.    KZKG ^ Gaara

      您会使用混淆脚本吗?,好,对您非常有用,我永远不会使用混淆脚本...详细信息是,我从未共享过混淆脚本,而离它很远,亲爱的朋友是存在错误

      每当我在Bash中执行某项操作时,我都会分享它而不会对其造成压力或困扰我,我已经在这里的许多文章中做了这些

      欢迎来到博客,很高兴阅读您的内容😉

  4.   Percaff_TI99

    Gabriel,KZKG ^ Gaara已经在分享知识,他并没有创建带有混淆脚本的linux软件包,如果这可能违反许可证,它只会显示一个可以使用或不可以自己使用的应用程序,没有必要粗鲁,至于Linux中的病毒并不是那么简单,这是一篇不错的文章 https://blog.desdelinux.net/virus-en-gnulinux-realidad-o-mito/.
    KZKG ^ Gaara我希望您写一篇有关使用图像的encfs和密码学的文章,这是我非常喜欢的话题。
    干杯!

    1.    KZKG ^ Gaara

      谢谢
      实际上,并不是我对encfs和加密技术没有足够的知识,至少我没有足够的自信来发帖并假设用户可能对此有所怀疑。
      在本主题中,我不是高级用户...
      我做的最多的就是使用GPG加密文件,对于图像,我做的最多的就是“插入”或隐藏图像中的文件,这很明显,当使用图像查看器打开图像时,一切显示正确,这是您的意思吗?

      再次非常感谢您的评论🙂

  5.   拉塔克鲁尔

    如果我没记错的话,有一些C锦标赛混淆不清,但是使用“混淆器”是不值得的,但是他们必须对原始信号进行混淆。

    至于shc和您的脚本带有密码,这是非常糟糕的工作方式!

    一如既往的有趣。

    1.    KZKG ^ Gaara

      是的,已经有多个人告诉我哈哈!
      谢谢你的评论🙂

  6.   评估

    基本上,如果您共享应用程序而没有共享可见脚本,那么您将违反GPL,这要求由GPL应用程序生成的所有内容均应为GPL。 这就是SHC生成C的原因,因为这是您可以共享的代码。

    问候

  7.   让我们使用Linux

    我同意其他读者的意见:将数据和脚本全部存储在一起不是一种好习惯,而且也不利于自由软件的开发。
    一个拥抱! 保罗

    1.    KZKG ^ Gaara

      你好帕勃罗🙂
      我还有其他一些混淆的脚本可以在笔记本电脑上内部运行,我对其进行混淆是因为我根本不希望如果有人由于某种原因设法将脚本复制到另一台计算机上,我只是不希望他们能够看到它包含,这是我采取的“安全措施”。

      然而,在这里 DesdeLinux 我公开了我在 Bash 中编写的所有或几乎所有可能有趣的内容。

      简而言之,并不是我现在是SWL的批评者,因为他混淆了个人脚本,而是出于个人目的而这样做😀

      问候朋友

  8.   代码实验室

    好信息。 除了评论中引起的争议之外​​,在我看来,信息仍在继续进行更多调查。

    我相信作者在本文中的任何时候都不会告诉我们它是做得好还是不好,还是我们应该做或不应该做,他只是告诉我们可以使用的工具,以防对他人有帮助。

    问候。

    代码实验室

    1.    F3NIX

      在Linuxeros博客中,一切都是有争议的,哈哈一直都是那样。

      1.    MSX

        @ F3niX我将剪切带有您的注释的屏幕截图,以在每次有人对此主题进行愚蠢的提及时将其放入。

        注意:让我们看看何时在irc和Chakra论坛上找到您😉

    2.    KZKG ^ Gaara

      精确!!
      我只是展示/教导/解释我学到的新东西,是否使用此知识取决于您,我不会强迫您远离这些知识。

      据我所知,分享知识是一件好事,对吗? 0_oU

      感谢您的评论,很高兴知道有不止一个或两个了解本文真正目的的人。

  9.   Percaff_TI99

    在那里,您把我放在xD的一个紧要关头,几周前,我一直在准备一篇标题为《 Crux的安装和测试》的文章,尽管安装成功完成,但我是普通用户而且我不知道我是否能够应付来自第三方的疑问,其目的是作为讨论该发行版优缺点的工具,以及可以解决可能出现的问题的解决方案,以帮助我们在所有用户和读者中。 当我完成并发送以供审核时,您(管理员)将做出决定。 至于图像中的密码学问题,它是相同的,感谢KZKG ^ Gaara的回答。

    您好!

    1.    KZKG ^ Gaara

      好吧,我会写一篇关于😉的文章

  10.   Makubex宇智波

    优秀的导师兄弟,我发现它非常有用:3
    对于那些想要在manjaro linux和archlinux的派生版本中安装的人,该软件包位于aur中,名称为:shc

    问候

  11.   框架

    抱歉,朋友有一个小脚本,用于将大写字母转换为剪贴板中的小写字母(xclip)

    脚本在不混淆的情况下正常工作

    #!/斌/庆典
    xclip -o> R1.txt
    猫R1.txt | tr [:上层:] [:下层:]
    扔出去 ””
    RM R1.txt

    但是当我想运行混淆脚本时
    我骰子

    ./M2m.sh:不允许操作
    已完成(已杀死)

    请帮忙

    1.    KZKG ^ Gaara

      您是否安装了xclip?

  12.   同步标记

    应该注意的是,它实际上是一个bash编译器,因为有.bat编译器或.php。
    我不知道生成的代码是否经过加密和模糊处理并且不能抵抗反编译器,我将不得不尝试,因为这不是我的领域,我不会说是或否,但是我看到的是编译bash在.c中,您可以看到代码,在混淆的东西中,我看到它看起来像是漏洞利用程序外壳的行,我不知道它们是否真的被混淆了,因为不需要密码还是一个不知道,master.config在哪里有上一个关键字。

  13.   胡安·戴维(Juan David)

    朋友,碰巧的是,当我对脚本进行混淆处理时,他创建了以结尾结尾的新脚本,我执行了它,甚至完美。 但是,当我使用linuz将它带到另一台计算机上时,它无法运行,它已经具有所有权限,我创建了一个启动器,并告诉它它是一个终端应用程序,但是它不起作用,请等待快速响应

    1.    KZKG ^ Gaara

      您是否已对其进行编译并且正在具有相同体系结构的系统上运行它? 换句话说,如果在32位系统上对其进行编译以使其模糊化,然后尝试在64位系统上运行它,则将给您一个错误,反之亦然。 你明白?

      1.    胡安·戴维(Juan David)

        否,但是我已经提供了格式化同一台计算机,同一操作系统以及它无法运行,甚至不发送错误的格式。
        我通过控制台这样调用它:sudo /home/operations/script.x,并且出现此错误

        /home/operaciones/script.x: e }8- q , K。

        整个案件

        1.    KZKG ^ Gaara

          尝试在不进行编译的情况下运行它,看看代码中是否有错误

    2.    缺口

      为了能够在其他计算机上运行混淆后的脚本,您必须使用选项«-r Relax security对其进行编译。 制作一个可重新分发的二进制文件',否则它将仅在脚本被SHC混淆的计算机上运行。
      例如:

      shc -r -f script.sh

  14.   威廉

    您好,我有一个查询,该shc可以安装在任何类型的Linux发行版中,例如red hat,该如何安装?
    谢谢!

  15.   鲁伊兹

    大家好,您的意见对我有很大帮助,但是当以下问题困扰我时:如果混淆在同一系统中但对于不同体系结构不适用于我,也就是说,如果我以32位格式进行处理,则无法以64位格式运行。 有谁知道它是否真的可以在不同的架构(32位和64位)上运行?