Comment convertir un script shell en un exécutable binaire?

36

Je veux convertir mes scripts shell en exécutables binaires afin que personne d'autre ne puisse les éditer ou les lire. Y at-il un moyen de le convertir en un exécutable binaire?

munish
la source
@ l0b0 Ce lien mentionne deux raisons. La troisième raison: vous voulez qu'il s'exécute sur des machines sur lesquelles l'interpréteur n'est pas installé (par exemple, en exécutant un script bash sur une machine uniquement équipée de sh). La quatrième raison: il a besoin de setuid root pour une raison quelconque (par exemple, un script qui permet à l'utilisateur de monter des volumes sans sudo).
Calmarius

Réponses:

42

shc est ce que vous cherchez. obtenez-le ici: shc
extrait, cd dans dir, makepuis ./shc -f SCRIPT. Terminé.

Vous trouverez ici tout ce dont vous avez besoin:
SHC Howto

xx4h
la source
8
+1 wow, c'est intéressant. Sachez simplement que si le processus est exactement tel qu'il est décrit, il s'agit d'une méthode peu efficace pour dissimuler un mot de passe - il pourrait quand même être extrait par quelqu'un qui connaît la structure des exécutables. Cependant, ce serait très efficace pour masquer un script d'observateurs occasionnels. Je serais intéressé de savoir si les scripts pré-compilés de cette façon sont plus rapides à exécuter.
goldilocks
21
Notez que cela ne fonctionne pas avec bash(ou shbasé sur bash), comme on peut le faire: env SHELLOPTS=verbose ./script.xvoir le contenu du script. Il existe probablement des moyens faciles de contourner d'autres obus.
Stéphane Chazelas
4
Dans la page de manuel de shc, "Malheureusement, cela ne vous donnera aucune amélioration de la vitesse, contrairement à un programme réel." datsi.fi.upm.es/~frosal/sources/shc.html
Adam
shc a été mis à jour en 3.9.0: github.com/neurobin/shc
Jahid
Bien que SHC ne puisse pas vous donner l’amélioration de la vitesse que vous espérez, il offre la possibilité de pirater lui-même SHC pour obtenir une meilleure traduction de votre script. Écrire un script de shell propre et améliorer ensuite SHC pourrait être plus productif que d'écrire un programme C de toutes pièces ou de convoluer un script de shell pour le rendre plus rapide.
Kaz
1

Si l'objectif ici est de masquer votre script shell afin qu'il ne puisse pas être lu ou modifié, essayez de le coller sur le site Web suivant:

Cryptage et dissimulation combinés

Lorsque vous soumettez votre script sur ce site, un fichier zip sera créé pour vous. Effectuez les étapes suivantes pour générer un exécutable autonome à partir de ce fichier zip.

  1. Après avoir soumis votre script, faites un clic droit sur le lien de téléchargement.
  2. Allez sur votre hôte Unix et wget ou (curl -O) le lien de téléchargement
  3. Décompressez le fichier zip
  4. cd EnScryption.com
  5. ./(votre-script.sh)

L'étape 5 configurera automatiquement le script et générera une copie autonome pour vous. Vous pouvez ensuite envoyer cette copie autonome à différents hôtes ou la distribuer comme vous le souhaitez. Remarque: une fois chiffré, vous ne pouvez pas modifier le nom de votre script. C'est pour des raisons de sécurité.

Une autre option à votre disposition, si vous avez le temps, est de créer votre propre algorithme d’obscurcissement sécurisé. Si votre script doit être portable, vous devez utiliser des outils disponibles sur la plupart des systèmes Unix ... c'est-à-dire. openssl ou base64. Cela nécessite beaucoup de temps. Mais si la motivation est là, il est en effet possible de rendre impossible la révélation de vos scripts ou tout au moins, une perte de temps!

Jake
la source
13
Je recommanderais contre un tel service. Vous ne pouvez jamais être sûr qu'ils n'injectent aucun malware avant de vous le remettre. Même si les créateurs eux-mêmes n'essayent pas de le faire, l'adversaire peut compromettre leur serveur pour effectuer de telles injections en secret.
ddnomad
"Après avoir soumis votre script" est exactement le contraire de la protection de votre code.
Giuseppe Urso
-1

bzexe peut convertir et compresser le fichier

utilisateur352325
la source
1
Je ne vois pas vraiment comment cela empêcherait quiconque d'extraire le fichier pour obtenir le script shell d'origine, ce que l'utilisateur voulait empêcher. La compression ne cache rien.
Kusalananda