Magic Lantern Firmware Wiki
Advertisement

As we alter EXFAT we need to fix the checksum.

http://code.google.com/p/exfat/source/diff?spec=svn183&r=183&format=side&path=/trunk/mkfs/vbr.c

http://www.sans.org/reading_room/whitepapers/forensics/reverse-engineering-microsoft-exfat-file-system_33274

Steps:

1. Sector 0: write EOS_DEVELOP (from 0x82) and BOOTDISK (from 0x7a)

2. Calculate checksum: chks:=0; for i:=0 to 5631 do if (i<>106) and (i<>107) and (i<>112) then chks:=(chks shr 1)+(chks shl 31)+buf[i];

Note: This is incorrect!  it should be chks ROTATE_RIGHT 1 and chks ROTATE_LEFT 31. Do not use SHIFT!


3. Sector 11: (from 0x1600, 5632 ) write the calculated checksum 128 times (fill the whole sector with the 4 byte checksum value)

4. Sector 12: Copy Sector 0 here

5. Sector 23: Copy Sector 11 here

Advertisement