はじめに
こんにちは!今回はstringsコマンドについて解説します。
stringsは、バイナリファイルから印字可能な文字列を抽出するコマンドです。実行ファイルやライブラリファイルに埋め込まれた文字列を確認できます。
セキュリティ調査やプログラム分析で、めっちゃ活躍しますよ。
stringsコマンドとは
stringsは、ファイル内にある人間が読める文字列(ASCII文字)を抽出して表示する外部コマンドです。
主な機能:
- 文字列抽出 - バイナリファイルから読める文字を抽出
- 最小長指定 - 最小の長さを指定可能
- オフセット表示 - ファイル内の位置を表示
- 複数フォーマット - 異なるエンコーディングに対応
- セキュリティ調査 - マルウェアやプログラムの分析
バイナリファイルの内容を簡単に確認できます。
基本構文
|
|
標準入力からも読み込み可能。
主なオプション
| オプション | 説明 |
|---|---|
-n 最小長 |
指定長以上の文字列のみ表示(デフォルト4) |
-t 形式 |
オフセット表示形式(o=8進数、x=16進数、d=10進数) |
-a |
すべてのセクションをスキャン |
-e エンコーディング |
エンコーディング指定(s=ASCII、S=Unicode等) |
-f ファイル |
ファイルリストから読み込む |
- |
オフセットを表示しない |
使用例
例1: 基本的なファイルスキャン
|
|
実行結果:
|
|
実行ファイルから見つかった文字列を表示。
例2: 最小長を指定
|
|
実行結果:
|
|
10文字以上の文字列のみ表示。
例3: オフセットを16進数で表示
|
|
実行結果:
|
|
各文字列のファイル内位置を16進数で表示。
例4: オフセットを10進数で表示
|
|
実行結果:
|
|
オフセットを10進数で表示。
例5: テキストファイルで確認
|
|
実行結果:
|
|
バイナリデータ内の文字列を抽出。
例6: オフセットなしで表示
|
|
実行結果:
|
|
オフセット情報を削除(-オプション)。
例7: 標準入力から読み込み
|
|
実行結果:
|
|
標準入力からのデータを処理。
例8: ライブラリファイルのスキャン
|
|
実行結果:
|
|
ライブラリに含まれるバージョン情報など。
例9: 複数ファイルの処理
|
|
実行結果:
|
|
複数のバイナリから文字列を抽出。
例10: パターンマッチング
|
|
実行結果:
|
|
特定パターンの文字列を抽出。
Tips・注意点
最小長の選択
|
|
ノイズを減らすため、最小長を調整します。
grepとの組み合わせ
|
|
grepで特定の文字列を検索。
オフセット情報の活用
|
|
問題のある箇所をオフセットで特定。
実践的な使い方
セキュリティ調査
|
|
不審なコマンドやURL参照を検出。
プログラム分析
|
|
実行ファイルがサポートするオプションを推測。
ライブラリ依存関係確認
|
|
ライブラリのバージョン情報確認。
隠された設定値検出
|
|
アプリケーションに埋め込まれた設定値を発見。
バージョン情報抽出
|
|
バージョン情報をバイナリから抽出。
まとめ
stringsコマンドのポイント:
- バイナリファイルから文字列を抽出するコマンド
- デフォルト: 4文字以上の文字列を表示
- -n 最小長: 最小の文字列長を指定
- -t 形式: オフセット表示(o=8進数、x=16進数、d=10進数)
- -a: すべてのセクションをスキャン
- よく使う組み合わせ:
strings file | grep pattern,strings -t x file
バイナリファイルの分析やセキュリティ調査に最高のコマンドですよ!