2012-03-02 11 views
1

まず、私はUNIXのエキスパートではありませんので、ご迷惑をおかけください。暗号化されていないファイルのみを一覧表示する

私は潜在的encrypedと暗号化されていないファイルの両方が含まれている特定のディレクトリ内の暗号化されていないファイルを一覧表示する必要があります。

私は確実に一人で、ファイル拡張子によって、これらのファイルを識別することができないとSOコミュニティの誰かが私を助けることができるかもしれません期待していました。

私は実行することができます。

file * | egrep -w 'text|XML' 
をそれはテキストのみまたはXMLのいずれかのファイルを識別します。私は現在、他の唯一のファイルがテキストファイルまたはXMLファイルであるため、もっとうまくやれない場合はこれを使うことができますが、どのタイプであろうと暗号化されていないファイルもすべて識別したいと思っています。

これは1行のコマンドで可能ですか?

EDIT:暗号化されたファイルは、openSSLの

を経由して暗号化されている私は、ファイル暗号化を解除するために使用するコマンドは次のとおりです。

openssl -d -aes128 -in <encrypted_filename> -out <unencrypted_filename> 
+0

ファイルを暗号化する方法を教えてください。 – kev

+0

'ファイル* | grep -v 'encryted'' – kev

+0

@kev残念ながら、それはうまくいきませんでしたが、まだ結果にopenSSLで暗号化されたファイルがリストされています。 – Ollie

答えて

1

あなたの問題は些細なものではありません。 solaris fileコマンドは、 "magic" -/etc/magicを使用します。これは、ファイルがどんな風味であるかを判断しようとする試みのルールのセットです。完璧ではありません。あなたは、/ etc /マジックファイルを読み込む場合

、最後の列は、それが何かは、ファイル内のいくつかの構造を認識するfileコマンドの出力である言い回しであることに注意してください。

基本的にファイルコマンドは、システムコールの幹部()ファミリがするよう、ファイルの最初の数バイトを調べます。したがって、ファイルの最初の行の#/ bin/shは、ファイルの "実行"のためにexec()が呼び出す必要のある "コマンドインタプリタ"をexec()に指定します。ファイルには、同じ考えを取得し、「コマンドテキスト」「awkのテキスト」などは言う

あなたの問題は、あなたがファイルからの出力として参照しようとしているファイルの種類をうまくしなければならないということです。あなたは、暗号化されていないファイルに掘り下げて時間を費やして、ファイルから期待できるものを知る必要があります。それ以外の場合は、ディレクトリツリー全体にファイルを実行し、正解と思われるものすべてを並べ替えることができます。

find /path/to/files -type f -exec file {} \; | nawk -F':' '!arr[$2]++' > outputfile 

これは、あなたが持っているファイルについての明確な回答の一覧です。あなたはファイル内の好きなものを入れて、それを呼び出す。これは100%保証するものではありません

find /path/to/files -type f -exec file {} \; > bigfile 
nawk -F':' 'FILENAME=="good.txt" {arr$1]++} 
      FILENAME=="bigfile" {if($2 in arr) {print $1}} ' good.txt bigfile > nonencryptedfiles.txt 

をgood.txt。ファイルをだますことができます。

+0

この回答にJimに感謝します。私はそれが100%信頼できるものではないので、私が必要とするものをカバーする必要があるので、このような何かで行くつもりですので、親システム内のいくつかの他の制限を置かなければならないでしょう。 – Ollie

1

暗号化されたファイルを識別するための方法は、ランダムの量、またはentropyであり、彼らが含まれています。暗号化されたファイル(または少なくとも暗号化されたファイル)は、統計的にランダムに見える必要があります。暗号化されていない情報を含むファイル—テキスト、グラフィックス、バイナリデータ、またはマシンコード—が統計的にランダムでないかどうか。

ランダム性を計算する標準的な方法は、autocorrelation関数です。おそらく、各ファイルの最初の数百バイトだけを自己相関させる必要があるので、プロセスはかなり速くなる可能性があります。

これはハックですが、圧縮アルゴリズムのプロパティの1つを利用することができます。データからランダム性を取り除くことで動作します。暗号化されたファイルは圧縮することはできません(または少なくともそれほど多くはありません)ので、各ファイルの一部を圧縮し、圧縮率を比較してみてください。

SOランダムまたはエントロピーを見つけることについて、いくつかの他の質問があり、それらの多くは、このように、良い提案を持っている: How can I determine the statistical randomness of a binary string?

幸運!

関連する問題