2011-07-02 18 views
0

アクティブな写真(http://itunes.apple.com/us/app/active-photo/id366798464?mt=8)と呼ばれるアプリストアには、隠された画像や画像を埋め込むことができます。 exeファイルは画像の中にあります。私は元の画像のサブ画像のように、この画像を画像に追加する方法を知りたいと思います。画像の中にファイルを埋め込む方法は? iOS iPhone

私はメタデータを調べていますが、タグは2番目の画像のNSData表現を保持するのに十分なようには見えません。

画像に埋め込みやメタデータのいずれかのタイプのファイルを追加すると、画像はメールやテキストメッセージで送信され、データは保持されます。

ありがとうございます。

答えて

2

これは、steganographyとして知られています。

JPEG画像の中にファイルを隠す最も簡単な方法は、圧縮がそれを損なわないようにピクセルデータを変更することですが、傍受者が隠れているデータ。

+0

この記事によると、電子メールなどで送信されたときにデータが失われるというイメージコードを修正したように見えます。これまでの質問の1つで、イメージをNSDataに格納し、セパレータ文字列を使用してNSDataの内側に2番目のイメージを追加して保存します。これは私のデバイスで動作し、私は彼らに電子メールを送ったりテキストを書いたりするまで、両方の画像を読むことができました。電子メールとテキストで、私が追加したデータが削除され、元のイメージだけが残されました。どのようにそれを回避するための任意のアイデアですか? – SolidSnake4444

+0

追加が画像フォーマットで定義されていないため、2番目の画像を追加すると機能しません。また、変換は無視されるか、チョークされます。特定のイメージフォーマットでは、 "情報"データ(コメントフィールドJPGなど)を埋め込むことができます。それ以外の場合は、何らかのステガノグラフィーを使用する必要があります。 –

+0

@ SolidSnake4444この場合、唯一のアイデアは、他のイメージにイメージ自体を保存するのではなく、デバイス上の秘密イメージの場所や識別子を保存することです(そして、何らかの形でデバイス自体の秘密イメージを非表示にします)。その後、他のシステムに画像を送信すると、実際には秘密の画像は伝送されません。もちろん、これはステガノグラフィを排除するものではありません。 –

0

JPEGは不可逆圧縮なので、埋め込みファイルが壊れてしまう可能性はあります。しかし、PNGはDeflateに似た圧縮方法を使用しますが、これは無駄です。

私はこのようなプログラムを作成し始めました。アイデアは、データのバイトをピクセルのカラーチャネルの最下位ビットに分割することによってデータのバイトを隠すことでした。いくつか例を挙げてみましょう。

RGB-8イメージは、赤、緑、青の3バイトのピクセルを表します。赤いチャンネルに3ビット、緑色に2色(人間の目は緑色に敏感です)、3色は青色に保存されます。だから私はピクセルあたり1バイトを埋め込みます。 RGBA-8画像と同様に、私は2-2-2-2を行います。もちろんこれにはビット単位の操作が含まれます。

RGB(A)-16画像では、チャンネルあたり2バイトのものが面白くなります。私は最小の歪み(最悪の場合255/65535 =〜3.9%)で各チャンネルの最下位バイト全体を使用し、ピクセルあたり3または4バイトのデータを保存します。悪くない!! さらに、この場合複雑なビット単位の操作はなく、単一の割り当てがジョブを行います。

多くの改善点があります。私は、ユーザーにパスワードを尋ね、それをハッシュし、安全な擬似乱数ジェネレータをシードし、ピクセル単位で移動させず、代わりにジェネレータに新しいランダムインデックスを要求すると考えました。

このソリューションの欠点は、ジェネレータがますます占有されるインデックスを提供するため、より多くのデータが既に埋め込まれているほど遅くなることです。しかし、この方法ではるかに安全です。さらに安全にするために、真のデータの位置を隠すために、ノイズのないデータにノイズデータを導入することを考えました。

ご覧のとおり、PNG画像ではたくさんのことができます。あなたが興味を持っているなら、私が今までに書いたコードを与えることができます。

+0

私はこれを見ることに興味があります。画像がメール/ SMS /画像であればこれは存続しますか? – SolidSnake4444

+0

イメージが明示的に他の形式に変換されていない場合、データは永遠に維持されます。だから、それは電子メールでも、ウェブページでも公開することができます。私のプロファイルで見つけたアドレスで私にメールを送ってください。次の日に私はあなたにCのソースを送ります:) – Shepard

関連する問題