質問

画像を破壊せずに、jpgやgifなどの写真ファイル内に情報を書き込むにはどうすればよいですか?もちろん、写真にそれを表示することなく、すべてのアイデアは誰にも検出されない写真のファイルの情報を送信することです(ある程度セキュリティ/プライバシーを提供するため)!

役に立ちましたか?

解決

画像メタデータにいくつかの情報を保存できます。実際、デジタルカメラは、自分の写真(カメラモデル、日付と時刻、GPS座標など)にデジタルタグを付ける方法です。

このデータ形式は、 EXIF (Exchangeable Image File Format)と呼ばれます。プログラミング言語でそれを使用する方法の例はたくさんあります。 こちらのJavaの例

ユーザーがこのデータを読み取れないようにする場合は、何らかの方法でそれらを暗号化できますが、ユーザーは写真からいつでも削除できます(Photoshopで開き、たとえば名前を付けて保存を使用します)。

他のヒント

gifとzip(非表示にする情報)を1つのファイルに連結できます。 Gifはファイルの先頭から読み込まれ、zipはファイルの末尾から読み込まれます。

Linuxでこのようなファイルを作成するには:

$ cat file1.gif >> outfile.gif
$ cat file2.zip >> outfile.gif

結果のファイルは、file1.gifとfile2.zipのサイズを持ち、gifビューアーとzipファイルハンドラーで開くことができます。

多くの方法があると確信しています。以下に1つを示します。

写真では、色のわずかな変化は肉眼では気付かないことが多く、気づいたとしても、写真の品質の欠陥と簡単に間違われる可能性があります。

簡単な例を挙げると、パレットが白から黒の順に配置され、中間に滑らかな範囲のグレースケールGIFイメージがあるとします。グラフィックファイル形式についてどれだけ知っているのかわかりませんが、GIFでは、ピクセルごとに1バイトがあり、各バイト値は特定の色にマッピングされます。したがって、この場合、パレット#0 = RGB(0,0,0)、パレット#1 = RGB(1,1,1)、...パレット#255 = RGB(255,255,255)と言うことができます。

次に、普通の本物の写真を撮ります。秘密のメッセージを個々のビットに分割します。各パレットインデックス番号の最後のビットをメッセージの連続するビットに設定します。

たとえば、元の写真の最初の8ピクセルが、たとえば01 00 C9 FF FF C8 42 43であるとします。メッセージは文字「C」で始まり、ASCIIコード0110 0111であるため、最後のビットを変更します最初のバイトを0に、バイトを01から00に変更します。2番目のバイトの最後のビットを1に変更し、バイトを00から01に変更します。3番目のバイトの最後のビットを1に変更します、それで違いはありません。など。コード化された8バイトは00 01 C9 FE FF C9 43 43になります。

色の変更は非常に微妙なため、写真を見ている人が気付くことはほとんどありません。気付いたとしても、疑わしい理由がない限り、写真の品質は完全ではないと判断します。

もちろん、秘密のメッセージに1バイトあたり1ビットを使用しなければならないということはありません。どの程度の品質低下を回避できるかによって、1バイトあたり2ビットを使用するか、1バイトおきに1ビットを変更するなどの方法があります。

もちろん、同じ手法をカラー写真でも使用できます。各RGBコンポーネントの最後のビットを変更して、ピクセルあたり3ビットをエンコードするなど

このメソッドは、ステガノグラフィと呼ばれています。これにより、メッセージを画像だけでなく、オーディオ、vedeo、その他の形式でも非表示にできます。

steganotool というopensouce Steganographyソフトウェアがあります。このプロジェクトは、ビットマップ画像との間でテキストを非表示および抽出するために使用できます。

ステガノグラフィ培地について

画像内のステガノグラフィ

このタイプのステガノグラフィは、発見に対して非常に効果的であり、さまざまな目的に役立ちます。これらの目的には、認証、メッセージの隠蔽、および暗号化キーの送信が含まれます。このタイプのステガノグラフィに最も効果的な方法は、通常、最下位ビットの方法です。これは単に、隠されたメッセージが画像のバイトの最後のビットを変更することを意味します。その最後のビットを変更することにより、キャリア画像内のそのピクセルの色は比較的変化しません。これにより、メッセージが簡単に検出されなくなります。内部の情報を隠すのに最適な画像ファイルのタイプは、24ビットのビットマップです。これは、ファイルサイズが大きく高品質であるためです。

音声でのステガノグラフィ

オーディオファイルでは、情報を隠すための最も顕著な方法は低ビットエンコード方法です。低ビットエンコード方式は、画像ファイルで使用される最下位ビット方式に多少似ています。秘密情報はファイルの最後に添付されます。低ビットエンコーディングの問題の1つは、人間の耳で認識できることです。誰かが情報を隠そうとしている場合、これは非常に簡単に検出できるため、危険です。スペクトル拡散法は、オーディオファイル内の情報の隠蔽に使用されている別の方法です。この方法は、音声ブロードキャストにランダムノイズを追加します。この方法により、情報は周波数スペクトル全体に広がり、ランダムノイズの下に隠れたままになります。オーディオステガノグラフィーで見られる最後の方法は、データをエコーで隠すことです。このメソッドは、サウンドファイル内で自然に発生するエコーを使用して情報を隠そうとします。次に、これらのエコーに追加のサウンドを追加できます。追加のサウンドは隠されたメッセージです。これは、情報を隠すのに十分な方法です。特に、場合によっては元のオーディオファイルの音さえ改善するためです。

ビデオ内のステガノグラフィ

ビデオのステガノグラフィは、基本的にビデオの各フレームの情報を隠しています。ビデオ内に隠されている情報はごくわずかですが、通常はまったく目立ちませんが、隠されている情報が多いほど目立ちます。この方法も効果的ですが、正しく行う必要があります。さもなければ、隠すのではなく、より多くの情報を明らかにする必要があります。

ドキュメント内のステガノグラフィ

これは基本的に、ドキュメントの行末に空白とタブを追加することです。このタイプの ステガノグラフィは非常に効果的です。これは、ほとんどのテキスト/ドキュメントエディタで空白とタブの使用が人間の目に見えないためです。

このオープンソースプロジェクト

も参照できます。

この記事は非常に便利です。

jpegファイル内のデータ(テキスト、別の画像など)を非表示にする場合は、ファイルの末尾に追加するだけです。画像が表示されると、元の画像のみが表示され、追加されたデータは無視されます。

データを非表示にするのは非常に難しい方法ではありませんが、これは別のjpegを非表示にする良い方法です。メモ帳または16進エディタでファイルを開いた場合、おそらく2つのjpegがあり、1つではないことに気付かないでしょうとにかく、2番目の画像の終わりは最初の画像のように見えるからです。

Windowsでは、単純なコマンドを使用して、イメージ内のアーカイブを非表示にできます:/ b cat.jpg + Documents.rar cat_new.jpgをコピーします。 そして、たとえばwinrarを使用して、アーカイブからデータをftomイメージとして抽出します。
しかし、より良い方法はステガノグラフィを使用することです。
LinuxおよびWindows用の単純なプログラム: http://linux01.gwdg.de/~alatham/ stego.html
このプログラムを使用して、パスフレーズを使用します。パスフレーズを使用せずに、画像内のデータを非表示にしたことは誰にもわかりません))

gifファイルの圧縮データは、可変サイズのチャンクです。各チャンクは長さバイトで始まります。通常、これらのチャンクは、最後の2つのチャンク(最後の1つが0)を除いて、255バイトのデータです(長さバイトは255を示します)

しかし、サイズがメッセージを表すチャンクでgifを再コーディングできます たとえば、ASCIIテキストまたはバイトに文字を使用する 1 2 3 4 00 を表します< code> 01 10 11 バイナリデータ、

gifの

byte-frequency分析では、255バイト未満が予想されます。 サイズは元のサイズより大きくなりますが、画像はまったく同じに見えます。

画像内のファイルを非表示にするための高度なツールは必要ありません&#8211;&#8211;基本的なDOSコマンドを知っている必要があります&#8230;以下のリンクをたどって、これを行う方法を確認してください(画像ステガノグラフィの簡単な説明):

https://www.youtube.com/watch?v= ox9ArqXtaWw&amp; list = PLqEKOAKK4IbSTfDJZE_lH-DiOjOzZUczx&amp; index = 2

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top