FAT recovery

When File Allocation Table is unusable, check for directories. If a directory is fragmented, we might be able to reconstruct group string from a long name split between fragments.

Directories are containing data that will be useful to recontruct fat : we're getting the first cluster of each file, its size (so we know how many blocks are belonging to that file), and dates that can help us to construct something that is looking like a history of the filesystem and allow us to make some guess (like, big recent files are more probably fragmented than small files). That won't be very accurate however, as (for example) defragmenters moves files without modifying timestamps.

The idea is the following : if the block run between a start of file and the following start of file is less than the size of the file, the file is not fragmented. If the file is fragmented, we're seeking for following groups that haven't be allocated that way. Dates are helping to get in what order fragments are mixing.

size=3 size=5 size=1 cont'd size=5 size=6 size=2 ?
start 2 3 start 2 start 3 4 5 start 2 start 2 3 start 2 ?

Of course, the best to do is to verify that the reconstructed file is valid (using a filter).