@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

Windows 7におけるファイル移動とObjectID

Windows 7において、異なる二つの NTFS ボリューム、C ボリュームから E ボリュームへと、NTFS ボリューム間でファイルを移動した場合に、オブジェクトID がどの様に変化するかについて調べてみたのですが、以下のような状況です。

ローカルに存在している二つの NTFS ボリューム間でファイルを移動した場合、ファイルの ObjectID は、移動先のボリュームでもそのまま維持されています。
まず、aaa.txt のオブジェクトIDを確認します。

c:\temp\objectid>fsutil objectid query "C:\temp\objectid\aaa.txt"
Object ID : 23808d0ef247df11807700ac6178ea4c
BirthVolume ID : 6adb4ed20972dd4499a38def5709da1a
BirthObjectId ID : 23808d0ef247df11807700ac6178ea4c
Domain ID : 00000000000000000000000000000000

次に move コマンドを使って、別のボリュームに aaa.txt を ccc.txt という名前で移動した後、オブジェクトIDを確認してみます。ファイルのオブジェクトIDは、aaa.txt と ccc.txt で同じ ObjectID になっています。

c:\temp\objectid>move aaa.txt E:\ccc.txt
1 個のファイルを移動しました。

c:\temp\objectid>fsutil objectid query "E:\ccc.txt"
Object ID : 23808d0ef247df11807700ac6178ea4c
BirthVolume ID : 6bdb4ed20972dd4499a38def5709da1a
BirthObjectId ID : 23808d0ef247df11807700ac6178ea4c
Domain ID : 00000000000000000000000000000000

BirthVolume ID の先頭バイトは CrossVolumeMoveFlag ですが、これは 6a → 6b に変化していることが確認できます。
試しにネットワーク共有上に ccc.txt を qqq.txt として移動してみたところ、この場合にはファイルの ObjectID が新たな値に変化しています。(BirthObjectId 値では、オリジナルの ObjectID を保持)

G:\>move e:\ccc.txt G:\qqq.txt
1 個のファイルを移動しました。

G:\>fsutil objectid query "G:\qqq.txt"
Object ID : aacf8d213749df11b964001e68d9e1c0
BirthVolume ID : 6bdb4ed20972dd4499a38def5709da1a
BirthObjectId ID : 23808d0ef247df11807700ac6178ea4c
Domain ID : 00000000000000000000000000000000

Windows XP でローカルの二つのボリューム間で移動した場合の ObjectID の変化は別途確認。FNG12 ではリモートの共有へ移動させていたので、ローカルボリュームでの移動については未確認でしたね。