Having written almost 25,000 lines of code since the start of our project, v6 was due for a code review. So that's what I did, reviewed the code with the help of a static code analysis tool (FxCop for you developers out there :) ) and fixed all sorts of inconsistencies in the code. This should result in slightly higher performance and better behaviour when Eraser is in use.
However, due to the same code changes resulting from the review, all tasks will be lost during the upgrade. You are encouraged to note down tasks which you intend to use in the new install and redefine them once it is installed. Furthermore, because quite a substantial amount of code has been rewritten, certain functions may no longer work (or they may not work properly.) Please report such bugs to Trac!
Nonetheless, there has been a large number of bugs being fixed (as evidenced from the large jump in build number) and this release of Eraser should be better than before. Please help find any remaining bugs and report thme to Trac - this is most likely to be the final RC before Eraser 6 is released as stable.
|876, 1014, 1015||FAT dates only reach up to Jan 1 1980. Fixes #168.||Joel|
|878||Allow drives to be erased from the Explorer context menu.||Joel|
|879||Allow task cancellations to take place when searching for file cluster tips to erase.||Joel|
|880||Internationalised the Log Viewer.||Joel|
|881||Add the Eraser icon to the add/remove programs control panel applet. Fixes #187.||Joel|
|892, 897||Store all certificates in the Windows certificate store instead of having thme as loose PFX's on the disk for security reasons.||Joel|
|893||Flush all data to disk immediately after writing. Fixes #171.||Joel|
|894-895||Handle files which are currently locked during erasure as well as files which are encrypted, compressed or sparse gracefully.||Joel|
|896, 1022||Improvements to the progress dialog, better user experience when the dialog is waiting for data to come from the Erasure Executor.||Joel|
|898, 899, 901-973, 976, 978-984, 986-988, 991-1010, 1017, 1018, 1052-1053, 1057-1063, 1069-1071, 1088-1094, 1096, 1102-1103||
Code Review/Cleanup with FxCop: User-visible changes:
|900||Disable redrawing on the log viewer when log items are being added. This allows for the display of long logs quickly.||Joel|
|972, 974||Fixed crash in Log Viewer when copying an empty log.||Kaz/Joel|
|975||Delete the folder the user asked for erasure only if it is empty! Fixes the problem reported in the forums.||Joel|
Implemented filename escaping/unescaping when using the Eraser command line. All filenames containing any one of:
|985||The About dialog displays our new Website now instead of the SourceForge one.||Joel|
|989-990||Remove ISAAC from the list of PRNGs.||Joel|
|1011-1013, 1081||Allow users to export and import task lists. Implements #193.||Joel|
|1016||Display the nice antialiased Security Shield instead of an old aliased one previously.||Joel|
|1019||Fixed how the Scheduler manages actively executing tasks. This should prevent progress bars from being "abandoned": displayed without a parent item.||Joel|
|1026||Disable the context menu for the recycle bin entry when there are no files in the recycle bin. Implements #50..||Joel|
|1028||All forms should call UXThemeApi.UpdateControlTheme so that relevant theming upgrades can be made (eg list-views) and that the proper system font can be assigned (Tahoma on XP, Segoe UI >= Vista). This prevents the ugly use of MS Sans Serif under XP.||Joel|
|1033, 1034||Allow date Created, date Accessed and date Modified values to be set on streams.||Joel|
|1035||Fixed ADS enumeration. WIN32_STREAM_ID is a structure with packing 1 - the native packing doesn't seem to give a structure of the right size. I picked Pack=1 because this is meant to be stored to file and files don't usually have alignments (unlike memory).||Joel|
|1037||Implemented ADS Deletion.||Joel|
|1041||GetPathADSes takes a value by "out", meaning whatever value the totalSize variable had before would have been overwritten. Fixed the code to work properly now. This would have reported the wrong amount of data that needs to be written to erase the file..||Joel|
|1042, 1044, 1046, 1047||Implemented drag-and-drop into the scheduler. Task Lists are imported and all other files are erased.||Joel|
|1048||Fixed the Log viewer's resizing: the buttons aren't all over the place now.||Joel|
|1049||Use SetFileAttributes directly when dealing with streams since that will support ADSes but not the .NET variant (which does path checking.) ADSes can be erased properly now and their properties are also reset like normal files.||Joel|
|1050||When erasing Recycle bin files erase ADSes before the unnamed stream (following the order of the other file erasures). This allows for the secure deletion of files with ADSes which were sent to the recycle bin.||Joel|
|1051||Don't delete folders which are volume mount points even if they are empty||Joel|
|1054||Save all tasks when exiting Eraser on system shut down.||Joel|
|1056, 1064, 1083, 1087||Implemented unlocker feature - all locked files which are slated for erasure will have all open handles closed where possible before erasure.||Joel|
|1066||Include the correct runtime library - prevent Runtime configuration incorrect errors.||Joel|
Various scheduler fixes, including:
|1068||Place the run status on the Status column instead of the Next Run column||Joel|
|1072, 1073||Fixed crash when clearing the task log while the task was executing, and when there are no entries for a particular execution session, append a blank entry so that the session header will appear.||Joel|
|1082||Allow tasks to specify files to delete - and if they don't exist when the task is executed ignore and continue.||Joel|
|1085||Handle locked files' ADSes more elegantly - if the file can't be unlocked when searching for ADSes just continue; if the file is still locked it will throw an error later when the unnamed stream is erased.||Joel|
|1086||Rewritten ADS finding function - more efficient.||Joel|
|1095||Updated About dialog - version information is displayed, along side special build status (when there are uncommitted changes)||Joel|
|1097-1099, 1105-1106||Better-looking native menus (down to pixel)||Joel|
|1100||Better error handling when FL16KB erase method was unselected/deleted||Joel|
|1101||When displaying the Invalid default values message box, do not specify the invalid/invisible parent window. This ensures that the dialog can be seen in the status bar at startup.||Joel|
Multiple scheduler fixes:
|1107||Fixed a regression introduced in the scheduler fixes||Joel|
Why remove ISAAC?
Perhaps some of you are wondering why I'm removing ISAAC, the default PRNG for Eraser 5, from Eraser 6.
I met up with Professor Ling San on a seminar he conducted and I managed to ask him about his opinion regarding ISAAC (through email). This was his response and I quote:
After discussing with some colleagues who know ISAAC better, this is what some of them have to say:
ISAAC cannot be considered as broken so far, despite the few properties highlighted in the works of Aumasson (the best attack to date) and Paul-Praneel (on a modified version rather than the original ISAAC).
However, using ISAAC as a pseudo-random generator is maybe not an optimal choice, for
- the specification of ISAAC includes no precise initialization mechanism,
- ISAAC has probably not been as thoroughly analyzed as other algorithms,
- it uses a rather large internal state (more than 8192 bits), which may be a performance issue in certain environments.
To use as a pseudo-random generator in cryptographic applications, we would suggest one of the stream ciphers selected by the eSTREAM project (http://www.ecrypt.eu.org/stream/), or AES in counter mode.
This, and in light of concerns that some members of the community have over the security of ISAAC (most notably #143), I've come to a decision that ISAAC will be removed from Eraser. In addition, since an alternative was readily available in .NET (RNGCryptoServiceProvider) and that the default for v6 was set to the RNGCryptoServiceProvider, I felt that the change was not going to be really significant.
So you've still decided that v6 is for you? Look no further.
Disclaimer: The code is still of beta quality and may not be as stable or secure as the released versions of Eraser. Internal testing has been conducted to a certain extent, but remember that this is beta quality code and any loss of information or any data left unerased due to the use of this software has been disclaimed.
If you have read the disclaimer, read a few notes about installing and using betas then download and runthe installer. Some may have realised that the need for installing an Eraser Root Certificate is no longer needed - that is correct. I have managed to acquire a validated Certum Certificate which should validate without further action.
Eraser 5.8.8-beta1 released!
Eraser 5.8.8-beta1 has been released, fixing a few bugs regarding the context menu extension. See the full announcement
Eraser 5.8.7 released!
Eraser 5.8.7 stable is finally released after being too long in the making! This version brings with it Unicode changes, allowing the erasure of file names containing non English characters as well as the Portable distribution being a supported distribution. See the full announcement.
Eraser 6-rc5 released!
Having written almost 25,000 lines of code since the start of our project, v6 was due for a code review. So that's what I did, reviewed the code with the help of a static code analysis tool (FxCop for you developers out there :) ) and fixed all sorts of inconsistencies in the code. This should result in slightly higher performance and better behaviour when Eraser is in use. See the full announcement.