基礎知識

マジックバイト

ファイルの先頭バイトには、そのファイルのフォーマットを識別するための情報 (マジックバイト) が埋め込まれている。

フォーマット名

マジックバイト (Ascii)

マジックバイト (Binary)

pdf

%PDF-

25 50 44 46 2d

コマンド

strings

misc の問題を解く場合に良く使うかもしれない。

ファイルから文字列を抜き出してくれる。基本的に grep と組み合わせて使う事が多い

λ strings full-mueller-report.pdf | grep actf
actf{no0o0o0_col1l1l1luuuusiioooon}

xxd

バイナリのダンプコマンド。同じようなツールに hexdump などがある。

headtail コマンドと組み合わせて使う場合もある。

λ xxd blank_paper.pdf | head -n 1
00000000: 0000 0000 2d31 2e35 0a25 bff7 a2fe 0a33 ....-1.5.%.....3

dd

バイナリの編集等ができます。

λ echo -n "%PDF" | dd of=blank_paper.pdf bs=1 conv=notrunc
4+0 records in
4+0 records out
4 bytes transferred in 0.000802 secs (4987 bytes/sec)

オプション

意味

of

標準出力の代わりにファイルへ書き込む。

bs

1回に読み書きするブロックサイズ(バイト数)

conv

指定しないと書き換えたデータがファイルの末尾となり、以降に存在していたデータは削除されてしまう。

awk

ターミナル上でめっちゃ良くつかうプログラミング言語

sed

stream editor の略。これもちょっとした編集で良く使う

curl

ターミナルからリクエストを飛ばしたり、ファイルを保存できたりするので便利。同様のツールに wget などがある。

ファイル名を変えずにファイルを保存する

λ curl <url> -O

公式リファレンス