本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「strings」コマンドです。
本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、バイナリファイルやデータファイル内の可読部分を表示する「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」コマンドなどで調べることができます。
表示される文字量が多くて分かりにくい場合は「-n」オプションで文字数を調節したり、“オプションであれば「-」という文字が使われているだろう”と推測し、stringsコマンドの実行結果から「grep」コマンドで「-」という文字で絞り込んだりしてみるとよいでしょう。
strings ファイル名 | grep "-"
(stringsコマンドの実行結果から「-」という文字が含まれている行だけを表示)(画面3)
PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.