Hi guys,

You really stirred me up with this exFAT discussion and Eric gave me a great idea with requesting LTOOLS. I connected the two, I delved into it and spent most of the last five days with implementing an exFAT file system processor. It is _very_ exciting!

I have _not_ looked into any existing source, the software is written from scratch, according to the contents of a virtual disk image (created and filled with data under Windows 7 running in VirtualBox) and reverse engineering documentations at:

- SANS Institute: Reverse Engineering the Microsoft exFAT File System
  
http://www.sans.org/reading-room/whitepapers/forensics/reverse-engineering-microsoft-exfat-file-system-33274
- Paradigm Solutions: Extended FAT File System (1.4)
  https://paradigmsolutions.files.wordpress.com/2009/12/exfat-excerpt-1-4.pdf
- NTFS.com: exFAT overview
  http://ntfs.com/exfat-overview.htm

Currently it has the following limitations:
- no physical disk access, only virtual disks (= files);
- read only;
- files can't be accessed yet, only the directory tree traversed;
- cluster chains are not yet followed;
- it's written in C (not assembly), too big;
- there will probably be a couple of nasty tricks to handle integers larger 
than 32 bits in DOS (LBA48 support).

Its nice features are:
- it's written in C (not assembly) ;-) , should be portable;
- disks, partitions, volumes, clusters are abstract, should be able to support 
other file systems;
- I _really_ tried to follow C coding conventions;
- I'm aware of DOS memory constraints and try not to rely on lots of megabytes 
of memory available;
- it compiles under both Borland C++ (DOS, 16 bit) and MinGW/gcc (Windows, 32 
bit), without errors or warnings (all gcc warnings enabled)
- it outputs debug messages in _great_ detail;
- it does an _insane_ amount of checks on the partition table, exFAT boot 
sector and exFAT directory structures, could also be used as (read-only) 
CheckDisk/fsck;
- it supports (or is supposed to support at the end) all exFAT details except 
for TexFAT (transactions; switch DOS disk cache off instead! ;-) ) and ACL 
table (no documentation available).

I also found a few errors in the documentations mentioned above.

I plan to release it, with full source, as soon as it can read files, a piece of standalone software (DOS and Windows) in the style of LTOOLS: http://www2.hs-esslingen.de/~zimmerma/software/ltools.html . (If you'd like to help or are interested, E-mail me.) I'm not sure about licensing, as I was previously planning to donate _all_ my software into the public domain, but I've been seduced here to go for GPL instead. ;-)

I've also been working on a Windows port of FATSort: http://fatsort.sourceforge.net . Actually, I've had it and been using every day for _years_, just haven't found time to apply all changes into the latest release. This software could also be extended to support exFAT.

I just need more free time. (But who doesn't? :-) )

Joe
--
KOVÁCS Balázs aka Joe Forster/STA; s...@c64.rulez.org; http://sta.c64.org
Don't E-mail spam, HTML or uncompressed files! More contacts on homepage
------------------------------------------------------------------------------
_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to