TaTa's Present
-
Upload
050h -
Category
Technology
-
view
166 -
download
0
Transcript of TaTa's Present
いつもどうり 紹介
TATa.name = ‘太田 侑冶’;
TATa.twitterID = ‘pf35301’;
TATa.mailAddress = ‘[email protected]’;
TATa.like = ‘Dr.Pepper’;
TATa.favoriteLangage = [‘C#’, ‘python’];
基礎 HDD編
・ ブートセクタ └ ブートプログラムが入ってるとこ
・ MFT └ (Master File Table) どこにどんなファイルがあるか記録したファイル NTFS インデックス
・データ領域 └名前 通り
・MFT コピー └名前 通り
ざっくり。
4.(重量級)ファイル アドレスが書かれているレコード アドレスが増えすぎて元レコードに入り切
らなくなった状態
レコード アドレス 情報(Data run list)が$MTF 外に置かれている
めったにない
属性
$MTF 複数 属性で構成される
$Standard_Infomation : 更新日時など 情報
$File_name : そ 名 通り
$Attribute_List : レコードに入らなかった場合 ?
他にも$MTFに直接あるResidentとアドレスが書かれている Non-residentがある
ファイルレコードヘッダ
アップデートシーケンス オフセット (0x30)
アップデートシーケンス サイズ (0x03)
最初 属性 offset(0x38)
フラグ(0x00001)
フラグ 0x00001がファイル,0x0003がフォルダ,0x0002が削除済み
こ レコードが他 レコードに入り切らなかった内容 場合、
+0x20に元レコード 参照が含まれてるためここが 0出ないとき
こ レコード読み飛 せ 良い ?
アップデートシーケンス
ntfsに セクタ 破損を検知するためにアップデートシーケンスと言うも がある
$MTFで 各セクタ 最後 2バイトをランダムな値に置換して元 値を
ファイルレコードヘッダに保存している
まずファイルレコードヘッダにセクタ 最後 値が保存されそ 次に元 値が
保存されていて読み込むときに置換される
属性(Resident)属性ID(0x10)
属性サイズ(0x60)
Form code(0x00)
内容 サイズ (0x48)
内容 offset(0x18)
Form codeがこ 属性 内容がResidentか示している
次 属性 現在 属性 オフセットに属性 サイズを加えた場所にある
属性(Non-resident)属性ID(0x80)
属性(レコード内) サイズ(0x60)
Form code(0x01)
Data run list offset(0x40)
内容 サイズ 32bit -> 64bit(0x164f)
Data run list(41 02 B9 30 91 11)
ファイル 復元について
以上 方法から内容が上書きされる前にフラグを戻せ 良いことがわかる。
しかし4GiB以上 場合、ファイルサイズやData run listが全て0クリアされてしまってフラ
グを戻しても復元すること 不可能
謎