2009-04-10 8 views
6

いくつかの画像を配布し、自分のプログラムを使用していない限り他の画像を見ることはできません。私の意図はJPGファイルを使用してヘッダーを変更して、他の画像閲覧者がそれ以上読むことができないようにすることです。たとえばJPGのマジックシグネチャであるバイト7-10を削除できます。その後、私のプログラムはヘッダーを再構築し、JPGファイルを表示します。画像の難読化

質問:「壊れた」JPGファイルを読んだり、ヘッダーを復元したり、良いファイルをディスクに保存してから、「良い」JPGファイルとして再ロードすることなく、これをどうやって実行しますか?

+0

誰かがプログラムで画像を見ることができれば、それを抽出できることを覚えておいてください。彼らがする必要があるのは、printscreenです。 – Herms

+0

私は知っています。これは私にとっては大丈夫です。 Hermsに感謝します。 – Ampere

答えて

16

ロードTMemoryStreamに「壊れた」ファイルは、メモリ内のバイトをパッチ、固定JPGファイルをロードするTGraphic.LoadFromStream()を使用します。

+0

ダーン、あなたは速いです。 :-) –

+1

>ダーン、あなたは速いです。 :-) - ケンホワイト 同意します。 ありがとう! 私は幸せです:) – Ampere

+1

TGraphicではなく、[TSynPicture](http://blog.synopse.info/post/2010/03/20/GIF,-TIF,-PNG-and-JPG-pictures-TGraphic- read/write-via-GDI)クラスを使用します。 –

2

Mghieの答えはあなたの見つけるほど良くなりますが、それほど効果的ではありません。誰かがあなたの画像を見たいと思っていて、彼らが画像フォーマットについて何か知っているなら、彼らは16進エディタでそれを開き、魔法のヘッダーが取り除かれたJPEGとして見えるものを認識します。

あなたが本当にあなたの画像を見るのを邪魔しないようにするには、あなた自身の画像フォーマットを構築してください(それは本当に難しいとは言えません)、できるだけメタデータを入れないでください。または、それらを暗号化するか、またはアーカイブに入れて(最良の結果を得るために独自のアーカイブ形式を構築する)、であることを願ってください。

最終的には、エンコードされたものは表示する前にデコードしなければならず、十分に才能のあるハッカーがデコードルーチンを追跡し、その動作を把握できます。とにかくユーザーから物事を隠そうとしているのはなぜですか?

1

イメージを暗号化されたリソースとしてバイトパッキングすることによって、それらをより困難にすることができます。しかし、画像を取得する可能性のあるファイルにアクセスできるかどうかは他のものと同じです。それは、どれだけの努力が喜んで使用されているかによって異なります。

+0

>それはどれだけの努力が喜んで使用されているかによって異なります。 あまりあまりありません。私は誰かが画像を解読するかもしれないと認めます。おそらく後で私は追加の暗号化を追加します。しかし、とにかく誰もがPrintScreenイメージを使用できるので役に立たない。 – Ampere

6

暗号化します。暗号化されたイメージを読み込み、メモリ内で解読し、mghieのようにloadfromstreamを実行します。

4

秘密鍵で画像を暗号化し、画像を表示する相手に公開鍵を配布するだけではどうですか?いくつかのカスタムソフトウェアを書いて配布するよりも、公開鍵を配布する方がはるかに簡単です。忘れないで;画面上に表示されているものを画面にキャプチャできます。カスタムマングルJPEGは、あなたのアプリでしか表示できないという事実は保護されていません。また、忘れないでください。人々は、単純にあなたのソフトウェアを乱雑なイメージで配布することができます。

+0

画面キャプチャポイントが良いです。ステガノグラフィーを使用して、表示された画像全体に何かを配置することができます。次に、感染したイメージが利用可能になった場合、そのコピーがソースであったかどうかを知ることができます。これが有用かどうかは、ドメイン/ニーズによって異なります。 – Argalatyr

0

必要な安全性に応じて、ファイル拡張子をアプリケーションでのみ開かれた拡張子に難読化するなどの単純な操作を行うことができます。これは、あなたが変化している超秘密のイメージでない場合にのみ機能します。