Comment masquer ou masquer le code de nos scripts bash

Parfois, nous programmons un script dans Frapper et nous voulons que le code de celui-ci ne soit PAS visible, c'est-à-dire qu'il ne soit pas en texte brut. Lorsque nous parlons de masquer du code, le terme correct est brouiller, dans mon cas, je voulais masquer le code un script que j'ai fait il y a quelque temps, l'utilitaire que j'ai trouvé pour cela s'appelle: shc

shc Cela nous permet de brouiller le code, voici les étapes pour l'utiliser:

1. Nous devons d'abord le télécharger

Télécharger SHC v3.8.9

2. Une fois que nous l'avons téléchargé, nous faisons un clic droit sur le fichier compressé et sélectionnons l'option qui dit «Extraire ici"ou quelque chose de similaire. Cela nous fera voir un dossier appelé shc-3.8.9, ici je vous montre une capture d'écran de son contenu

3. OK, disons que le dossier est à /home/usuario/Downloads/shc-3.8.9 Eh bien, nous ouvrons un terminal et allons sur cette route (cd "/home/usuario/Downloads/shc-3.8.9"), et l'installation commence ici.

 4. Dans le terminal se trouvant (comme je vous l'ai déjà dit) dans le dossier shc-3.8.9, pour installer cette application, nous devons créer un lien symbolique du fichier shc-3.8.9.c a shc.c nous exécutons donc ce qui suit:

ln -s shc-3.8.9.c shc.c

 4. Une fois le lien fait, nous exécutons make install avec les autorisations root (nous utiliserons sudo):

 sudo make install

 4. Il nous demandera notre mot de passe et il attendra un moment, il attendra que nous appuyions sur la touche [ET] et appuyez sur [Entrer], c'est-à-dire que nous confirmons que nous voulons installer le logiciel. Une fois cela fait, il s'installera sans problème. Je vous laisse une capture d'écran de l'ensemble du processus de préparation et d'installation:

 


Comme vous pouvez le voir à la fin, j'obtiens une erreur, l'erreur se réfère au fait qu'un certain dossier n'existe pas sur mon système, si vous voyez cela, ne lui donnez pas d'importance ... CSS installé avec succès 😉
Pour qu'ils puissent courir sudo make install es NÉCESSAIRE installez les packages: gcc y faire

5. C'est fait, c'est tout pour l'installation 😀

Une fois que nous l'avons installé, nous devons simplement apprendre à l'utiliser. Supposons que nous ayons un script dans notre maison appelé script.sh et que son contenu est le suivant:

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

Lors de l'exécution de ce script il nous montrera évidemment dans le terminal le message: «Script de test pour DesdeLinux. Net" ou non? … Mais, maintenant, nous allons obscurcir ce code.

Dans un terminal, nous mettons ce qui suit et appuyez sur [Entrer]:

shc -v -f $HOME/script.sh

Et le bingo !! prêt 😀

Cela nous a créé deux nouveaux fichiers avec notre script, maintenant nous avons script.sh.x y script.sh.xc

script.sh.x - » Ceci est notre script bash obscurci, celui-ci, lorsque nous l'exécutons, fera exactement la même chose que le premier que nous avons créé, la différence entre ceux-ci est que le premier si nous l'avons ouvert avec un éditeur de texte (nano, kate, gedit, etc.) nous pourrions voir clairement son contenu, tandis que si nous ouvrons à script.sh.x on verra clairement qu'on ne voit rien ... LOL !!!, c'est-à-dire que le code est 'crypté' 🙂

script.sh.xc - » Ceci est notre script mais en langage C ... nous pouvons le supprimer sans souci car nous n'en avons pas vraiment besoin, enfin, au moins je n'en aurais pas besoin du tout 🙂

Il n'y a pas grand chose d'autre à ajouter en fait sur le plan technique, juste pour clarifier que pour autant que je sache (cacher ou masquer le code de script bash), il ne viole pas les licences ou quelque chose du genre. Je clarifie cela car il y a quelques mois sur Facebook, lorsque j'ai mentionné que j'avais appris à obscurcir le code bash, certains utilisateurs m'ont alerté que cela violait des licences ou quelque chose du genre ... eh bien, pour autant que je sache, les licences ne sont pas violées avec ça 😉

Merci beaucoup à Matias Gaston pour m'avoir mentionné cet utilitaire il y a quelque temps

Rien de plus à ajouter, aucun doute ou question, plainte ou suggestion me le fait savoir.

Salutations 😀


44 commentaires, laissez le vôtre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   xykyz dit

    Ce n'est pas que les licences sont violées, c'est que ça cesse d'être un logiciel libre ...

    1.    KZKG ^ Gaara dit

      Oui bien sûr. Le fait est qu'il y a certains de mes scripts personnels que je ne veux pas que les autres voient, par exemple parce que l'un de ces scripts a un mot de passe en texte brut de mon MySQL local, ou quelque chose de similaire.

      1.    Morphée dit

        NON! N'enregistrez pas vos mots de passe dans des scripts!
        http://technosophos.com/content/dont-script-your-password-add-simple-prompts-shell-scripts

        1.    KZKG ^ Gaara dit

          En fait, je garde mes mots de passe `` cachés '' en utilisant SHA (https://blog.desdelinux.net/como-saber-la-suma-md5-o-sha-de-una-palabra-oracion-o-archivo/), puis dans le script je garde le hachage du mot de passe et ce que je fais est de comparer le mot de passe que l'utilisateur entre (je l'enregistre avec read), j'obtiens la somme SHA et je compare les deux à la fin 🙂

          Bref, merci beaucoup pour le lien, je suis déjà en train de le revoir reviewing

          salutations

        2.    Utilisons Linux dit

          Exact! Une invite shell demandant le mot de passe est une bonne alternative.
          À votre santé! Paul.

          1.    msx dit

            Mais il ne fournit pas une exécution automatique et sans surveillance comme il le fait dans l'autre sens. 🙂

      2.    Willians vivanco dit

        Mettre des mots de passe et d'autres accès ou compromettre des données dans le script est une grosse erreur. Ces informations doivent être enregistrées dans un autre fichier, avec les autorisations appropriées, vous n'aurez donc pas à masquer votre script bash. Facile hein?

        1.    KZKG ^ Gaara dit

          Le problème d'avoir les données (variables de connexion, confs, etc.) dans un autre fichier est que le `` système '' ou `` l'application '' a besoin de 2 fichiers pour fonctionner, alors que si je stocke le plus `` sécurisé '' possible tout dans un seul fichier, eh bien je n'aurais besoin que de ça ... un seul fichier.

          1.    Morphée dit

            Il est recommandé de séparer l'application des données.
            Ou plutôt c'est une pratique terrible de coder en dur les données!
            http://es.wikipedia.org/wiki/Hard_code
            Cela n'a rien à voir avec la sécurité en mettant le code et les données dans le même fichier. Et encore plus, bien au contraire si vous avez vos mots de passe là-bas !!

          2.    Willians vivanco dit

            Le coût de lecture des informations sensibles à partir d'un autre fichier est négligeable à côté du coût du processeur nécessaire pour «récupérer» votre code.

            D'un autre côté, vous jetez tout un paradigme de développement modulaire, pariez sur un modèle monolithique qui, plus que prouvé, il y a plus de problèmes que de solutions.

          3.    msx dit

            Et aussi que si vous utilisez des autorisations qui vont nécessairement impliquer d'autres groupes / utilisateurs, vous aurez toujours besoin d'un mot de passe initial pour exécuter le premier script.

          4.    msx dit

            @KZKG le commentaire ci-dessus est en réponse à votre commentaire
            @morpheus: c'est absolument relatif au besoin particulier.

    2.    Morphée dit

      Mais il existe des logiciels libres compilés en binaire (ce qui est plus qu'obscurcir). Le fait qu'il soit gratuit implique qu'il a aussi la source, mais cela n'a rien à voir avec l'obscurcissement (ou la compilation, ce qui est essentiel si je veux exécuter un programme C, par exemple)

      1.    Willians vivanco dit

        Dans le cas des logiciels libres compilés, il s'agit de l'exigence du langage utilisé (si vous programmez en C, vous devez compiler pour que votre application fonctionne). Et la même chose, toujours, s'il s'agit vraiment de Logiciel Libre, le code source sera disponible.

  2.   Hyuga_Neji dit

    humm dénote un certain degré d'apathie à partager du code hehehe pour voir combien finissent par commencer à "obscurcir leurs codes" pour nous rendre plus dépendants de leurs solutions ...

    1.    KZKG ^ Gaara dit

      Je ne dis pas que le code doit être obscurci ou pas ... Je donne les outils, chacun pour les utiliser selon ses besoins.

      1.    commentateur dit

        Code obscurcir sur cette page?

        Je pense que c'est une bonne idée de distancer les lecteurs, car je considère que beaucoup de personnes qui visitent ce blog sont des adeptes du logiciel libre, et donc nous ne partageons pas la pratique du code obscurcissant.

        1.    msx dit

          Vous n'avez évidemment pas lu la raison pour laquelle KZKG fait valoir et pourquoi il explique son besoin d'obscurcir son script.

          Merci KZKG d'avoir partagé votre trouvaille!

  3.   Gabriel dit

    Et ainsi les virus commencent à circuler sous Linux ...

    Personnellement, je n'utiliserais JAMAIS de scripts obscurcis. Non seulement à cause des risques de sécurité impliqués, mais parce que si votre script est trop précieux pour être partagé, il vaut mieux le mettre dans le fichier * ulo; je peux sûrement trouver quelqu'un qui souhaite partager ses connaissances.

    1.    KZKG ^ Gaara dit

      Utiliseriez-vous jamais un script obscurci?, Eh bien, TRÈS bien pour vous, je n'utiliserais JAMAIS un script obscurci ... le détail est que, je n'ai JAMAIS partagé un script obscurci, loin de là, et là cher ami est où le l'erreur est présente

      Chaque fois que je fais quelque chose dans Bash, je le partage sans me peser ni me déranger, ce que j'ai déjà fait dans de nombreux articles ici 😀

      Bienvenue sur le blog, un plaisir de vous lire 😉

  4.   Percaff_TI99 dit

    Gabriel, KZKG ^ Gaara partage déjà des connaissances, il ne crée aucun paquet linux avec des scripts obscurcis qui pourraient être une violation de licence, il ne révèle que des applications qui peuvent ou non être utiles pour son propre usage, il n'est pas nécessaire d'être impoli, quant aux virus sous linux ce n'est pas si simple, voici un bon article à ce sujet https://blog.desdelinux.net/virus-en-gnulinux-realidad-o-mito/.
    KZKG ^ Gaara J'aimerais que vous écriviez un article sur les encfs et la cryptographie à l'aide d'images, c'est un sujet que j'aime beaucoup.
    À votre santé !!!

    1.    KZKG ^ Gaara dit

      Merci
      En fait, ce n'est pas que j'ai suffisamment de connaissances sur les encfs et la cryptographie, du moins je ne me sens pas assez en confiance pour faire un post et assumer les doutes que les utilisateurs peuvent avoir 😀
      Dans cette rubrique ce n'est pas que je sois un utilisateur avancé ...
      Le plus que j'ai fait est d'utiliser GPG pour crypter des fichiers, et comme pour les images, le plus que j'ai fait est `` d'insérer '' ou de masquer un fichier dans une image, ce qui rend évident que lorsque l'image est ouverte avec une visionneuse d'images, tout est montré correctement, c'est ce que tu veux dire?

      Encore une fois, merci beaucoup pour votre commentaire 🙂

  5.   ratakruel dit

    Si je me souviens bien, il y a des championnats C obscurcis, mais cela ne vaut pas la peine d'utiliser un «obfuscateur» mais ils doivent obscurcir leurs sources à cru.

    Quant à shc et votre script avec des mots de passe… très mauvaise façon de travailler!

    Article intéressant, comme toujours.

    1.    KZKG ^ Gaara dit

      Oui, plus d'un m'a déjà dit LOL !!
      Merci pour ton commentaire 🙂

  6.   déjà dit

    Fondamentalement, si vous partagez l'application sans partager le script visible, vous violeriez la GPL, qui exige que tout ce qui est généré avec une application GPL soit GPL. C'est pourquoi SHC génère le C, car c'est le code que vous pouvez partager.

    salutations

  7.   Utilisons Linux dit

    Je suis d'accord avec les commentaires des autres lecteurs: non seulement ce n'est pas une bonne pratique de stocker les données et les scripts ensemble, mais ce n'est pas non plus propice au développement de logiciels libres.
    Un câlin! Paul.

    1.    KZKG ^ Gaara dit

      Bonjour Pablo 🙂
      J'ai un autre script obscurci qui fonctionne en interne sur mon ordinateur portable, je le dissimule parce que je ne veux tout simplement pas que si quelqu'un pour une raison quelconque réussit à copier mon script sur un autre ordinateur, je ne veux tout simplement pas qu'il puisse voir de quoi il s'agit contient, c'est une «mesure de sécurité» que je prends.

      Cependant, ici, dans DesdeLinux Je rends public tout ou presque tout ce que je programme dans Bash qui pourrait être intéressant.

      En bref, ce n'est pas que je sois maintenant un détracteur de la SWL pour obscurcir un script personnel, pour le faire à des fins personnelles 😀

      Salutations ami

  8.   labo de code dit

    Bonne information. Hormis les controverses qui sont générées dans les commentaires, il me semble qu'il faut continuer d'enquêter un peu plus.

    Je pense que l'auteur à aucun moment dans l'article ne nous dit si c'est bien ou mal fait ou si nous devons ou ne devons pas le faire, il nous indique simplement l'outil avec lequel cela peut être fait au cas où cela profite à quelqu'un .

    Salutations.

    labo de code

    1.    f3niX dit

      Dans les blogs Linuxeros, tout est controversé, haha ​​ça a toujours été comme ça.

      1.    msx dit

        @ F3niX Je vais faire une capture d'écran avec votre commentaire pour le mettre à chaque fois que quelqu'un fait une stupide mention du sujet.

        Note: voyons quand je peux vous trouver sur les forums irc et Chakra 😉

    2.    KZKG ^ Gaara dit

      EXACT!!
      Je montre simplement / enseigne / explique quelque chose de nouveau que j'ai appris, c'est votre décision d'utiliser ces connaissances ou non, je ne vous force pas, encore moins.

      Pour autant que je sache, partager des connaissances est une bonne chose, non? 0_oU

      Merci pour ton commentaire, il est bon de savoir qu'il y en a plus d'un ou deux qui comprennent le véritable but de cet article.

  9.   Percaff_TI99 dit

    Là vous m'avez mis dans une situation difficile xD, il y a quelques semaines je préparais un article qui allait s'intituler «Installation et test de Crux» et malgré le fait que l'installation a été effectuée avec succès, je suis un utilisateur normal et Je ne sais pas si je pourrai faire face aux doutes de tiers, l'intention est de servir d'instrument de discussion sur les vertus et les défauts de cette distribution et les solutions possibles aux problèmes qui peuvent survenir en nous aidant parmi tous les utilisateurs et les lecteurs. Lorsque je l'ai terminé et que je l'ai envoyé pour examen, vous (les administrateurs) déciderez. Quant à la question de la cryptographie dans les images, c'était la même chose, merci KZKG ^ Gaara d'avoir répondu.

    Salutations!

    1.    KZKG ^ Gaara dit

      Ok avec plaisir, je vais faire un post à ce sujet 😉

  10.   Makubex Uchiwa dit

    excellent tuto bro je l'ai trouvé très utile: 3
    pour ceux qui veulent l'installer dans manjaro linux et les dérivés d'archlinux le paquet est en aur avec le nom: shc

    salutations

  11.   cadres dit

    Excusez-moi, mon ami, j'avais un petit script qui convertissait les LETTRES MAJUSCULES EN lettres minuscules qui se trouvaient dans le presse-papiers (xclip)

    le script fonctionne normalement lorsqu'il n'est pas obscurci

    #! / Bin / bash
    xclip -o> R1.txt
    cat R1.txt | tr [: supérieur:] [: inférieur:]
    chassèrent ""
    rm R1.txt

    mais quand je veux exécuter le script obscurci
    moi des dés

    ./M2m.sh: opération non autorisée
    Terminé (tué)

    Veuillez aider

    1.    KZKG ^ Gaara dit

      Avez-vous installé xclip?

  12.   SynFlag dit

    Il convient de noter qu'il s'agit en fait d'un compilateur bash, comme il existe des compilateurs .bat ou .php.
    Je ne sais pas si le code qui produit est chiffré et obscurci et ne résiste pas à un décompilateur, il faudrait essayer, puisque ce n'est pas mon champ je ne dis pas oui ou non, mais ce que je vois que ça fait c'est compiler un bash, dans le .c c'est Vous pouvez voir le code, qui, dans le brouillage, je vois qu'il est en lignes qui ressemblent à un shell d'exploit, je ne sais pas si elles sont vraiment obscurcies, puisque, aucun mot de passe n'est demandé ou un je ne sais pas, master.config où un mot-clé précédent.

  13.   juan david dit

    amis il arrive que lorsque j'obscurcit mon script, il crée le nouveau script avec une fin ex, je l'exécute et il est même parfait. Mais quand je l'emporte sur un autre ordinateur avec linuz, il ne fonctionne pas, il a déjà toutes les autorisations, je crée un lanceur et lui dis que c'est une application de terminal, mais cela ne fonctionne pas, veuillez attendre une réponse rapide

    1.    KZKG ^ Gaara dit

      L'avez-vous compilé et l'exécutez-vous sur un système avec la même architecture? En d'autres termes, cela vous donnera une erreur si vous l'avez compilé pour le masquer sur un système 32 bits, puis que vous essayez de l'exécuter sur un système 64 bits, ou vice versa. Tu comprends?

      1.    juan david dit

        Non, mais j'ai déjà fourni le formatage du même ordinateur, avec le même système d'exploitation et il ne fonctionne pas, il n'envoie même pas d'erreur.
        Je l'appelle par console comme ceci: sudo /home/operations/script.x et j'obtiens cette erreur

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

        un cas entier

        1.    KZKG ^ Gaara dit

          Essayez de l'exécuter SANS compiler pour voir s'il s'agit d'une erreur dans le code

    2.    Nicolas dit

      Pour que vous puissiez exécuter le script obscurci sur d'autres ordinateurs, vous devez le compiler avec l'option «-r Relax security. Créer un binaire redistribuable ', sinon il ne fonctionnera que sur la machine où le script a été masqué avec SHC.
      exemple:

      shc -r -f script.sh

  14.   william dit

    Bonjour, j'ai une question, le shc peut être installé dans n'importe quel type de distribution Linux?, Par exemple Red Hat, comment serait l'installation pour celle-ci?
    Merci!

  15.   Ruyzz dit

    Bonjour à tous, vos commentaires m'ont beaucoup aidé, mais j'ai le problème suivant, lorsque l'obfuscation ne fonctionne pas pour moi dans le même système mais avec une architecture différente, c'est-à-dire que si je le fais en 32 bits, il ne peut pas fonctionner en 64 bits. Est-ce que quelqu'un sait s'il peut vraiment être exécuté sur différentes architectures (32 et 64 bits)?