【 strings 】コマンド――バイナリファイルの可読部分を表示する:Linux基本コマンドTips(92)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「strings」コマンドです。
本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、バイナリファイルやデータファイル内の可読部分を表示する「strings」コマンドです。
stringsコマンドとは?
「strings」は、バイナリファイルやデータファイルから“文字列”として読める箇所を表示するコマンドです。指定したバイナリ/データファイル内にある表示可能な文字列が、標準出力に出力されます。
stringsコマンドの主なオプション
stringsコマンドの主なオプションは次の通りです。
短いオプション | 長いオプション | 意味 |
---|---|---|
-a/- | --all | ファイル全体をスキャンする |
-f | --print-file-name | 文字列の前にファイル名を表示する |
-n 文字数 | --bytes=文字数 | 指定した文字数以上の連続した“文字列”を表示する(デフォルトは4文字) |
-文字数 | -n相当(-10は「-n 10」という意味になる) | |
-t 指定 | --radix=指定 | 「o(8進数)」「x(16進数)」「d(10進数)」のいずれかを指定して、文字列の前に位置を表示する |
-o | 「-t o」相当 | |
-T BFDNAME | --target=BFDNAME | システムのデフォルト形式以外のオブジェクトコード形式を指定する |
-e 指定 | --encoding=指定 | 文字サイズとエンディアンを「s」「S」「b」「l」「B」「L」のいずれかで指定する(s:7bit、S:8bit、b、l:16bit、B、L:32bit) |
ファイル内の可読部分を表示する
stringsコマンドは、バイナリファイルやデータファイルの可読部分を表示するコマンドです。
バイナリファイルは「テキスト形式ではないファイル」なので、通常はその内容を読むことができません。バイナリファイルは実行形式であったり、専用のプログラムで表示したりするなど、何らかの処理をする必要があります。
それでも、バイナリファイルの中には文字列としてそのまま読める箇所が存在することがあります。実行ファイルの場合はコンパイル時の情報や、「-h」オプションなどで表示されるヘルプメッセージ/エラーメッセージなど、データファイルの場合はプロパティなどの付帯情報が文字列で保存されていたりします。
コマンド実行例
strings ファイル名
(指定したファイルの可読部分を表示する)(画面1)
strings -10 ファイル名
(10文字以上の可読部分を表示する)
画面1では、画像ファイル(JPGファイル)内の文字列部分を表示しています。「Exif(Exchangeable image file format)」と呼ばれる撮影情報が表示されている様子が分かります。
デフォルトでは、可読部分が4文字以上連続している箇所が表示されます。表示される文字数を変更したい場合は、「-文字数」または「-n 文字数」オプションで指定します。
コマンドのオプションを調べる
Linuxで利用するコマンドは、ほとんどが「man」コマンドでマニュアルを参照したり、最低限、「-h」オプションなどでヘルプを表示したりすることができますが、「strings 実行ファイル名」でも何らかの情報を得ることができる場合があります(画面2)。なお、実行ファイルがどこにあるかは、「which」コマンドなどで調べることができます。
画面2 「which cal」で「cal」コマンドの場所を探し、「strings /usr/bin/cal」でcalコマンドの実行ファイルを表示した(!!は直前に実行したコマンドという意味で、`!!`部分は“直前に実行したコマンドの実行結果”に置き換わる)
- [参考]PATHを理解して、コマンドの在りかを探してみよう(連載:“応用力”をつけるためのLinux再入門 第8回)
- [参考]fileコマンド――ファイル形式を確認する(本連載 第12回)
- [参考]manコマンド(基本編)――コマンドのレファレンスマニュアルを表示する(本連載 第86回)
表示される文字量が多くて分かりにくい場合は「-n」オプションで文字数を調節したり、“オプションであれば「-」という文字が使われているだろう”と推測し、stringsコマンドの実行結果から「grep」コマンドで「-」という文字で絞り込んだりしてみるとよいでしょう。
コマンド実行例
strings ファイル名 | grep "-"
(stringsコマンドの実行結果から「-」という文字が含まれている行だけを表示)(画面3)
画面3 「strings /usr/bin/cal」の結果を「grep」コマンドで絞り込む(CentOSの場合、aliasでgrepコマンドに--colorオプションが指定されているため、該当部分が赤い色で表示されている)
- [参考]grepコマンド――特定の文字を含む行を抽出する(本連載 第9回)
筆者紹介
西村 めぐみ(にしむら めぐみ)
PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.