-
Notifications
You must be signed in to change notification settings - Fork 52
/
ChangeLog
462 lines (357 loc) · 11.8 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
TODO
* pyfsntfs convert lookup path to support additional character range
* libfsntfs and fsntfsmount how to support \\ in file name? since \\ is separator used by the library
* extent: flag WofCompressedData extent as wof_compressed?
* extent: rename compressed flag to lznt1_compressed?
* fsntfsinfo: print volume size
* fsntfsinfo: print extents/data runs of $DATA stream?
* get_file_entry_by_path determine unicode form
* fsntfsmount: cache last 3 recently used directories?
* test if format version 1.2 is supported and updated README
* refactor $I30 index to file entry
** refactor libfsntfs_mft_entry_has_directory_entries_index
* Ntfs compressed stream add uncompressed size check
* add raw (no valid size) data stream support
* check data size of WOF reparse point
* add has WOF compressed data stream function (for dfVFS)
* complete read/write lock support
** refactor volume and file entry to use file system
** file entry
*** libfsntfs_file_entry_get_name_attribute_index
*** libfsntfs_file_entry_get_security_descriptor_size
*** libfsntfs_file_entry_get_security_descriptor
*** continue with libfsntfs_file_entry_get_sub_file_entry_by_index
** MFT metadata file
** specific attribute values functions
** USN journal
* MFT entry
** preserve attribute list data MFT entries?
** libfsntfs_attribute add function to indicate partial attribute (has attribute_list_entry but no mft_attribute)
* bitmap values
** handle sparse data runs more efficiently
* fsntfsinfo complete bodyfile support
** fix libfsntfs_file_entry_get_security_descriptor_size: unable to retrieve security descriptor from index for identifier: 0.
** add support for tsk metadata address calculation? inside MFT attribute?
* fsntfsinfo -F add support for ADS notation
* API changes
** rename libfsntfs_volume_get_number_of_file_entries to libfsntfs_volume_get_number_of_mft_entries
* change libfsntfs_mft_attribute_get_utf[8,16]_name[_size] to return 0 if not set
* add debug compare of long and short names
* refactor index to better handle get entry by identifier
** make index value cache a passthrough for index node cache
** use tree for get entry by filename
** use tree for get entry by security identifier
** remove the need for a local cache in libfsntfs_index_read_sub_nodes, use cache value lock instead
* rename libfsntfs_internal_attribute_get_data to libfsntfs_internal_attribute_get_resident_data
* libfsntfs_attribute add read / seek functions
* change calls to libfsntfs_mft_entry_get_index_by_utf8_name to utf16 for optimization
* change calls to libfsntfs_mft_entry_get_data_attribute_by_utf8_name to utf16 for optimization
* enforce LIBFSNTFS_FILE_ENTRY_FLAGS_MFT_ONLY when trying to read data runs
* libfsntfs_volume_get_root_directory return 0 if MFT entry 5 does not exists
* Check if mft_entry should be cloned before passing to
libfsntfs_file_entry_initialize in case it is cached out
otherwise remove it from file_entry
* tests: pass mft_metadata_file different input files
* look into handling directories with high number of entries
* libfsntfs/pyfsntfs attribute
- expose raw attribute data?
* USN change journal
- add support for values in $Max
* resident data
- handle valid data size
* enforce LIBFSNTFS_FILE_ENTRY_FLAGS_MFT_ONLY when trying to read data runs
* fix or remove TODO_CASE_INSENSITIVE
* compressed data
- handle decompression errors e.g.
compression tuple offset value out of bounds.
- have means to map sparse ranges outside compressed blocks
- handle valid data size
* create fsntfsexport tool to export file entry data
* handle pre 3.1 attribute names?
* check file entry life times
* set file entry name, if get by index and number of filenames is 1
* cached indexes?
* data runs block
- add a check to see if data run sizes add up
* volume
- complete libfsntfs_volume_has_bitlocker_drvie_encryption
- complete libfsntfs_volume_has_volume_shadow_snapshots
* file entry
- add API get file name by attribute index functions?
- add API get parent file_reference name by attribute index functions?
- add API function for owner
- add API function for security identifier
- only retrieve file name from the directory entry?
or make clear in function documentation that first
non-short filename is the fallback?
- add support to retrieve name of the root entry if directory entry is missing
* pyfsntfs
- add attribute type enum
* pyfsntfs file entry
- expose more MFT entry values through API and pyfsntfs
- add is empty function
- add has_reparse_point function
- add has_symbolic_link function
- add is_corrupt function?
- how to handle file-like object functions for non-data file entry
* pyfsntfs file entry/data stream
- add extents iterator?
* libfsntfs/pyfsntfs file entry
- expose default data stream
- add support for short file name
- fallback to short file name if no long
* libfsntfs_mft_entry_read_element_data set MFT only flag using element flags
* libfsntfs_attribute_read_from_mft handle attribute size out of bounds
* mft metadata file parsing mark file entry as in complete if data is stored
outside the $MFT
* change MFT entry flags value checks to named definitions
* attribute data parsing
- add SSIZE_MAX check for attribute->data_size before (size_t) cast
* cached approach of reading attributes ?
* fix issue on win2k image
- stack overflow infinite loop
- determine MFT entry index based on offset
do not rely on value in structure
* MFT entry create get data segment function for internal usage
* how to handle named index roots e.g. $ObjId:$O, $Quota:$O
* fix issue with bounded MFT entry cache
* support MFT entry 0 consisting of multiple $DATA attributes
- add segment support to ntfs attribute data reference
* file_entry: clone directory entry ?
* what about ADS support ?
- todo read from ads
* change libfsntfs_attribute_reference_append_attribute into insert and sort
attribute ranges
* add function to retrieve MFT entry by index
* check if check_signature function uses the right offset
* refactor: libfsnt_array_append_entry in index ?
* move get mft entry to file entry initialize ?
- clone mft entry in file entry initialize (for now the mft entry cache
contains a slot for every entry)
* move volume header from io handle to separate object ?
* $MFT scan
- mark ignored attribute list
- mark ignored data stream
- mark ignored index
- handle corrupt MFT entries (e.g. missing FILE signature) (+/-)
- allow to read data runs but do not allow to read data
* $UsnJrnl:$J parsing
- move UsnJrnl parsing into library ?
- add support for $UsnJrnl:$J file parsing
* API
- expose logged utility stream attribute
Format:
* index
- group equivalent index data values
* boot block
- remove value restriction add sanity check
* add support for attributes:
- logged utillity stream (LOGGED_UTILITY_STREAM) (partial)
* pre NTFS 3.0 attribute types
- volume version
* filenames
- ignoring short filenames for now?
* ntfs3g indicates volume is hibernated, could this be stored in the volume flags?
Tools:
* fsntfsinfo
- print ADS
- move UsnJrnl to separate tool?
- fix remnant data in buffer and remove work around
- sanitize control characters in filenames
- add detection of BDE and VSS
- add support for $LogFile
- print $DATA attribute size
Error tolerance:
* Support partial images/file systems
Tests:
* file with resident data
* file with non-resident data
* file with sparse data
* file with compressed data
* file with valid data size < data size
* file with ADS
* directory with ADS
Performance:
* compact attribute union data/file reference (use type to distinguish between them)
Debug:
* print volume information flags description
Deployment
* write man pages
20141011
* see `git log' for more recent change log
* updated dependencies
* changes for project site move
20141004
* removed README.macosx
20140810
* worked on exposing the attributes
20140809
* worked on data streams support
* worked on exposing the attributes
20140808
* worked on data streams support
20140803
* bug fix in Python bindings
20140628
* Worked on format support
20140530
* Worked on Python bindings
20140529
* updated dependencies
* Worked on Python bindings
20140417
* small changes
20140318
* worked on non-resident attribute list support
20140207
* worked on libfdata refactor
20140206
* worked on libfdata refactor
20140205
* worked on libfdata refactor
20140204
* worked on libfdata refactor
20140203
* worked on libfdata refactor
20140119
* worked on libfdata refactor
20140118
* 2014 update
* updated dependencies
* worked on libfdata refactor
20131109
* updated dependencies
20130915
* code clean up
20130914
* updated dependencies
* added libcthreads build support
20130224
* updated dependencies
* 2013 update
20120929
* updated dependencies
20120821
* improve NTFS version 3.0 support
20120820
* applied update
* improved reading MFT attribute lists and data MFT entries
20120526
* worked on MFT read and seek data functions
20120520
* 2012 update
* updated dependencies
* added libfusn
* fsntfsinfo:
- added info handle
20111125
* code clean up
* added support for empty volume name
20111124
* removed libvshadow
* updated configure.ac and m4 scripts
* added include/codepage.h
* updated common, array type
* updated libcstring, libsystem, libuna, libfdata, libfdatetime, libfguid,
libfwnt
* added libfcache
* code clean up
20110510
* update libvshadow
20110509
* dist fixes
20110508
* updated configure.ac
* updated libcstring, libsystem, libuna, libbfio, libfdata, libfguid
20110309
* small changes
20110308
* small changes
20110306
* worked on support for MFT consisting of multiple data runs
20110305
* updated configure, common, array type, libcstring, liberror, libnotify,
libsystem, libuna, libbfio, libfdata, libfdatetime, libfguid, libfwnt
* 2011 update
20101216
* updated Makefile
20101214
* updated configure/Makefile
20101209
* added missing MFT entry flags debug output
* code clean up
* added initial gettext support
* updated common, libfdatetime
20101203
* updated common, array type, liberror, libnotify, libsystem, libuna, libbfio,
libfdata
20101129
* worked on txf data
20101128
* worked on txf data
20101127
* updated libfdatetime
* moved abort to IO handle
* worked on txf data
20101126
* worked on support for multiple index allocation attributes
20101125
* worked on support for multiple index allocation attributes
* updated libuna, libbfio, libfdata
20101124
* updated configure, libcstring, liberror, libbfio
* worked on support for an attribute list
20101113
* textual changes
20101112
* renamed library to libfsntfs
20101110
* worked on winsxs support
20101109
* worked on logged utility stream
* updated include/error.h
* updated libfdata, liberror, libbfio, libnotify, libsystem
* added support for directory index that only consists of index root attribute
* fixed bug in fsntinfo
* added support for directory index that has root and empty allocation index
attributes
20100912
* worked on reading attribute list
* updated libbfio
20100911
* improved handling data runs
20100910
* worked on reading directory entries
20100909
* worked on reading directory entries
20100908
* worked on file entry functions
* worked on reading directory entries
* added debug print of file name attribute namespace description
20100907
* worked on reading directory entries
20100906
* worked on reading indexes
20100905
* worked on reading indexes
* worked on data runs
20100904
* worked on attributes
* worked on reading indexes
* worked on fixup values
20100903
* worked on mft attribute
* updated libbfio, libfdata
* worked on file entry API functions
* added libfguid for $OBJECT_ID attribute
* worked on attributes
20100828
* worked on reading a MFT entry and attributes
20100827
* worked on reading a MFT entry and attributes
* added debug print of file attribute flag description
* added debug print of mft attribute type description
20100826
* worked on reading a MFT entry and attributes
20100825
* initial version