複数のバイナリファイルのすべての文字列を1つのtxtファイルとしてgrep

複数のバイナリファイルのすべての文字列を1つのtxtファイルとしてgrep

私は、攻撃者が理論的にアプリケーションメモリからどのように多くの機密情報を取得できるかを調べるために、複数のユーティリティのすべてのプロセスメモリをダンプすることにしました。

ダンピング目的で次の行を見つけました。

grep rw-p /proc/$1/maps | sed -n 's/^\([0-9a-f]*\)-\([0-9a-f]*\) .*$/\1 \2/p' | while read start stop; do gdb --batch --pid $1 -ex "dump memory $1-$start-$stop.dump 0x$start 0x$stop"; done

残念ながら、私はBashをうまく使用できず、このスクリプトで生成された大容量ダンプファイル(すべて約キロバイトサイズ)に直面しました。

strings私の質問は:コマンドラインツールを使用してnullで終わるすべての文字列をファイルにどのようにgrepしますか?

だから私は次のように書いています(結果のない無限ループに入った)。

for f in *.dump; do strings $1 > foo.txt; done

私はこれが私の目標に近いルートであることを知っていましたが、結局は成功しませんでした。

ベストアンサー1

これはどうですか。毎回ファイルを上書きするのではなく、「>>」を使用してファイルに追加します。

rm foo.txt
for f in *.dump; do strings $f >> foo.txt; done

レビューを支援するために、「sort -u」を介してパイプを介して重複エントリを削除することもできます。

大きな .dump ファイルが多い場合は、実行に時間がかかることがあります。

おすすめ記事