LUKSヘッダーの位置を取得しようとしています。
grep -a -b -P --only-matching 'LUKS\xba\xbe' /dev/sdb
すでにメモリが不足しています。
何人かの人々は「bgrep」を代わりに使用することを提案しましたが、それがどのように機能するのかわかりません。
bgrep -A 20 'LUKS\xba\xbe' /dev/sda
./bgrep: invalid 2-hex-digit byte value: 'LU'
では、これをどのように実行しますか?
答え1
grep
ラインの最後まで読み取るためメモリが不足する傾向がありますが、バイナリデータでは長い間ラインの終わりが出ない場合があります。おおよそ次のように、メモリサイズより小さいチャンクに対してgrepを使用してgrepを使用できます。
# dd bs=1M iflag=fullblock if=/dev/sdb skip=X count=Y | grep ...
すべてのブロックについてすすぎ、繰り返します。データが正しくソートされているかどうかわからない場合は、ブロックをいくつかのオーバーラップさせます(次のX = X + Y-1)。
それとも、strings
そうです。おそらくメモリ消費セクションを避けてください(印刷可能な長いASCII行は発生しない可能性があります)。その後、確認するオフセットのリストがあります。その部分がstrings
除外されたため、間違った一致になる可能性があります。\xba\xbe
# strings -t d -n 4 /dev/sdb | grep 'LUKS$'
11534336 LUKS
23068672 LUKS
34603008 LUKS
# losetup --find --show --offset=23068672 /dev/sdb
/dev/loop9
# cryptsetup luksDump /dev/loop9
testdisk
または同じツールbinwalk
(カスタムマジックシグネチャー)はLUKSヘッダーをより効率的に見つけることができます。しかし、迅速なハッキングのためには、通常、うまくstrings
動作します。