バイナリまたは非ASCIIファイルで文字列を検索するLinuxコマンド


39

実行可能ファイルまたはその他のバイナリファイルからすべてのASCII文字列を抽出するLinuxコマンドはありますか?私はgrepでそれができると思いますが、そのようなコマンドが存在することをどこかで聞いたことを覚えていますか?

回答:


72

あなたが探しているコマンドは strings

名前は一目瞭然で、指定されたファイルから印刷可能な文字列を取得します。

man strings 与える:

STRINGS(1)

NAME
文字列 -オブジェクトまたは他のバイナリファイル内の印刷可能な文字列を検索します

あらすじ
strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]


10

文字列のコマンドは、問題のこの特定のタイプのために行くための方法です。パイプでgrepに渡す必要がある場合もあります。

例えば:

strings somebinaryfile | grep textuwanttofind


3

odコマンドでこれを行うことができます。

od -c *filename*

3
ええ、それはASCII文字を抽出しますが、実際には文字列ではありません。ほとんどの場合、「文字列」の方が便利だと思います。
user5336 09

ええ、そのコマンドについては知りませんでしたが、私は今やっています!AlberTが私の「+1」を取得しました:-)
カイルブラント

2

文字列の使用に関する問題は、周囲の非印刷物が表示されず、文字列の最小長に注意する必要があることです。

使用中の問題

od -cファイル
または
hexdump -Cファイル
シーケンスが行をラップしている場合、シーケンスを見つけるのが難しい場合があるということです。

LinuxのWINEで実行しているZTreeWinは、この点で非常に気に入っています。多くのことを実行できますが、ファイルの検索やバイナリの編集は特に便利です。

素晴らしいytreeパッケージは、多くのLinuxおよびUnixバリアントで利用可能であり、任意のファイルの優れたHexダンプビューがありますが、ZTreeWin(およびその16ビットの前身であるXTree)の検索はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.