現在、法医学文書検索教育の問題を解決しようとしています。
LUKSコンテナがあり、次のトレーニングの問題に進むには、LUKSヘッダーを見つける必要があることを示すメッセージが表示されます。
質問に記載されている情報によると、ヘッダーはマジックナンバー(16進数)4c554b53babeを使用して識別でき、現在私のデバイス全体でこの番号を検索しています。
このため、私は次から始めます。
xxd -g0 -c 32 /mnt/luksTraining/training001.dd | grep -C 1 4c554b53babe
しかし、これはタイトルが2行に分割されていない場合にのみ機能することに気づきました。たとえば、タイトルの最初の半分は行の末尾にあり、残りの半分は次の行にあります。
特定のファイルヘッダーを検索する「スマートな」方法はありますか?
答え1
特定のファイルヘッダーを検索する「スマートな」方法はありますか?
xxd
デフォルトでは特定のバイト文字列を検索するため、出力ではなくバイナリデータを直接検索することをお勧めします。これは偽の肯定(および潜在的に偽の否定)を生成する可能性があります。例:
grep -oba "$(printf '\x4c\x55\x4b\x53\xba\xbe')" /mnt/luksTraining/training001.dd
上記は、指定されたバイト文字列を持つtraining001.ddにバイトオフセットを出力します。
バイト文字列をグレーピングする方法については、次を参照してください。このスタックオーバーフローの質問。
答え2
いくつかの奇抜なアイデアはすぐに出てこないでしょう。
- デバイスをバイナリファイルとして開き、正規表現を使用します(たとえば、Pythonを使用)。
xxd
シェルループを使用して出力を繰り返し、-len
オプション-seek
を使用して検索の開始点を各バイトに変更します。