今回はステガノグラフィ・ツールで遊んでみます!
ステガノグラフィ・ツールとは、音声や画像などのデータに秘密のメッセージを埋め込む技術のことです。
ちょっとワクワクしますね!w
一見普通の画像ファイルに見えるのですが、秘密の情報を埋め込んであり、誰かに渡すといったことも可能です!
受け取った方は、秘密のワードで、その秘密ファイルを取り出すといったことを想定します。
この記事では、outguessというツールを使用します。
macではoutguessがGUIになっているので、仮想環境を作成します。
仮想環境には、VirtualBoxを使用してUbuntuとvagrantを使用します。 この記事では、細かいインストール手順は説明しませんが、大体は書いてあるので良かったら参考にしてください。
(vagrant upあたりからエラーやらWARNINGが出る方もいるかと思いますが、随時ググってください。たくさん有益な対処法が見つかると思います。)
では、さっそくやっていきます。
VirtualBox
以下からOSにあったVirtualBoxをダウンロードします。
Vagrant
Vagrantも以下からダウンロードします。 特にこだわりがなければ最新のヴァージョンでいいと思います。
準備
仮想環境を作成するので、作業ディレクトリをつくります。 あとからヴァージョンの違ったboxを追加したりすることを想定して、以下ののようなディレクトリを任意の場所で作成します。 (ここでは以下の名前で作成してますが、ディレクトリの名前はなんでも構いません。)
~/VirtualEnv/ubuntu/1604/
VagrantBox
VagrantBoxをインストールします。
A list of base boxes for Vagrant - Vagrantbox.es
上記のサイトからインストールできる一覧が記載されています。
今回は、ubuntuを選択できれば良いので適当なboxを見つけて以下のコマンドを作成します。
$ vagrant box add ubuntu16.04 https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-vagrant.box
このコマンドは、vagrant box add < 任意のBox名前> <Boxがあるパス>
という構成です。任意のBox名前は、後から自分でわかりやすいような名前がいいかと思います。今回はヴァージョンを名前にいれていますが、プロジェクト名とかでもいいですね。
そしたら上記のコマンドを実行します。(このコマンドの実行はどこのディレクトリでも構いません。)
少し時間がかかるかもしれません。できるだけネットワーク環境の良いところでインストールするのがオススメです。
Vagrantfile
インストールの完了が確認できたら、さきほど作成した作業ディレクトリに移動します。
移動したら、まずwork
というディレクトリを作成しましょう。($ mkdir work)
そして、以下のコマンドを実行します。
このコマンドは、さきほどインストールしたBoxファイルを展開するイメージです。
initすると、Vagrantfileというファイルが作成されます。
$ vagrant init ubuntu16.04 A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
initが完了したらVagrantfileを編集します。
vimでファイルを開いて、config.vm.network "private_network", ip:
と書いてある行を探し、コメントを外します。
次に、config.vm.synced_folder
を書いてある行を探し、コメントを外して、共有フォルダを設定します。
config.vm.synced_folder "ホスト側のパス", "ゲスト側のパス"
今回は、config.vm.synced_folder "./work", "/home/vagrant/work"
このように設定しました。
./work
は、Vagrantfileと同じ階層にあることになります。
ホストOSで秘密のパスワードを展開する際に、共有していると便利です。
これでようやく仮想環境を立ち上げることができます。
以下のコマンドをVagrantfileがあるディレクトリで実行します。
実行したら稼働しているか、確認します。
# 仮想環境を立ち上げる $ vagrant up # 仮想環境が稼働しているか確認 $ vagrant status # (仮想環境内)仮想環境をぬける $ exit
確認ができたら、仮想環境に入ります。
$ vagrant ssh
入れましたか? おそらくvagrantユーザーになって、ubuntuを操作することが可能なはずです!
apt-get
さあ、ここからが本番です。
ubuntuでは、apt-get
でパッケージをインストールするのが常だと思います。
なので、まずはアップデートしてから、outguessをインストールしてみましょう。
$ sudo apt-get update $ sudo apt-get install outguess
もしユーザーを変更したかったり、outguess専用のユーザー作成したかったら以下を参考にしてみてください。
Ubuntuでユーザーの確認・追加・削除・sudoに追加 - Qiita
outguessのインストールが終わったら、確認してみましょう。 以下のような出力があれば大丈夫です。
$ outguess OutGuess 0.2 Universal Stego (c) 1999-2001 Niels Provos outguess [options] [<input file> [<output file>]] -[sS] <n> iteration start, capital letter for 2nd dataset -[iI] <n> iteration limit -[kK] <key> key -[dD] <name> filename of dataset -[eE] use error correcting encoding -p <param> parameter passed to destination data handler -r retrieve message from data -x <n> number of key derivations to be tried -m mark pixels that have been modified -t collect statistic information -F[+-] turns statistical steganalysis foiling on/off. The default is on.
ubuntuで準備
/home/vagrant/work/outguess/
作業ディレクトリに移動したら、次に画像が必要です。
画像
著作権フリーのサイトからcurl
でダウンロードします。
$ curl -o woods.jpg https://cdn.pixabay.com/photo/2018/11/23/14/19/forest-3833973_1280.jpg
今回はwoods.jpg
という名前でダウンロードしました。
テキストファイル
パスワードが書いてあるtxtファイルを作成し、1行目にパスワードを記述して保存します。 (今回はテストなので、適当に単語を記述しました!)
$ vim pwd.txt 〜 編集 & 保存〜
作成
さあ、ここでようやく情報を隠した画像ファイルを生成します。
-k
オプションは、提供されたデータ内のメッセージを暗号化して隠すために使用されます。
その他コマンドのオプションはこちらにあります。
コマンドは以下の通りです。
# コマンド $ outguess -k <secret_key_word> -d <text_file> <pics_file_name> <new_pics_file_name> # コマンド例 (今回) $ outguess -k oolongtea -d pwd.txt woods.jpg beautiful-woods.jpg
実行してみると、beautiful-woods.jpgが作成されたかと思います。
取り出し
さあ、ホスト側のFInderかなんかでubuntuとマウントされているディレクトリを見てみましょう。
うん、普通の画像ファイルが存在していますね!
ここからubuntuで指定した秘密の文章(pwd.txt)を取り出します。
なので、ダウンロードします。
$ brew install outguess
インストールしたら、アプリケーションフォルダにあるoutguessを起動させます。
そうするとこんなのが立ち上がるかと思います。
上のメニューで、Extractという項目があるので押下。
そうすると、From
とKey
が入力できます。
From
の方で、ubuntuのoutguessで生成した画像ファイルbeautiful-woods.jpg
を指定。
Key
では、oolongtea
を入力して、*Extractボタンを押します。
取り出されたファイルを格納するパスを聞かれるので、適当にしてします。
そのファイルを見てみると.........
ubuntuで作成した秘密の文章ファイルがちゃんと記載されています!!!
これで、終了です。
まとめ
今回はoutguessについてでした。
ホスト側とゲスト側での、一人でできるハンズオンでしたが、 友人や同僚とやってみるのも面白いかもしれません。
これで何気ない画像に秘密の情報を埋め込み、取り出す方法を実感できたと思います!
以上.