• ベストアンサー

バイナリファイルから文字列を検索するコマンド

Tacosanの回答

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

状況によるんだけど, ・何も考えず grep (存在するかどうかくらいは出るんじゃないかな) ・strings + (必要なら c++filt) + grep (普通) ・nm + (必要なら c++filt) + grep (オブジェクトファイルなどに限定) くらいは思い付くかな. c++filt はなくてもいいけど, あった方が「出力をよみやすい」と思います.

thamansa
質問者

補足

grep だと strings と同様に検出できず、fgrepでは検出できました。grep系はテキストファイルを前提にしているとはずなのでバイナリファイルだと動作が保証されなさそうです。fgrepでも必ず検出できるかどうか不安なので、もっと確実な方法を考えたいと思います。 文字列検索を自作する手もあるのですが、それ自体にバグがあったら意味がないので、出来れば一般に使われている実績のあるものにしたいです。一般に使われているものならばバグもほとんどないとみなせますし、万一のときでも、言い訳できますから^^;

関連するQ&A

  • Windows・Linuxのバイナリコード解釈違い

    先日、LinuxマシンからWindowsマシンにFTPにてファイルを転送してこんなことがありました。 ・Linuxマシンから転送してきたファイルを、Windows上のサクラエディタで開く。 ファイル内容を見ると、「#!」とある ・転送したファイルをLinuxマシン上で、バイナリ表示する(odコマンドを使用) ファイル内容を見ると、「1234 ・・・・・」とある※正しいコードは忘れました。 バイナリコードと文字の対応表?を見ると 12=! 34=# ・サクラエディタで開いたファイル内容は「#!」だが、バイナリコードを見ると「!#」となるはず。 この箇所だけではなく、ファイル内の全てが、2文字ずつ同じようなことがありました。 単純に逆から書かれているわけではないと思うのですが、どういうことなのでしょうか。

  • バイナリファイル内の文字列を検索したい

    初心者で恐縮ですがよろしくお願いします。 入力された値でバイナリファイル内検索し、その値がある行を特定したいのですが、file_get_contentsしてみても歯抜けになってしまっていて、そのままの状態で文字列として取得することができません。↓でPHPはバイナリファイルも文字列として検索でいるとあったんですが・・・  http://blog.asial.co.jp/707 バイナリファイルはphpやjavascriptが該当すると認識しているんですが、正しいでしょうか?htmlゃcssファイルもバイナリファイルと言っていいんでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • たくさんのファイルから文字列を検索するコマンド

    例えば、サーバーのホームディレクトリ内にある たくさんのファイルの中から、電話番号などの文字列を 検索するには、どんなコマンドを実行すればいいのでしょうか? Linux / Unix です。

  • バイナリファイルの文字化け

    3GPファイルをバイナリエディタで書き換えたいのですが、文字列の部分が文字化けして、いまいち良くわからない状況です。バイナリエディタというものは今まで使ったことが無かったので少々解らないことだらけです、一様、フリーソフトでいくつかやってみても結果は同じでした。解決方法を教えてください。他にいいフリーソフトのバイナリエディタがあったら教えてください。OSは98SEです。因みにこれがやりたいんです。http://cgi15.plala.or.jp/uniphi/pyuki/wiki.cgi?3GPP%28AAC%29

  • バイナリエディタのstirlingで文字列を検索したいのですが、やりか

    バイナリエディタのstirlingで文字列を検索したいのですが、やりかたがわかりませんご存知の方宜しくお願いします。

  • バイナリファイルとバイナリ文字列の違い

    がわかりません。 例えば >http://e-words.jp/w/E38390E382A4E3838AE383AAE58897.html をみるとバイナリ列は1バイトを連ねたものだというらしいです。 つまり【文】という文字列を文字コードUTF-8でバイト配列化すると [1] => 230 [2] => 150 [3] => 135 となります。 (これはPHPでunpackかけましたが他の言語のGetBytes()などでも同じバイト値がでました。) この【文】という文字列はバイナリ列になるわけですよね? 例えばこの【文】という文字だけを保存したbun.txtというファイルはバイナリーファイルに なるのでしょうか? バイナリファイルの定義をみると >http://e-words.jp/w/E38390E382A4E3838AE383AAE38395E382A1E382A4E383AB.html 上記URLだと >文字コードの範囲などを考慮せずに作成されたファイル というのがバイナリファイルであるとあります。 つまりバイナリファイルとは 1バイト・・つまり8ビット(0~255)までの数値で表したものを連ねたもので なおかつ、文字コードなどの解釈を一切行わなずに、バイト値のみが記述されたデータと おもってもよいのでしょうか?

  • バイナリファイルからの文字列抽出

    バイナリファイルをCSVに変換するツールがございます。 CSV変換した後の文字列は、"日付" "数字"となっています。 今回、問題となっておりますのは、 バイナリファイルのサイズが大きく CSV変換に時間がかかってしまいます。 少しでもバイナリファイルのサイズを小さくするべく、 バイナリファイルから特定の"日付"を 抽出しようと考えておりますが、 可能でしょうか? また、その手法をご教授ください。 OSはWINDOWSです。 よろしくお願いします。

  • バイナリファイルの検索について

    いつもお世話になります。 今、検索について学習しているのですが、 文字列検索の場合はstrstrなどを使用すれば 検索できることは理解できました。 しかし、バイナリファイルの検索について理解できていません。 もし、バイナリ(画像や動画etc)ファイルの 中身を解析したい場合、 (1)JPEGなどのバイナリファイルを開く場合、fopen()でひらいてもいいのでしょうか?その他の方法ありますか? (2)バイナリファイルを開いた後、バイナリファイルの 0xfffeなど指定する値の検索がしたい場合は どのように検索したらいいのでしょうか? 関数や方法などありましたら教えてください。 どうぞよろしくお願い致します。

  • Linuxコマンドにて ファイル内の文字列を置換えしたい

    Linuxコマンドにて ファイル内の文字列を置換えしたい 内容 16進データ 22 0D 0A→22 0Aに置換えたい ※このパターンのみ 0Dを削除したい  trではダメみたい、現在は、Windowsのバイナリーエディタにて行っていますが、Linuxコマンドにて行いたい よろしく御願いします

  • FTPのアスキーモードってバイナリーモードって?

    FTPにはアスキーモードとバイナリーモードとありますが、どちらを使用したらよいか分かりません。 例えばWINDOWSのnotepadで作成したsqlファイルをUNIXサーバへ転送する時はアスキーモードでしょうか? internetでダウンロードしたEXEファイルをWINDOWSからUNIXサーバへ転送する時はバイナリーモードでしょうか?教えて頂けないでしょうか?よろしくお願いいたします。