シェルスクリプトを暗号化または読み取り不可にするにはどうすればよいですか?


9

シェルスクリプトを裸眼で読めないように暗号化またはスクランブルするにはどうすればよいですか?どちらの方法でも問題ありません。具体的な手順を教えてください。


私の意見では、shcにはいくつかの欠点があります。github(obash)で進行中のプロジェクトで、これらの問題に対処しようとしています。shcの方が自分に合っているかどうかを確認したい場合があります。
louigi600 2017

回答:


11

SHC

このWebサイトで概説されている手順を試すことができます:SHCを使用してLinuxでBashシェルスクリプトを暗号化する方法。この記事では、SHCシェルスクリプトコンパイラと呼ばれるツールの使用について説明します。

URLリソース

これは、gcc / g ++を使用してビルドする必要がある実行可能ファイルです。

使用法

$ ./shc -f random.sh

シェルスクリプトを実行すると、random.shこのファイルに変換されます。

-rwx-wx--x. 1 ramesh ramesh 11752 Mar 27 01:12 random.sh.x

これは間違いないですか?

SHCツールで使用されている方法の優れた分析はありません。SHCツールは過度に強力ではなく、何をしているのかを知っていれば回避できることを示しています。記事はlinuxjournal.comのWebサイトに投稿されました。タイトルはParanoid Penguin-Limitations of shc、a Shell Encryption Utilityです。

注:これらのツールのクラスは、難読化ツールとしてよりよく説明されています。


@simありがとう。そのスクリプトを解読する方法はありますか???
Ram

@Ram-はい、これは決して間違いのないことではありません。何を隠そうとしているの?ユーザー/パスワード情報またはスクリプトの仕組み
slm

@simスクリプトのしくみを非表示にしようとしていますか?
Ram

@Ram-OKそれはおそらくOKですが、パスワードを隠そうとすることはお勧めしません。私がこのアプリを試したとき、私のコンピューターでは少し奇妙な動作をしていました。試してみましたが、結果の実行可能ファイルはバックグラウンドであるかのように起動していたため、コマンドfgを実行してフォアグラウンドにする必要がありましたが、正常に動作しました。私はまだ代替案を探しています。
slm

9
その名前にもかかわらず、SHCはスクリプトを意味のある方法で暗号化しません。暗号化とは、使用前に復号化されることを意味します。スクリプトを実行できる場合は、最初に復号化する必要があり、その時点で抽出できます。プログラムの動作を変えずにプログラムを理解しにくくすることを難読化といいます。それは非常に非常に非常に価値があることは非常にまれであり、シェルスクリプトの場合、それはその有用性を大幅に過大評価しています。
Gilles「SO-邪悪になるのをやめる」

29

シェルスクリプトを暗号化する場合は、GPGを使用します。もちろん、スクリプトを実行したい人は、まずスクリプトを解読する必要があります。

だれかがスクリプトを実行できるようにして、それを読み取らないようにしたい場合は、暗号化とはまったく関係のないまったく別の問題です。それは難読化と呼ばれます

そのスクリプトにパスワードやその他の機密情報が含まれている場合は、難読化してもそれが隠されることはありません。遅かれ早かれ、スクリプトはパスワードを使用して何かを行い、その時点でパスワードを探している人にはパスワードが明確に表示されます。

誰かがスクリプトをコピーするのではないかと心配してスクリプトの動作を隠したい場合は、忘れてください。誰も気にしない。

品質に恥じているためにスクリプトを非表示にしたい場合は、修正します。

スクリプトの機能を非表示にするためにスクリプトの動作を非表示にしたい場合は、実行できません。誰かが実行中にスクリプトを見て、それが何をしているかを見ることができます。

ここまで読んだ後もスクリプトを「暗号化」したい場合は、大きなことを誤解していることになります。スクリプトを他人に送信したり、プレーンテキストで送信したりしないでください。


4
「誰も気にしない」の場合は+1。一部の人気にすることを除いて-難読化されたシェルスクリプトを1度見て、「地獄では仕方がないので、自分のシステムでそれを実行するつもりはない」と思います。
cas

1
申し訳ありませんが、人々は気にします、そしてそれは重要です。パースペクティブがあり、別のパースペクティブが存在します。どちらもそれを取る人がいます。その間、以下の答えは私が最初にうまくいく。ほとんどの場合、私たちはカジュアルなハッカー/ユーザーから保護したいと考えています。決定的なハッカーが何かを突破することをよく理解してください。
anil 2018年

@anilあなたは、ソースコードで何かをするのに十分なほど賢くも有能でもない人々から保護しているだけです。それは気分を良くするかもしれませんが、あなたをより安全にするわけではありません。
Gilles 'SO-悪をやめる'

@gilles多分私はあなたを間違って読んだ。私は実際に、ソースコードを持っている場合(ソースコード=スクリプトの内容)、ソースコードを使用して何かを行う能力のある人々から保護しようとしています。これらの人々だけが、暗号化されたファイルをハッキングする方法を知らない場合があります。本当に断固として_本当に良い防御策がないことに同意します。
anil 2018年

11

インターネットを検索しているときにこれを手に入れました、提供:Claudio P.

  1. スクリプトを記述します(script-base.sh)

    #!/bin/sh 
    echo "Hello World" 
  2. スクリプトを暗号化する(パスワードを与える):

    openssl enc -e -aes-256-cbc -a -in script-base.sh > script-enc 
  3. ラッパーを書く(script-final.sh):

    #!/bin/sh 
    openssl enc -d -aes-256-cbc -a -in script-enc | sh - 
  4. 「script-final.sh」を実行し、パスワードを入力すると、ディスクにプレーンテキストスクリプトを書き込まずにスクリプトが実行されます。


1

基本的に、スクリプトを難読化することはできますが、コンパイルすることはできません。単純な理由は、そのシェルスクリプトは、システムによって一つ一つを実行する必要がある個々のコマンドを解釈され、そしてそれらを備えたシステムによって一つ一つ実行しているとして、あなたはそれらのコマンドを見ることができるsh -x-vおそらくもフラグ(と国旗)

何が起こっているのかを理解するのに十分なほとんどのプログラマにとって。

必要に応じて変数と一般的なフローを難読化できますが、プログラムによって実行される個々のコマンドを難読化することはできません。これは通常、シェルスクリプトの場合はすべてです。

最も簡単な解決策は、Cなどのコンパイル済み言語でシェルスクリプトを書き換えることです。


1
コンパイルされたバイナリでさえ、十分に決定されれば、逆アセンブルおよびリバースエンジニアリングすることができます。
ジョセフR.

3
実行可能ファイルはすべてリバースエンジニアリングできます。ここでの要件は、肉眼では読めなくする必要がありました
するThorbjörnRavnアンデルセン

知っている。私は将来の読者のためにメモを残しています。
ジョセフR.

-2

スクリプトを公開しない場合は、このサイトにスクリプトを送信してみてください。

インタプリタ言語で書かれたスクリプトのソースコードを暗号化または難読化するという考えには多くの人が反対するかもしれませんが、なぜこれをしたいのか理解しています。

彼の作品を何度も盗まれた誰かとして、私は単に「難読化」または「暗号化」がタブーであるかどうか気にしません。私のスクリプトが保護されていて、暗号化前と同じように機能する限り、かなり満足です。二度と誰かが私のアイデアを取り入れてそれを実行することを二度と許しません。いいえ、スクリプトをコンパイルされた言語で作成することはできません。方法がわかりません。

とにかく、上記のサイトを使用したくない場合は、shcの最新バージョンを試してください。他の人が言及した多くのセキュリティ上の懸念に対処するために、彼らはgithubでそれを更新したと思います。以下をgoogle " shc github "に入力すると、試すことができる利用可能なオプションのホストが表示されます。

幸運を!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.