DIGITAL CRYPTOGRAPHY PUZZLE 04【Cypher編】
はじめに
いつもブログをご覧いただきありがとうございます。
コーストFIRE中のIPUSIRONです😀
暗号文
[IMG]
1111 1110 , 0000 0001 , 0000 0000 , 0000 0001
1111 1110 , 1111 1110 , 1111 1110 , 0000 0000
1111 1110 , 1111 1111 , 1111 1110 , 0000 0000
0000 0000 , 1111 1111 , 0000 0001 , 0000 0001
ヒント
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
Steganography.
解答への道
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
1:解読の方針を検討する
一番上に"[IMG]"とあること、ヒントにステガノグラフィーとあることから、画像に対するステガノグラフィー(以後、イメージ・ステガノグラフィーと略す)の暗号文であると推測できます。
[IMG]
1111 1110 , 0000 0001 , 0000 0000 , 0000 0001
1111 1110 , 1111 1110 , 1111 1110 , 0000 0000
1111 1110 , 1111 1111 , 1111 1110 , 0000 0000
0000 0000 , 1111 1111 , 0000 0001 , 0000 0001
2:LSBから新しいビット列を得る
暗号文のビット列の中では、1111 1111、0000 0000に加えて、1111 1110と0000 0001が使われています。
ビット列の最下位ビットをLSB(Least Significant Bit)といいます。
どうやらLSBを利用したイメージ・ステガノグラフィーのようです。
LSBを用いたイメージ・ステガノグラフィーとして知られています。
CTFにもたまに登場します。
LSBにデータが隠されているので、次の手順で新しいビット列を得ます。
1111 1110 , 0000 0001 , 0000 0000 , 0000 0001
1111 1110 , 1111 1110 , 1111 1110 , 0000 0000
1111 1110 , 1111 1111 , 1111 1110 , 0000 0000
0000 0000 , 1111 1111 , 0000 0001 , 0000 0001
↓各ビット列からLSBを抽出
0 , 1 , 0 , 1
0 , 0 , 0 , 0
0 , 1 , 0 , 0
0 , 1 , 1 , 1
↓
0101
0000
0100
0111
↓8ビット列に分ける
0101 0000
0100 0111
各8ビット値をASCII文字にします。
0101 0000 = 0x50 -> 'P'
0100 0111 = 0x47 -> 'G'
“PG"という文字列が得られました。
しかし、これを入力しても正解ではありまえsんでした。
3:2値で表現する
色をRGB方式で表すと、黒は#000000、白は#FFFFFFです。よって、次の2つのビット列を黒と白に割り当てます。
1111 1111=0xFF⇒白
0000 0000=0x00⇒黒
また、次の2つの値も登場しますが、LSBだけが違うだけです。厳密には色が変わりますが、人間の目には認識しにくい程度の違いです。よって、それぞれを黒と白に置き換えてしまいます。
1111 1110=0xFE≒0xFF⇒白
0000 0001=0x01≒0x00⇒黒
黒を■、白を□とします。
※カンマを省略しました。
1111 1110 , 0000 0001 , 0000 0000 , 0000 0001
1111 1110 , 1111 1110 , 1111 1110 , 0000 0000
1111 1110 , 1111 1111 , 1111 1110 , 0000 0000
0000 0000 , 1111 1111 , 0000 0001 , 0000 0001
↓
□■■■
□□□■
□□□■
■□■■
なんとなく、".J"という文字列に見えます。
4:解答のキーワードを特定する。
“PG"と".J"を連結して、".JPG"というキーワードが得られます。
別解
ステップ3では黒と白の2値に収束させましたが、あえて区別しても構いません。
実際に色を描画しても人間の目には違いをほとんど識別できないからです。
各ビット列を10進数にします。
1111 1110 , 0000 0001 , 0000 0000 , 0000 0001
1111 1110 , 1111 1110 , 1111 1110 , 0000 0000
1111 1110 , 1111 1111 , 1111 1110 , 0000 0000
0000 0000 , 1111 1111 , 0000 0001 , 0000 0001
↓
254 , 001 , 000 , 001
254 , 254 , 254 , 000
254 , 255 , 254 , 000
000 , 255 , 001 , 001
ここでは、Excelを利用して確かめてみます。
まず、セルで方眼紙を作ります。
セルを塗りつぶします。その際、「その他の色」>「色の設定」ダイアログで「ユーザー設定」を選びます。
RGBを指定します。
例えば、254であれば、R・G・Bの3つに254を指定します。
全セルを塗りつぶすと次のようになります。
解答
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓
↓↓下にスクロール↓↓