TaTa's Present

25
第二回定例会 TATa

Transcript of TaTa's Present

第二回定例会TATa

いつもどうり 紹介

TATa.name = ‘太田 侑冶’;

TATa.twitterID = ‘pf35301’;

TATa.mailAddress = ‘[email protected]’;

TATa.like = ‘Dr.Pepper’;

TATa.favoriteLangage = [‘C#’, ‘python’];

変わったこと

Windows -> Ubuntu

Visual Studio Code -> vim

それぐらい。

最近やってること

Wi*UHack

.vimrc

技術的なこと

ntfs データ復元について

基礎知識 HDD編一応

→プラッタ

基礎 HDD編

・ ブートセクタ └ ブートプログラムが入ってるとこ

・ MFT └ (Master File Table)  どこにどんなファイルがあるか記録したファイル NTFS インデックス

・データ領域 └名前 通り

・MFT コピー └名前 通り

ざっくり。

データファイル 構成

要するに[Index : Data]みたいな感じ

画像 大体引用

ほんでもってこんな感じに割り当てられてる

データ1,データ2 データ領域に格納される

←大体0バイト も が入る

※何も書かれていないテキストなど

さらに

こ 保存 され方に 4種類ある。

判断基準 主にファイルサイズや断片化率など

軽い順番に紹介していきます。

1.(最軽量)ファイル 内容すべてが$MTF レコード内に保存される。

NTFS 特徴であり利点

ディスク上 サイズが0バイトになってる状態

2.(普通)要するにこれ

通常 保存方法

3.(普通(断片化がひどい))ファイル 位置情報が別レコードになって保存されている

アドレス 量が多すぎて別になった状態

元 レコードに アドレスが書かれているアドレスが書かれている

4.(重量級)ファイル アドレスが書かれているレコード アドレスが増えすぎて元レコードに入り切

らなくなった状態

レコード アドレス 情報(Data run list)が$MTF 外に置かれている

めったにない

属性

$MTF 複数 属性で構成される

$Standard_Infomation : 更新日時など 情報

$File_name : そ 名 通り

$Attribute_List : レコードに入らなかった場合 ?

他にも$MTFに直接あるResidentとアドレスが書かれている Non-residentがある

$MTFブートセクタに$MTF アドレスなど 情報があり見ることができる

MTFも一つ ファイルな で図 ように

断片化する場合もある

ファイルレコードヘッダ

アップデートシーケンス オフセット (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)

Data run list 例え さっき [41 02 B9 30 91 11]だと

ビット数 : 41

長さ : B902

offset : 119130

となる

ファイル 内容

長くなる で省略

自分で調べて、どうぞ

ファイル 復元について

以上 方法から内容が上書きされる前にフラグを戻せ 良いことがわかる。

しかし4GiB以上 場合、ファイルサイズやData run listが全て0クリアされてしまってフラ

グを戻しても復元すること 不可能

おわり

ntfs クソ

これからもどうぞよろしく