フォレンジックLevel 3★★★☆☆55 pts

NTFS $MFTから削除ファイルの痕跡を探せ
Find Deleted File Traces in NTFS $MFT
今回のミッションWindows 端末 `KINOCO-WS07` の `$MFT` をレコード単位のテキストに書き出した `/challenge/mft_records.txt`(先頭にクラスタサイズとダンプの開始 LCN があります)と、ボリューム C: のクラスタの生データ `/challenge/cluster_dump.bin` を渡します。
ユーザー yuki が削除した `secret_note.txt.gz` は非常駐(non-resident)で、断片に分かれてディスクに残っています。MFT の `$DATA` に残るデータラン(RunList)の生バイトを読み解いて断片を集め、元のファイルを復元して、フラグを取り出してください。常駐データに見える文字列は、答えとは限りません。
使えるツール: python3, xxd, dd, gzip, grep, awk
ヒント
ヒント 1見る
NOT_ALLOCATED(削除済み)のレコードのうち、`$DATA` が非常駐(non-resident)の .gz ファイルを探します。中身は mft_records.txt にはなく、クラスタのほうに残っています。
ヒント 2見る
RunList (raw) は NTFS のデータランです。各エントリの先頭バイトは、下位ニブルが長さ、上位ニブルがオフセットのバイト数を表します。オフセットは符号付きで、直前のランの LCN からの相対値です。00 で終わります。
ヒント 3見る
ダンプ先頭の LCN とクラスタサイズから、LCN をファイル内のオフセットに直します。ランの順にクラスタをつなげ、RealSize で切ってから gzip を展開します。