2009-05-12 14 views
2

かなりランダムなバイナリデータがあります。私は、そのチャンクがファイル内のどこに存在するか、何回発生するか、どのバイト(またはセクタ)オフセットであるかを知りたい。どのようにそれを行う上の任意のアイデアですか?ファイル内のバイナリチャンクを見つける

おかげで、 ジャスティン

+0

申し訳ありませんが、今までlinuxタグに気づいていませんでした。 –

答えて

2

私はそのためのX-Ways WinHexをお勧めします。私は自分自身がハードディスクドライブや大きなディスクイメージファイルの任意のデータを検索するのに非常に頻繁に使用していることを知っています。

+0

+1、素晴らしいツールであっても勝利中心です;-) – DCookie

3

私は、既存のコマンドがあなたが望むものをまったく実行しないと信じています。あなたのチャンクが小さく、あなたのファイルがメモリに収まるならば、あなたのチャンクを書くのは簡単です。ファイルの内容をスキャンし、各位置でstrncmpを適用します。

ファイルが非常に大きいのにアドレス空間に収まる場合は、mmapでも同じことができます。

チャンクが小さくない場合は、strncmpの代わりにBoyer-Moore algorithmを使用する方がよいでしょう。すでに実装されているため、これほど多くの作業はまだありません。

+0

+1、きめ細かなアルゴリズム – DCookie

+0

これは私がmmapとmemcmpでやったことです。それは機能しますが、私は本当にこれを行うコマンドであるべきだと考えていました。 – Justin

0

あなたはgrepの

でこれの一部を行うことができますこれは、バイトと行が一致の合計数を取得するには--countパラメータを追加し

grep --text --byte-offset 'ls' /bin/ls

をオフセット出力します。

+0

私もこれをやったが、問題はチャンクを含むファイルがあることです。あるファイルの内容を別のファイルにgrep検索する方法が見つかりません。 – Justin

関連する問題