今日も大学学業頑張っている5555です。
今日暇つぶしの時、少しPowershellについての参考文献を読みました:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-6
この記事も一気にwindowsオプションファイルをリストする方法を紹介しました:
https://blog.ipswitch.com/how-to-accurately-enumerate-windows-user-profiles-with-powershell
すると、PS> Get-ChildItem 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion\ProfileList'
実行していたが、少し気になるのはName
の一番下、長い数字列のところです。
更に調べると、一つ長い数字列(SID)は唯一のWindowsアカウント名を対応しています。
例えば、
図のlaというアカウントはS-1-5-21-207235803-1283372969- 343841458に対応します。
では、もしlaというアカウントを削除し、同じ名前で新たなlaというアカウントを作ったら、この長い数字列(SID)は変わりますか?
答えは当然です。
いわゆる、この長い数字列(SID)はアカウントの指紋です。
ProfileListhはlaというアカウント名が示しています:
Windowsでファイルを削除した後、実はハードディスクにまだ存在しています。しかし削除されたファイルの元の所属はアカウント名に対応するではなく、この唯一の長い数字列です。例えば、SIDは12345、Titaniaというアカウントはfsociety.dat削除したら、ごみ箱内にfsociety.datの元の所属はSID12345だけ示しています。(重複アカウント名の場合を考え、唯一の長い数字列を使ったらより容易でしょう)
これはデジタルフォレンジックまだデータ復旧に使える手段かなわたくしは考えています。(one SID=one account)
プログラミング実装について:##
1、まず長い数字列(SID)とアカウント名をマッピングする変数を作ります。
2、ごみ箱の位置を判断しなければならない:
- winxpの場合は:Recycler
- win7以降の場合は:$Recycle.Bin
3、ごみ箱内の長い数字列(SID)全てアウトプット、対応しているアカウント名もアウトプット、全てのファイルもリストします。
原理はこういう感じですが、値段凄く高いデータ復旧ソフトウェアもこういう手段使っているかな。正直、削除されたファイルのブロックに再び新たなファイルを書き込んだら復旧できないでしょうか。後日PYTHONを使い、この原理を再現したいと思います。