上一篇從 LNK 裡看到了 Target File 的 Timestamp、File Size 和原始 Path,但 LNK 裡留下的資訊還不只這些。
今天繼續用昨天的 IMG_1833.JPG.lnk 當作範例,看看和 磁碟、主機以及 Object ID 有關的資料。
先繼續往 LNK 後面的資料看。
除了昨天看到的 Path,在 LNK 裡還可以找到 Target File 原本所在磁碟的 Volume Label 和 Volume Serial Number。

在原始檔案的 Path 的前面可以看到 Volume Label:
Acer
對應的 Raw Hex 是:
41 63 65 72
接著看 Volume Serial Number,這個欄位位在 Volume Label 後固定值 10 00 00 00 的後面。
這個欄位同樣要注意 Little Endian。
9D 40 A5 F1
→ F1 A5 40 9D
→ F1A5-409D
F1A5-409D 就是這個 Volume 的 Serial Number。
也可以用 CMD 看目前磁碟的 Volume Serial Number:
dir C:\ /a
把這個結果和 LNK 中解析出的數值互相比對。
如果兩邊一致,就可以知道這筆 LNK 所記錄的 Volume Serial Number 和目前這個磁碟相符。
除了磁碟資訊之外,LNK 裡還可以找到和主機有關的資料。
繼續往後看,可以找到 Net BIOS Name,也就是這筆 LNK 所記錄的主機名稱資訊。
我們可以先找到固定值 60 00 00 00 03 00 00 A0 58。
接著往後看,在一串 00 之後,就會看到一段可以直接辨識的文字,也就是這筆 LNK 裡的 Net BIOS Name。

如果是在自己的測試環境,也可以直接用 CMD 查看目前電腦名稱:
hostname
再把結果和 LNK 裡看到的 Net BIOS Name 互相比對。
如果兩邊一致,就可以多一條線索,把這筆 LNK 和目前這台主機建立關聯。
找到 Net BIOS Name 後,繼續往後看。
Net BIOS Name 後面如果沒有把欄位用滿,會以 00 補齊。當這一段 00 結束後,接下來的 16 Bytes 就是 Current Volume ID (黃框)。

Current Volume ID 可以看成目前這個 Object 所關聯 Volume 的識別資訊。
它和前面看到的 Volume Serial Number 不一樣:
Volume Serial Number
→ 磁碟區的序號
Current Volume ID
→ 目前這個 Object 所關聯 Volume 的 ID
接著再往後的 16 Bytes,就是 Current Object ID (紅框)。
Current Object ID 本身還可以繼續拆:
前 8 Bytes
→ UUID Timestamp
接著 2 Bytes
→ UUID Sequence
最後 6 Bytes
→ MAC Address
也就是:
42 56 03 9D 40 A5 F1 11 | B5 25 | 70 D8 45 7D A1 F8
----------------------- ----- -----------------
8 Bytes 2 Bytes 6 Bytes
UUID Timestamp UUID MAC Address
Sequence
先看前面的 8 Bytes:
42 56 03 9D 40 A5 F1 11
在轉換 Timestamp 前,要先把最後的 11 改成 01。
得到:
42 56 03 9D 40 A5 F1 01
接著使用 Little Big Endian Converter,把這組 Hex 從 Little Endian 轉成 Big Endian。
42 56 03 9D 40 A5 F1 01
→ 01 F1 A5 40 9D 03 56 42
再轉成十進位:
140,074,760,355,927,618

因為 UUID Timestamp 和 Windows FILETIME 使用的起算時間不同,所以要減掉 5,748,192,000,000,000。
計算後得到:
140,074,760,355,927,618
- 5,748,192,000,000,000
= 134,326,568,355,927,618
最後放到 EpochConverter 的 LDAP / Active Directory & Filetime Timestamp Converter 中,就可以轉成實際日期時間。

接著的 2 Bytes 是 UUID Sequence。
先把它轉成 Binary:
B5 25
→ 1011 0101 0010 0101
前面的 Bits 包含控制資訊,因此去掉最前面的控制 Bits 後:
0011 0101 0010 0101
轉成十進位:
13605
得到這筆 UUID 的 Sequence Number 是 13605。

最後的 6 Bytes 是 MAC Address。
這一段可以再拿來和主機的 MAC Address 做比對。
在 CMD 輸入:
ipconfig /all
找到網路介面的 Physical Address,再和 LNK 裡看到的 6 Bytes 比較。
LNK
70 D8 45 7D A1 F8
Physical Address
70-D8-45-7D-A1-F8
Current Volume ID 和 Current Object ID 後面,還可以再看到另一組 32 Bytes:
32 Bytes
→ Current Volume ID + Current Object ID
32 Bytes
→ Birth Volume ID + Birth Object ID

Current 這一組記錄目前的 Volume 和 Object 資訊,而 Birth 這一組則保留最初建立時相關的 Volume 和 Object 資訊。
Birth Object ID 同樣可以再拆成:
8 Bytes
→ UUID Timestamp
2 Bytes
→ UUID Sequence
6 Bytes
→ MAC Address