第2弾:Waveデータに対するLSB置換法に基づくステガノグラフィ by Python (バグ修正済)

表題の通り。

今回も外部パッケージの力を借りてLSB置換法に基づくステガノグラフィを試してみた。
参考にしたのは以下のリポジトリである(Steganography/stego_lsb)。

トルエンディアン環境で正常に動作するよう、バグを修正したPythonコードを以下に置いた。
https://gist.github.com/tam17aki/fa084a9e698ffd255791750b923cdc8c

下記の内容が書かれたテキストファイルをまるごと、waveデータに埋め込んでみた(utf-8)。

A01	あらゆる 現実を すべて 自分の ほうへ ねじ曲げたのだ。
A02	一週間ばかり ニューヨークを 取材した。
A03	テレビゲームや パソコンで ゲームを して 遊ぶ。
A04	物価の 変動を 考慮して 給付水準を 決める 必要がある。
A05	救急車が 十分に 動けず 救助作業が 遅れている。
A06	言論の 自由は 一歩 譲れば 百歩も 千歩も 攻めこまれる。
A07	会場の 周辺には 原宿駅や 代々木駅も あるし ちょっと 歩けば 新宿御苑駅も ある。
A08	老人ホームの 場合は 健康器具や ひざ掛けだ。
A09	ちょっと 遅い 昼食を とるため ファミリーレストランに 入ったのです。
A10	嬉しいはずが ゆっくり 寝ても いられない。

出典:http://research.nii.ac.jp/src/ATR503.html

結果は次の通り。元の音声(host.wav)とメッセージが埋め込まれた音声(stego_lsb.wav) (初回はロードが入り冒頭の音が欠けるので再生は2回目以降)。
メッセージが埋め込まれることによる音質の劣化は確認できないので、優れた手法のように思える。しかしながら、この手法は「攻撃」に弱いのが欠点である。