2

マジックナンバーなどの認識可能な署名を持つファイルがある場合、それらは接尾辞に関係なく、Nautilusでドキュメント、ビデオ、またはオーディオとして認識されます。

エンコードされたファイル自体がエンコードされていると認識されずにそれらをエンコードしたい場合、1つの簡単な戦略は、ファイルの内容をブロックで並べ替えることです。

たとえば、ファイルが10個の同じサイズのブロックに分割されている場合(残りは可変サイズの11番目のブロックとして残すことができますKABCDEFGHIJK、単純なエンコードによってブロックの順序が再配置されます。たとえば block_encode input_file output_file 、出力ファイルは次のように編成されますBADCFEHGJIK。(もちろん、「後半」と「前半」を入れ替えて、ファイルの最後に1バイトを移動しないようにすることもできます)。

この場合、デコードは、エンコードを再度適用するだけで実現されます。

結果のファイルは、有効なドキュメント、ビデオ、オーディオなどとして認識されない可能性があります。

私の質問は次のとおりです。標準ツール(例dd)を使用して、これをbashに実装するためのきちんとした(簡単な)方法はありますか?(必要に応じて、Cプログラムを作成できます)。

フォローアップは次のようになります。ファイルがメディアファイルの場合、最初にデコードされたストリームをファイルとして保存せずに、「デコードされた」コンテンツをたとえばVLCにストリーミングするにはどうすればよいですか。

4

1 に答える 1

1

既知のキーを使用した単純な XOR をお勧めします。ファイル内の任意のマジック ナンバーを打ち負かしfile(1)、シーケンシャルに動作するため、コーディングが非常に簡単であり、stdin/stdout を介してストリーミングすることもできます。適切な短い XOR キー (たとえば 4 オクテット) を選択すると、出力ファイルはソースと同様のエントロピーを持つため、ファイルが文字化けしていることはすぐにはわかりません。たとえば、このように暗号化されたテキスト ファイルは、適切に圧縮されます。一方、完全な暗号化の最悪のケースでは、まったく圧縮されません (これは、ランダムなバイトとの XOR であり、キーの長さはファイルの長さと同じです)。

質問の動機がよくわかりません!ただし、このエンコーディングと拡張子を削除すると、ほとんどのファイル認識ツールが無効になりますが、他には何もありません. ファイルのフィンガープリントに使用できるパターンがファイルに残っている可能性があります。

于 2013-03-13T11:03:21.017 に答える