Hoe u code kunt verdoezelen of verbergen voor onze bash-scripts

Soms programmeren we een script in Slaan en we willen dat de code NIET zichtbaar is, dat wil zeggen dat het geen platte tekst is. Als we het hebben over het verbergen van code, is de juiste term verduisteren, in mijn geval wilde ik de code van verdoezelen een script dat ik enige tijd geleden heb gemaakt, het hulpprogramma dat ik hiervoor heb gevonden, heet: sch

sch Het stelt ons in staat om code te verdoezelen, hier zijn de stappen om het te gebruiken:

1. Eerst moeten we het downloaden

SHC v3.8.9 downloaden

2. Nadat we het hebben gedownload, klikken we met de rechtermuisknop op het gecomprimeerde bestand en selecteren we de optie die zegt:Pak hier uit" of iets dergelijks. Dit maakt een map met de naam shc-3.8.9, hier laat ik je een screenshot van de inhoud zien

3. Oké, laten we zeggen dat de map binnen is /home/gebruikersnaam/Downloads/shc-3.8.9 Nou, we openen een terminal en gaan naar die route (cd "/home/gebruikersnaam/Downloads/shc-3.8.9"), en hier begint de installatie.

 4. In de terminal bevindt zich (zoals ik je al heb verteld) in de map shc-3.8.9, om deze applicatie te installeren moeten we een symbolische link van het bestand maken shc-3.8.9.c a shc.c dus voeren we het volgende uit:

ln -s shc-3.8.9.c shc.c

 4. Zodra de koppeling is gemaakt, voeren we uit make install met rootrechten (we zullen sudo gebruiken):

 sudo make install

 4. Het zal ons om ons wachtwoord vragen en het zal even wachten, het zal wachten tot we op de toets drukken [EN] en druk op [Enter], dat wil zeggen dat we bevestigen dat we de software willen installeren. Zodra dit is gebeurd, wordt het zonder problemen geïnstalleerd. Hier is een screenshot van het hele voorbereidings- en installatieproces:

 


Zoals je kunt zien, krijg ik aan het einde een foutmelding, de fout verwijst naar het feit dat een bepaalde map niet in mijn systeem bestaat, als je dit ziet, hecht er dan gewoon geen belang aan... toch CHS succesvol geïnstalleerd 😉
Zodat ze kunnen rennen sudo make install es NOODZAKELIJK laat de pakketten installeren: gcc y maken

5. Klaar, dit is alles voor de installatie 😀

Als we het al hebben geïnstalleerd, hoeven we alleen maar te leren hoe we het moeten gebruiken. Stel dat we een script in huis hebben genaamd script.sh en de inhoud is als volgt:

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

Bij het uitvoeren van dit script zal het ons uiteraard in de terminal het bericht laten zien: «Testscript voor DesdeLinux.net" of niet? ... maar nu gaan we die code verdoezelen.

In een terminal plaatsen we het volgende en drukken [Enter]:

shc -v -f $HOME/script.sh

en bingo!! klaar 😀

Dit creëerde twee nieuwe bestanden voor ons naast ons script, nu hebben we script.sh.x y script.sh.xc

script.sh.x -» Dit is ons versluierde bash-script, wanneer we het uitvoeren, zal het precies hetzelfde doen als het eerste dat we hebben gemaakt, het verschil tussen deze is dat als we het eerste openen met een teksteditor (nano, kate, gedit, enz.) we konden de inhoud ervan duidelijk zien, terwijl als we ons openstellen voor script.sh.x we zullen duidelijk zien dat we niets zien... LOL!!!, dat wil zeggen, de code is 'versleuteld' 🙂

script.sh.xc -» Dit is ons script maar in C-taal... we kunnen dit zonder zorgen verwijderen omdat we het niet echt nodig hebben, nou ja, ik zou het in ieder geval helemaal niet nodig hebben 🙂

Er is niet echt veel meer toe te voegen aan de technische kant, alleen om te verduidelijken dat voor zover ik weet met deze (verbergende of verdoezelende bash-scriptcode) licenties niet worden geschonden of iets dergelijks. Ik verduidelijk dit omdat een paar maanden geleden op Facebook, toen ik zei dat ik had geleerd bash-code te verdoezelen, sommige gebruikers me waarschuwden dat dit in strijd was met licenties of iets dergelijks... kortom, voor zover ik begrijp, zijn licenties dat niet hiermee geschonden 😉

Veel dank aan Matias Gaston voor het noemen van dit hulpprogramma enige tijd geleden

Niets meer aan toe te voegen, elke twijfel of vraag, klacht of suggestie laat het me weten.

Groeten 😀


44 reacties, laat de jouwe achter

Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   xykyz zei

    Het is niet dat licenties worden geschonden, het is dat het niet langer vrije software is...

    1.    KZKG ^ Gaara zei

      Ja natuurlijk. Het punt is dat er bepaalde persoonlijke scripts van mij zijn waarvan ik niet wil dat anderen ze zien, bijvoorbeeld omdat een van deze scripts een wachtwoord in platte tekst heeft van mijn lokale MySQL, of iets dergelijks.

        1.    KZKG ^ Gaara zei

          Eigenlijk houd ik mijn wachtwoorden 'verborgen' via SHA (https://blog.desdelinux.net/como-saber-la-suma-md5-o-sha-de-una-palabra-oracion-o-archivo/), dan bewaar ik in het script de hash van het wachtwoord en vergelijk ik het wachtwoord dat de gebruiker invoert (ik sla het op met lezen), ik haal de SHA-som eruit en vergelijk beide aan het einde 🙂

          Heel erg bedankt voor de link, ik ben hem al aan het reviewen 😀

          groeten

        2.    Laten we Linux gebruiken zei

          Precies! Een shell-prompt die om het wachtwoord vraagt, is een goed alternatief.
          Proost! Paul.

          1.    msx zei

            Maar het biedt geen automatische en onbeheerde uitvoering zoals andersom. 🙂

      1.    Willians vivanco zei

        Het plaatsen van wachtwoorden en andere toegangs- of compromitterende gegevens in het script is een grote vergissing. Deze informatie moet worden opgeslagen in een ander bestand, met de juiste machtigingen, zodat u uw bash-script niet hoeft te verdoezelen. makkelijk he?

        1.    KZKG ^ Gaara zei

          Het probleem met het hebben van de gegevens (inlogvariabelen, confs, enz.) in een ander bestand is dat het 'systeem' of de 'applicatie' dan 2 bestanden nodig heeft om te werken, terwijl als ik alles op de meest 'veilige' manier opsla in één bestand, omdat ik dat maar nodig zou hebben... een enkel bestand.

          1.    Morpheus zei

            Het is een goede gewoonte om de toepassing van de gegevens te scheiden.
            Of beter gezegd, het is een slechte gewoonte om de gegevens hard te coderen!
            http://es.wikipedia.org/wiki/Hard_code
            Het heeft niets te maken met beveiliging door code en gegevens in hetzelfde bestand te plaatsen. En nog meer, precies het tegenovergestelde als u uw wachtwoorden daar hebt!

          2.    Willians vivanco zei

            De kosten voor het lezen van de gevoelige informatie uit een ander bestand zijn verwaarloosbaar in vergelijking met de processorkosten die nodig zijn om uw code "onduidelijk te maken".

            Aan de andere kant gooi je een heel paradigma van modulaire ontwikkeling op de grond, gokkend op een monolithisch model dat, meer dan bewezen, er meer problemen zijn dan de oplossingen die het met zich meebrengt.

          3.    msx zei

            En ook, als u machtigingen gebruikt waarbij andere groepen/gebruikers betrokken zijn, heeft u ook een initieel wachtwoord nodig om het eerste script uit te voeren.

          4.    msx zei

            @KZKG de opmerking hierboven is een reactie op uw opmerking
            @morpheo - Het is absoluut gerelateerd aan de specifieke behoefte.

    2.    Morpheus zei

      Maar als er gratis software is die binair is gecompileerd (wat meer is dan vertroebeling). Het feit dat het gratis is, impliceert dat het naast de broncode beschikbaar is, maar het heeft niets te maken met verduisteren (of compileren, wat essentieel is als ik bijvoorbeeld een C-programma wil draaien).

      1.    Willians vivanco zei

        In het geval van gecompileerde vrije software is het een kwestie van de vereiste taal die wordt gebruikt (als u in C programmeert, moet u compileren om uw applicatie te laten werken). En altijd hetzelfde, als het echt Vrije Software is, zal de broncode beschikbaar zijn.

  2.   Hyuuga_Neji zei

    humm ik wijs een zekere mate van apathie aan om code te delen hehehe laten we eens kijken hoeveel er uiteindelijk beginnen "hun codes te verdoezelen" om ons afhankelijker te maken van hun oplossingen ...

    1.    KZKG ^ Gaara zei

      Ik zeg niet dat code versluierd moet zijn of niet... Ik bied de tools, iedereen kan ze naar eigen behoefte gebruiken.

      1.    commentator zei

        Code op deze pagina verbergen?

        Ik denk dat het een goed idee is om lezers weg te houden, omdat ik denk dat veel van de mensen die deze blog bezoeken volgelingen zijn van vrije software, en daarom delen we niet de gewoonte om code te verdoezelen.

        1.    msx zei

          Je hebt duidelijk niet gelezen waarom KZKG pleit voor zijn behoefte om zijn script te verdoezelen.

          Bedankt KZKG voor het delen van je vondst!

  3.   Gabriel zei

    En zo beginnen virussen in Linux te circuleren...

    Persoonlijk zou ik NOOIT een versluierd script gebruiken. Niet alleen vanwege de veiligheidsrisico's, maar ook omdat als je script te kostbaar is om te delen, je het beter in de *ulo; ik kan vast wel iemand vinden die zijn kennis wil delen.

    1.    KZKG ^ Gaara zei

      Zou je ooit een versluierd script gebruiken? Nou, HEEL goed voor je, ik zou sowieso NOOIT een versluierd script gebruiken... het detail is dat ik NOOIT een versluierd script heb gedeeld, laat staan, en dat is waar de huidige fout ligt, lieve vriend 😉

      Telkens wanneer ik iets in Bash doe, deel ik het zonder me lastig te vallen of lastig te vallen, wat ik hier al in veel artikelen heb gedaan 😀

      Welkom op de blog, leuk om te lezen 😉

  4.   Percaff_TI99 zei

    Gabriel, KZKG^Gaara deelt al kennis, hij maakt geen linux-pakketten met verborgen scripts die een licentieschending kunnen zijn, het onthult alleen applicaties die al dan niet nuttig zijn voor eigen gebruik, het is niet nodig om onbeleefd te zijn , wat betreft virussen in linux is het niet zo eenvoudig, hier is een goed artikel over https://blog.desdelinux.net/virus-en-gnulinux-realidad-o-mito/.
    KZKG^Gaara Ik zou graag willen dat je een bericht schrijft over encfs en cryptografie met behulp van afbeeldingen, het is een onderwerp dat ik erg leuk vind.
    Proost !!!

    1.    KZKG ^ Gaara zei

      Bedankt
      Het is niet echt dat ik genoeg kennis heb over encfs en cryptografie, ik voel me tenminste niet zelfverzekerd genoeg om een ​​bericht te plaatsen en de twijfels aan te nemen die gebruikers kunnen hebben 😀
      Het is niet alsof ik een gevorderde gebruiker ben op dit gebied...
      Het meeste dat ik heb gedaan, is GPG gebruiken om bestanden te versleutelen, en wat afbeeldingen betreft, is het meeste dat ik heb gedaan een bestand in een afbeelding 'plaatsen' of verbergen, wat uiteraard wordt bereikt wanneer de afbeelding wordt geopend met een afbeelding viewer alles wordt correct weergegeven, bedoel je dit?

      Nogmaals heel erg bedankt voor je reactie 🙂

  5.   ratakruel zei

    Als ik het me goed herinner, zijn er verborgen C-kampioenschappen, maar het is niet de moeite waard om een ​​"obfuscator" te gebruiken, maar ze moeten hun bronnen zonder condoom verbergen.

    Wat betreft shc en je scripts met wachtwoorden... zeer slechte manier van werken!

    Interessant artikel, zoals altijd.

    1.    KZKG ^ Gaara zei

      Ja, meer dan één heeft het me al verteld LOL!!
      Bedankt voor je reactie 🙂

  6.   ooit zei

    Kortom, als u de toepassing deelt zonder het zichtbare script te delen, schendt u de GPL, die vereist dat alles dat met een GPL-toepassing wordt gegenereerd, GPL is. Daarom genereert SHC C, want dat is de code die je kunt delen.

    groeten

  7.   Laten we Linux gebruiken zei

    Ik ben het eens met de opmerkingen van andere lezers: het is niet alleen geen goede gewoonte om gegevens en scripts allemaal bij elkaar op te slaan, maar het is ook niet bevorderlijk voor de ontwikkeling van vrije software.
    Een knuffel! Paul.

    1.    KZKG ^ Gaara zei

      Hoi Paul 🙂
      Ik heb een ander versluierd script dat intern op mijn laptop werkt, ik verduister het omdat ik gewoon niet wil dat iemand om de een of andere reden mijn script naar een andere computer kopieert, ik wil gewoon niet dat ze kunnen zien wat het bevat , het is een 'veiligheidsmaatregel' Wat neem ik mee?

      Echter hier binnen DesdeLinux Ik maak alles of bijna alles wat ik in Bash programmeer en dat interessant kan zijn openbaar.

      Hoe dan ook, het is niet dat ik nu een persoonlijk script verdoezel, omdat ik dit voor persoonlijke doeleinden doe, ben ik een tegenstander van SWL, laat staan ​​😀

      Groeten vriend

  8.   codelab zei

    Goede informatie. Afgezien van de controverses die in de commentaren worden gegenereerd, lijkt het mij informatie om wat meer te blijven onderzoeken.

    Ik denk dat de auteur ons op geen enkel moment in het artikel vertelt of het goed of slecht is gedaan of dat we het wel of niet moeten doen, hij vertelt ons gewoon de tool waarmee het kan worden gedaan voor het geval iemand het nuttig vindt.

    Een groet.

    codelab

    1.    f3niX zei

      In Linux-blogs is alles controversieel, haha ​​dat is altijd al zo geweest.

      1.    msx zei

        @F3niX Ik ga een screenshot van je opmerking bijsnijden om te posten telkens wanneer iemand er een stomme melding van maakt.

        Opmerking: eens kijken wanneer ik je vind op irc en de Chakra-forums 😉

    2.    KZKG ^ Gaara zei

      PRECIES!!
      Ik laat/leer/leg gewoon iets nieuws uit dat ik heb geleerd, het is aan jou om deze kennis te gebruiken of niet, ik dwing je niet, verre van.

      Voor zover ik weet, is kennis delen iets positiefs, toch? 0_oU

      Bedankt voor je reactie, het is goed om te weten dat er meer dan een of twee zijn die het ware doel van dit artikel begrijpen.

  9.   Percaff_TI99 zei

    Je hebt me in het nauw gedreven xD, een paar weken geleden heb ik een bericht voorbereid met de titel "Installatie en testen van Crux" en ondanks het feit dat de installatie met succes is uitgevoerd, ben ik een normale gebruiker en Ik weet niet of ik de twijfels van derden het hoofd kan bieden, het is de bedoeling om als hulpmiddel te dienen voor discussie over de deugden en gebreken van deze distro en mogelijke oplossingen voor problemen die zich kunnen voordoen door ons te helpen onder alle gebruikers en lezers. Wanneer ik het af heb en ter beoordeling opstuur, zullen jullie (beheerders) beslissen. Wat betreft het onderwerp cryptografie in afbeeldingen, het was hetzelfde, bedankt KZKG^Gaara voor het beantwoorden.

    Groeten!

    1.    KZKG ^ Gaara zei

      Ok met plezier, daar zal ik een post over maken 😉

  10.   makubex uchiha zei

    Uitstekende tutorial bro Ik vond het erg handig: 3
    Voor degenen die het willen installeren in manjaro linux en archlinux-derivaten, het pakket staat in aur met de naam: shc

    groeten

  11.   kaders zei

    Sorry vriend, ik had een klein script dat de HOOFDLETTERS omzet in kleine letters die op het klembord stonden (xclip)

    het script werkt normaal als het niet versluierd is

    #! / Bin / bash
    xclip -o > R1.txt
    kat R1.txt | tr [:boven:] [:onder:]
    gooide uit ""
    rm R1.txt

    maar wanneer ik het versluierde script wil uitvoeren
    mij dobbelstenen

    ./M2m.sh: Bediening niet toegestaan
    klaar (gedood)

    Help alsjeblieft

    1.    KZKG ^ Gaara zei

      Heb je xclip geïnstalleerd?

  12.   SynFlag zei

    Opgemerkt moet worden dat het eigenlijk een bash-compiler is, net zoals er .bat-compilers of .php zijn.
    Ik weet niet of de code die het produceert gecodeerd en versluierd is en niet bestand is tegen een decompiler, we zouden het moeten proberen, aangezien het niet mijn vakgebied is. Ik zeg geen ja of nee, maar wat ik zie dat het doet, is een compileren bash, in de .c Je kunt de code zien, die, binnen de versluierde, ik zie dat het in regels staat die eruitzien als een exploit-shell, ik weet niet of ze echt versluierd zijn, aangezien er niet om een ​​wachtwoord wordt gevraagd of Ik weet het niet, master.config waar een wachtwoord vorig trefwoord is gedefinieerd.

  13.   juan david zei

    vrienden, het komt voor dat wanneer ik mijn script verdoezel, het het nieuwe script met ex-einde maakt, ik voer het uit en het is zelfs perfect. Maar als ik het met linuz naar een andere computer breng, werkt het niet, het heeft al alle machtigingen, ik maak een opstartprogramma en ik vertel het dat het een applicatie in de terminal is, maar het werkt niet, wacht alsjeblieft op een snelle reactie

    1.    KZKG ^ Gaara zei

      Heb je het gebouwd en draai je het op een systeem met dezelfde architectuur? Dat wil zeggen, het geeft je een foutmelding als je het hebt gecompileerd om het op een 32-bits systeem te verdoezelen en het vervolgens op een 64-bits systeem probeert uit te voeren, of vice versa. je begrijpt?

      1.    juan david zei

        Nee, maar ik heb al geprobeerd dezelfde computer te formatteren, met hetzelfde besturingssysteem en het werkt niet, het geeft zelfs geen foutmelding.
        Ik noem het op deze manier per console: sudo /home/operations/script.x en ik krijg deze foutmelding

        /home/operations/script.x: �e��}8-����q�,�K�

        nogal een geval

        1.    KZKG ^ Gaara zei

          Probeer het uit te voeren ZONDER te compileren om te zien of het een fout in de code is

    2.    Nick zei

      Zodat u het versluierde script op andere computers kunt uitvoeren, moet u het compileren met de optie "-r Relax-beveiliging. Maak een herdistribueerbaar binair bestand", anders wordt het alleen uitgevoerd op de machine waarop het script met SHC is versluierd.
      voorbeeld:

      shc -r -f script.sh

  14.   william zei

    Hallo, ik heb een vraag, kan shc in elk type Linux-distributie worden geïnstalleerd?Bijvoorbeeld, red hat, hoe zou de installatie ervoor zijn?
    Dank je wel!

  15.   Ruyzz zei

    Hallo allemaal, jullie opmerkingen hebben me veel geholpen, maar ik heb het volgende probleem: wanneer ik de verduistering uitvoer, werkt het niet op hetzelfde systeem maar met een andere architectuur, dat wil zeggen, als ik het in 32 bits doe, kan het niet worden uitgevoerd in 64 bits. Weet iemand of het daadwerkelijk kan worden uitgevoerd op verschillende architecturen (32 en 64 bit)?