トップページ / 最新情報 / サポート掲示板 / ユーザー登録

クローキングBitmapの作り方

まず、JDA Ver2.87以降を起動してからメニューの「ツール」-「クローキングBMPツール」を選択して下さい。すると次のようなウィンドウが表示されたはずです。

次に、@の右端にあるボタンを押して、何でもいいですから24bit色(フルカラー)のBitmapファイル(*.bmp)を選択して下さい。JPEGファイルをBMPに変換すると良いと思います。
(JDAの次のバージョンアップ時には、JPEG→BMP変換機能を付けます)

すると次のように、埋め込む事が出来るファイルの最大サイズが表示されますので、そのサイズ以下のファイルをAで指定して「開始」ボタンを押すと、もうクローキングBitmapの作成完了です。

※クローキングBMPの作成は、けっこう時間がかかります。「開始」ボタンを押してから数十秒間もかかる場合もありますが、ハングアップしているわけじゃないのでご注意下さいね。
たとえば、K6-200MHz程度のCPUで 60KByte程度のファイルを埋め込む場合、インプラントJPEGなら一瞬で済みますが、クローキングBMPの場合は3秒ほどかかります。


クローキングBitmapから埋め込まれたファイルを取り出す方法

@の右端にあるボタンを押して、クローキングBitmapを指定して下さい。すると次のようにファイルが埋め込まれている旨が表示されます。ここでは上で作成したクローキングBitmapを開いています。

あとはAの右端にあるボタンを押して、適当な名前を入れて開始ボタンを押せば、埋め込まれたファイルを取り出してその名前で保存します。

※インプラントJPEGと違って、元のファイル名を保持しませんのでご注意下さい。
 たとえば、test.htmlというファイルを埋め込んだ場合、インプラントJPEGなら
 test.htmlという名前で取り出してくれますが、クローキングBMPの場合は、
 自分で名前を付けなければなりません。

少しだけ詳細な解説

クローキングBitmapがどういうものかはこちらを見ていただくとして、ここでは少しだけ詳細に解説いたします。

クローキングBitmapは、ファイルを埋め込んでもそのファイルサイズが変わらないという魔法のような技術ですが、この仕組みはとてもロジカルかつシンプルです。

Bimtapファイルのフォーマットは、いわゆるベタファイルというもので すべての画素を単純に数値化しているだけのものなので、各画素に論理演算を直接的に施す事が出来ます。
(多くの圧縮フォーマットでは、expandしない限りはバイナリレベルで特定画素にアクセスする事はできない上に、不必要なビットを限界まで削ぎ落とすようにフォーマット・レベルで定義されている場合が多い。ちなみにここで言う「不必要なビット」とは冗長性の事ではありません。)

そこで、各画素のRGB値にビットレベルでの演算を施して 外的に意味を持ったビットを含ませます。もちろん、その外的に意味を持ったビットというのは、埋め込むファイルを分解したストリーム(非ブロック)というわけです。

このような仕組みなので、クローキングBitmapはバイナリエディタなどで見ても全く普通のBitmapと変わりませんし、ファイルサイズも変化しません。

埋め込むファイルの最大サイズは、以下の式によって計算されます。

((Bitmap画像の幅 × Bitmap画像の高さ) ÷ 2) − 8 bytes

たとえば、640X480ピクセルのBitmapファイルには、
((640×480)÷2) -8= 153592 byte = 約150 KByte
のファイルを埋め込むことができます。

なお、埋め込まれるBMPの各画素値に規則性が無い場合、クローキングBMPは配列暗号そのものと言って良いかもしれません。