如何在我們的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.c 因此我們執行以下操作:

ln -s shc-3.8.9.c shc.c

 4. 建立鏈接後,我們執行 使安裝 具有root權限(我們將使用sudo):

 sudo make install

 4. 它將要求我們提供密碼,並且將等待片刻,它將等待我們按下鍵 [和] 然後按 [輸入],即,我們確認確實要安裝該軟件。 完成此操作後,安裝將沒有問題。 我為您提供了整個準備和安裝過程的屏幕截圖:

 

正如您最終看到的那樣,我得到一個錯誤,該錯誤指的是我的系統上沒有特定文件夾的事實,如果看到此錯誤,就不要對其賦予重要性... SHC 安裝成功😉
這樣他們就可以跑步 sudo make install es 必要 已安裝軟件包: GCC y 使

5. 完成,這就是安裝for

安裝後,我們只需要學習如何使用它。 假設我們家有一個腳本 腳本文件 其內容如下:

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

執行此腳本時,它將明顯在終端顯示以下消息:«FromLinux.net的測試腳本“ 或不? …但是,現在我們要混淆該代碼。

在終端中,我們輸入以下內容並按 [輸入]:

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) 前段時間向我提到了這個實用程序

沒有更多補充,任何疑問或疑問,投訴或建議讓我知道。

問候😀


本文內容遵循我們的原則 編輯倫理。 要報告錯誤,請單擊 這裡.

44條評論,留下您的評論

發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  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.   胡安·大衛 他說:

    朋友,碰巧當我對腳本進行模糊處理時,他創建了以結尾結尾的新腳本,我執行了它,甚至完美。 但是,當我使用linuz將它帶到另一台計算機上時,它無法運行,它已經具有所有權限,我創建了一個啟動器,並告訴它它是終端應用程序,但是它不起作用,請等待迅速的響應

    1.    KZKG ^ Gaara 他說:

      您是否已對其進行編譯並且正在具有相同體系結構的系統上運行它? 換句話說,如果在32位系統上對其進行編譯以使其模糊化,然後嘗試在64位系統上運行它,則會給您一個錯誤,反之亦然。 你明白?

      1.    胡安·大衛 他說:

        否,但是我已經提供了格式化同一台計算機,同一操作系統以及它無法運行,甚至不發送錯誤的格式。
        我通過控制台這樣調用它: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.   威廉 他說:

    您好,我有一個疑問,可以在任何類型的Linux發行版中安裝shc,例如red hat,該怎麼安裝?
    格拉西亞斯!

  15.   魯伊茲 他說:

    大家好,您的意見對我有很大幫助,但是當混淆在同一系統中使用不同的體系結構對我而言不起作用時,即以下問題,即如果我以32位格式進行處理,則無法以64位格式運行。 有誰知道它是否真的可以在不同的架構(32位和64位)上運行?