スペクトログラムとステガノグラフィー

# はじめに
本記事はスペクトログラムと、ステガノグラフィーを解析するためのツールについて記載しています。

## スペクトログラム
[スペクトログラム（Spectrogram）](https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%9A%E3%82%AF%E3%83%88%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0)は時間とともに変化する信号の周波数の[スペクトル（spectrum）](https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%9A%E3%82%AF%E3%83%88%E3%83%AB)を視覚的に表現したものです。 

オーディオ信号に適用される場合、スペクトログラムはsonographs,voiceprints,またはvoicegramsと呼ばれることがあります。データが3Dプロットで表される場合、waterfallsと呼ばれることがあります。 

スペクトログラムを解析するためにフリーで利用可能なツールは以下になります。

- [Sonic Visualiser](https://www.sonicvisualiser.org/)
    - Sonic Visualiserはフリーの音楽データの分析ソフトです。Windows、Linux、Macでも動作します。
- [Spectrum Analyzer](https://academo.org/demos/spectrum-analyzer/)
    - オンラインで利用可能なツールです。音声ファイルをアップロードして解析できます。
 
### Sonic Visualiser
CTFでスペクトログラムの隠れたメッセージを探すためには、Sonic Visualiserを使用して解析できます。
スペクトログラムを解析するための使用方法は以下の通りです。環境はMacです。

ソフトウェアをダウンロード後、Sonic Visualiserを起動します。

![スクリーンショット 2022-07-31 21.47.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/c00d37a8-18f5-e46e-f03c-e3dd6351d0e2.png)

解析する`.wav`ファイルをドラッグアンドロップして開きます。

![スクリーンショット 2022-07-31 21.48.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/f53fdccf-ec45-e74d-b611-b9156d386f51.png)

Layerの「Add Spectrogram」を押します。

![スクリーンショット 2022-07-31 21.48.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/67d9f6d8-894f-2c02-8436-442408b0877f.png)

右下にあるアイコンを使用して、Holizonal Zoomは水平に、Vertical Zoomで垂直に波長を調整できます。

![スクリーンショット 2022-07-31 21.49.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/e383a1ee-3b74-8e1c-1df3-ca97b93a3547.png)

## ステガノグラフィー
[ステガノグラフィー（steganography）](https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%86%E3%82%AC%E3%83%8E%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%83%BC)は情報を隠蔽する技術として、ファイル、メッセージ、画像などの中に同様の情報を埋め込む手法です。

その考え方は紀元前に遡り、現代では2001年9月11日に発生した[アメリカ同時多発テロ事件](https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%A1%E3%83%AA%E3%82%AB%E5%90%8C%E6%99%82%E5%A4%9A%E7%99%BA%E3%83%86%E3%83%AD%E4%BA%8B%E4%BB%B6)でもメッセージのやりとりが行われていたと指摘されています。

セキュリティ分野では考え方を応用して、電子透かしによる著作権保護や、画像の中にメッセージを隠したり、スクリプトを仕込んだり悪用される場合もあります。

ステガノグラフィーを解析するためにフリーで利用可能なツールについて以下に記載しています。

- [Binwalk](https://www.kali.org/tools/binwalk/)
    - Binwalkは埋め込みファイルと実行可能コードの特定のバイナリ イメージを検索するためのツールです。
- [Stegcracker](https://www.kali.org/tools/stegcracker/)
    - Stegcrackerは、ファイル内の隠されたデータを明らかにするためのステガノグラフィブルートフォースユーティリティです。
- [Steghide](https://www.kali.org/tools/steghide/)
    - Steghideは、さまざまな種類の画像ファイルや音声ファイルのデータを非表示にできるステガノグラフィプログラムです。デジタル フォレンジック調査に役立ちます。
- [Stegsnow](https://www.kali.org/tools/stegsnow/)
    - 行末に空白を追加することにより、ASCII テキスト内のメッセージを隠すことができます。
- [Stegsolve](https://github.com/zardus/ctf-tools/tree/master/stegsolve)はフィルターを使用して画像のビットを取り除くことにより、画像を分析することができます。
- [Steganographic Decoder](https://futureboy.us/stegano/decinput.html)
    - オンラインで利用可能なツールです。画像ファイルをアップロードして解析できます。

### Binwalk
`binwalk`コマンドはファイルに埋め込まれた別のファイルを抽出します。
例えば、wordファイルなどに埋め込まれた画像ファイルを抽出することができます。

`$ binwalk -e <ファイル>`

### Stegcracker
画像ファイル内の隠されていてるテキストファイルを取得するために、パスワードをクラックする場合は`stegcracker`コマンドを使用します。

`$ stegcracker brooklyn99.jpg`

```console
StegCracker 2.1.0 - (https://github.com/Paradoxis/StegCracker)
Copyright (c) 2022 - Luke Paris (Paradoxis)

StegCracker has been retired following the release of StegSeek, which 
will blast through the rockyou.txt wordlist within 1.9 second as opposed 
to StegCracker which takes ~5 hours.

StegSeek can be found at: https://github.com/RickdeJager/stegseek

No wordlist was specified, using default rockyou.txt wordlist.
Counting lines in wordlist..
Attacking file 'brooklyn99.jpg' with wordlist '/usr/share/wordlists/rockyou.txt'..
Successfully cracked file with password: admin
Tried 20587 passwords
Your file has been written to: brooklyn99.jpg.out
admin
```

### Steghide
以下の例では`steghide`コマンドを使用して、画像ファイルからメッセージが記載されたテキストファイルを抽出しています。

`$ steghide extract -sf stegosteg.jpg`

```console
Enter passphrase: 
wrote extracted data to "steganopayload2248.txt".
```

### Stegsolve
stegsolveは以下のコマンドを実行して、ダウンロードします。

`$ wget http://www.caesum.com/handbook/Stegsolve.jar -O stegsolve.jar`
`$ chmod +x stegsolve.jar`
`$ mkdir bin`
`$ mv stegsolve.jar bin/`

`stegsolve.jar`ファイルをダウンロード後、以下のコマンドを実行することで、GUIアプリケーションが起動されます。
アプリケーション起動後、画像ファイルを開いて解析します。

`$ java -jar stegsolve.jar`

![スクリーンショット 2022-08-11 17.54.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/518d8f14-4e9a-9b58-b6d7-e30b60f04e0e.png)

# おわりに
SNSなどで[縦読み](https://ja.wikipedia.org/wiki/%E7%B8%A6%E8%AA%AD%E3%81%BF)でメッセージを送ることも一種のステガノグラフィーだと思います。

## 参考
- [無料ソフトでオーディオ分析。「Sonic Visualiser」で何ができる?](https://av.watch.impress.co.jp/docs/series/dal/1134161.html)
- [デジタルステガノグラフィーとは](https://blog.kaspersky.co.jp/digital-steganography/23548/)