For mostly academic reasons, I've been learning how to interpret the Cluster Chain Run from the Data Attribute Block from an MFT Record from a NTFS volume.
I watched a video that walks through an example. Here's the example:
Flags | Cluster count | First cluster
41
02
f8 38 c7 01
21
02
c5 07
31
04
83 43 01
21
08
c0 fc
31
10
44 0b 00
31
01
f7 ef f9
21
1f
c6 e7
21
10
6b 28
31
01
00 52 e4
Now, the video shows some disk editing software that is interpreting the hex output. This is helpful, because the author of the video completely skips over at least 3 fundamental concepts:
- The "First cluster" field is cumulative. Easy enough to figure out if you use a calculator.
- The "First cluster" field is a signed integer, so that it can navigate backwards on the disk. This was trickier to figure out, but I got it.
- The third completely ignored concept is when the the least significant byte of the "First cluster" field is zeros. Since these fields are interpreted little-endian, and since this is a flexible-length field (the flags say how many bytes), then why would you have leading zeros?
So, here's how I calculate it.
Flags | Cluster count | First cluster
41
02
f8 38 c7 01
2 clusters starting at cluster # 29,833,464
21
02
c5 07
2 more clusters starting 1,989 from 29,833,464, which is cluster # 29,835,453
31
04
83 43 01
4 more clusters starting 82,819 from 29,835,453, which is cluster # 29,918,272
21
08
c0 fc
8 more clusters starting 832 earlier than 29,918,272, which is cluster # 29,917,440
31
10
44 0b 00
16 more clusters starting 2,884 from 29,917,440, which is cluster # 29,920,324
This is where my math deviates from their math. They say cluster # 29,840,452. I need help here.
31
01
f7 ef f9
21
1f
c6 e7
21
10
6b 28
31
01
00 52 e4
How does the math work when you have leading zeros in one of the fields? I also have a separate example where the leading zeros are in the "Cluster count" field, not the "First cluster" field; is that treated any different?"