ちょっとした調べ物をしていたところ、バイナリやディスクから中のデータを抽出することができる『foremost』コマンドなるものについて知ったので、ちょっと試してみることにする。 これを利用することで、例えばpdfファイルの中にある画像のみを抽出したりといったこともできるようだ。

1. foremostのインストール

インストールは簡単で、以下のコマンドで行える。

Debian/Ubuntu系の場合

sudo apt -y install foremost

RHEL系の場合(例:CentOS 7)

yum install -y https://forensics.cert.org/centos/cert/7/x86_64//foremost-1.5.7-13.1.el7.x86_64.rpm

MacOS Xの場合

brew install foremost

2. 実際に使ってみる

無事インストールが完了したら、実際に使ってみよう。 いろいろなことができるのだが、今回の例ではpdfファイルから画像を抜き出してみる。 オライリーのサンプルpdfがあったので、とりあえずこれを使うことにしよう。 以下のようにコマンドを実行すると、カレントディレクトリ配下に「output」というディレクトリを作成して、その中に抽出したデータを配置してくれる。

wget ftp://ftp.oreilly.co.jp/download/binary_hacks_smpl.pdf
foremost -t jpg -i binary_hacks_smpl.pdf
blacknon@BS-PUB-UBUNTU-01:~/test_dir$ wget ftp://ftp.oreilly.co.jp/download/binary_hacks_smpl.pdf
--2017-04-09 23:30:29--  ftp://ftp.oreilly.co.jp/download/binary_hacks_smpl.pdf
           => `binary_hacks_smpl.pdf'
ftp.oreilly.co.jp (ftp.oreilly.co.jp) をDNSに問いあわせています... 199.27.145.52
ftp.oreilly.co.jp (ftp.oreilly.co.jp)|199.27.145.52|:21 に接続しています... 接続しました。
anonymous としてログインしています... ログインしました!
==> SYST ... 完了しました。    ==> PWD ... 完了しました。
==> TYPE I ... 完了しました。  ==> CWD (1) /download ... 完了しました。
==> SIZE binary_hacks_smpl.pdf ... 573554
==> PASV ... 完了しました。    ==> RETR binary_hacks_smpl.pdf ... 完了しました。
長さ: 573554 (560K) (確証はありません)

binary_hacks_smpl.pdf   100%[==============================>] 560.11K   564KB/s    in 1.0s

2017-04-09 23:30:31 (564 KB/s) - `binary_hacks_smpl.pdf' へ保存終了 [573554]

blacknon@BS-PUB-UBUNTU-01:~/test_dir$ foremost -t jpg -i binary_hacks_smpl.pdf
Processing: binary_hacks_smpl.pdf
|*|
blacknon@BS-PUB-UBUNTU-01:~/test_dir$ ls -la output/jpg/00000981.jpg
-rw-rw-r-- 1 blacknon blacknon 50171  4月  9 23:30 output/jpg/00000981.jpg

中を見てみると、たしかに表紙の画像が抽出されていることが確認できた。 よくCTFなどで利用されるツールというのもあってか、他にもディスクからファイルを救出したり、ファイルの頭から何バイトかを削除してやったりと色々なことができる。