ひよこメモ

自分が調べたこととか試したこととか書いていきます

NTFSのトンネリングとLocalFileMove(後編)

はじめに

こんにちは、iria_piyo🐣です。

前編ではファイル削除とファイル移動の操作で作成時間が引き継がれることを確認しました。 今回はファイルの削除、リネームの操作をせず、ファイル移動だけで作成時間が引き継がれるのか気になったので検証してみることにしました。

前編はこちら

NTFSのトンネリングとLocalFileMove(前編) - ひよこメモ

環境

Windows10 バージョン1803

検証内容

/test01内のtest01.txtを/test03に移動し、15秒以内に/test01/test02内のtest01.txtを/test01内に移動すると/test03に移動したtest01.txtの作成時間が引き継がれるのか。

f:id:iria_piyo:20180925104659p:plain
ディレクトリ構成

/test01/test01.txtのタイムスタンプ

>istat \\.\C: 296339-128-1
MFT Entry Header Values:
Entry: 296339        Sequence: 54
$LogFile Sequence Number: 75950503896
Allocated File
Links: 1

$STANDARD_INFORMATION Attribute Values:
Flags: Archive
Owner ID: 0
Security ID: 2836  (S-1-5-21-3763767945-1047358448-4033639875-8282)
Last User Journal Update Sequence Number: 16369357392
Created:        2018-09-25 09:26:05.266683300 (
File Modified:   2018-09-25 09:26:05.266888700 (
MFT Modified: 2018-09-25 09:26:08.181408600 (
Accessed:        2018-09-25 09:26:05.266683300 (
$FILE_NAME Attribute Values:
Flags: Archive
Name: test01.txt
Parent MFT Entry: 11853         Sequence: 96
Allocated Size: 0       Actual Size: 0
Created:        2018-09-25 09:26:05.266683300 (
File Modified:   2018-09-25 09:26:05.266888700 (
MFT Modified: 2018-09-25 09:26:05.266888700 (
Accessed:        2018-09-25 09:26:05.266683300 (
$OBJECT_ID Attribute Values:
Object Id: 33955469-c057-11e8-84dd-a81374942b83

Attributes:
Type: $STANDARD_INFORMATION (16-0)   Name: N/A   Resident   size: 72
Type: $FILE_NAME (48-4)   Name: N/A   Resident   size: 86
Type: $OBJECT_ID (64-5)   Name: N/A   Resident   size: 16
Type: $DATA (128-1)   Name: N/A   Resident   size: 0

/test02/test01.txtのタイムスタンプ

>istat \\.\C: 296987-128-1
MFT Entry Header Values:
Entry: 296987        Sequence: 13
$LogFile Sequence Number: 75950543246
Allocated File
Links: 1

$STANDARD_INFORMATION Attribute Values:
Flags: Archive
Owner ID: 0
Security ID: 2836  (S-1-5-21-3763767945-1047358448-4033639875-8282)
Last User Journal Update Sequence Number: 16369378424
Created:        2018-09-25 09:26:16.854957200 (
File Modified:   2018-09-25 09:26:16.854957200 (
MFT Modified: 2018-09-25 09:26:20.747500700 (
Accessed:        2018-09-25 09:26:16.854957200 (
$FILE_NAME Attribute Values:
Flags: Archive
Name: test01.txt
Parent MFT Entry: 295794        Sequence: 27
Allocated Size: 0       Actual Size: 0
Created:        2018-09-25 09:26:16.854957200 (
File Modified:   2018-09-25 09:26:16.854957200 (
MFT Modified: 2018-09-25 09:26:16.854957200 (
Accessed:        2018-09-25 09:26:16.854957200 (
$OBJECT_ID Attribute Values:
Object Id: 339554af-c057-11e8-84dd-a81374942b83

Attributes:
Type: $STANDARD_INFORMATION (16-0)   Name: N/A   Resident   size: 72
Type: $FILE_NAME (48-4)   Name: N/A   Resident   size: 86
Type: $OBJECT_ID (64-5)   Name: N/A   Resident   size: 16
Type: $DATA (128-1)   Name: N/A   Resident   size: 0

/test01/test01.txtを/test03へ移動させ、/test01/test02/test01.txtを/test01へ移動させます。 /test01/test02/から移動した/test01/test01.txtのタイムスタンプを確認します。

/test01/test01.txtのタイムスタンプ

>istat \\.\C: 296987-128-1
MFT Entry Header Values:
Entry: 296987        Sequence: 13
$LogFile Sequence Number: 75951797368
Allocated File
Links: 1

$STANDARD_INFORMATION Attribute Values:
Flags: Archive
Owner ID: 0
Security ID: 2836  (S-1-5-21-3763767945-1047358448-4033639875-8282)
Last User Journal Update Sequence Number: 16370028064
Created:        2018-09-25 09:26:05.266683300 (
File Modified:   2018-09-25 09:26:16.854957200 (
MFT Modified: 2018-09-25 09:34:24.635576100 (
Accessed:        2018-09-25 09:26:16.854957200 (
$FILE_NAME Attribute Values:
Flags: Archive
Name: test01.txt
Parent MFT Entry: 11853         Sequence: 96
Allocated Size: 0       Actual Size: 0
Created:        2018-09-25 09:26:16.854957200 (
File Modified:   2018-09-25 09:26:16.854957200 (
MFT Modified: 2018-09-25 09:26:20.747500700 (
Accessed:        2018-09-25 09:26:16.854957200 (
$OBJECT_ID Attribute Values:
Object Id: 339554af-c057-11e8-84dd-a81374942b83

Attributes:
Type: $STANDARD_INFORMATION (16-0)   Name: N/A   Resident   size: 72
Type: $FILE_NAME (48-6)   Name: N/A   Resident   size: 86
Type: $OBJECT_ID (64-5)   Name: N/A   Resident   size: 16
Type: $DATA (128-1)   Name: N/A   Resident   size: 0

結果

作成時間が引き継がれました。 削除や、リネームでなくてもディレクトリからファイル名が存在しなくなったら 作成時間がキャッシュ保存されて、今回のように引き継がれてしまうのでしょうかね。 また何か思いついたら、NTFS/FATのトンネリング*1についてもっと調べていきたいと思います。 面白い結果が見れて良かったです。

参考資料

A Fistful of Dongles: Microsoft Windows File System Tunneling

*1:ファイルがディレクトリから削除またはリネームされると、SFN/LFNと作成時間が短時間(デフォルトで15秒間)キャッシュに保存されます。このキャッシュは、ディレクトリごとに分けられています。 削除されたファイル名がキーとなり、新しいファイルがディレクトリに追加されると、キャッシュを検索し、復元できる情報があるか確認されます。 ディレクトリが削除されてしまうと、そのディレクトリのキャッシュも削除されてしまいます。