web-dev-qa-db-ja.com

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

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

40
Ethan Heilman

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

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

man stringsは以下を与えます:

STRINGS(1)

[〜#〜]名前[〜#〜]
strings-オブジェクトまたは他のバイナリファイルで印刷可能な文字列を検索します

[〜#〜] synopsis [〜#〜]
strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]

72
drAlberT

stringsコマンドは、この特定のタイプの問題を解決する方法です。 grepにパイプする必要がある場合もあります。

例えば:

strings somebinaryfile | grep textuwanttofind
11
luis.espinal

コマンドは存在し、呼び出されます...文字列!

4
Mark

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

od -c *filename*
3
Kyle Brandt

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

使用に関する問題

od -c FILE
hexdump -C FILE

このために私が気に入っているのは ZTreeWin LinuxのWINEで実行することです。これを使用すると多くのことができますが、ファイル内の検索やバイナリの編集は特に便利です。

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

2
qeff