HFSExplorer Changelog --------------------- 2021.10.9 --------- - Add support for selecting the character encoding for decoding HFS filenames. - Add support for more APM partition layouts, including ones with unusual inconsistencies. - Add support for opening embedded disk images directly in HFSExplorer instead of having to extract them first. - Fix overflow in calculations when opening HFS-wrapped HFS+ volumes causing errors when extracting files and potentially when opening volumes. 2021.2.22 --------- - Add support for ARM-native JDKs on Windows (adding ARM versions of llio dll). - Simplify start menu options to remove the 'administrator mode' item and instead always launch the application elevated when there are no arguments while if there are arguments, i.e. when opening a file, then UAC is not invoked. - Add web site link to "update available" dialog. - Fix memory leak in HFS code. 2020.9.17 --------- - Fix outdated library leading to issues when loading UDIF/encrypted/sparse images. 2020.9.16 --------- - Change version scheme to be based on release date. - Bugfix: Fix broken resource fork access. See: https://github.com/unsound/hfsexplorer/issues/10 - Bugfix: Fix broken unhfs option '-resforks APPLEDOUBLE'. - Enhancement: The tree traversal process is now less sensitive to metadata corruption in leaf nodes, i.e. more data can now be extracted from corrupted volumes. - Enhancement: Improve compatibility with certain seemingly incorrect Apple Partition Map layouts with mismatching sector size. - Enhancement: Select device dialog updates devices when acquiring focus and when autodetect button is pressed. Previously any device attached to the system after opening the dialog was not seen until the dialog was closed and then reopened. - Enhancement: Volume autodetection now shows the volume name in addition to the device name, making it easier to find the right volume. - Enhancement: Volume autodetection can now detect volumes in MBR extended boot records (DOS extended partitions). - Enhancement: Add new option '-sfm_subsitutions' to unhfs, translating Windows- incompatible filenames to a Windows-friendly form. - Enhancement: Fix missing folder icons in UI when the look & feel does not provide a default one (fall back to our own custom folder icon). - Enhancement: Add support for running HFSExplorer in Windows NT 4.0 (JRE 1.5.0_06 tested). (MBR partition support is limited for USB removable drives due to OS limitations.) - Many other fixes. See the git log for more info: https://github.com/unsound/hfsexplorer/releases/tag/hfsexplorer-2020.9.16 0.23.1 ------ - Bugfix: Fix support for encrypted images with the version 2 header and multiple key entries. - Bugfix: Help content could not be located due to a recent location change. - Enhancement: Use the same custom icon for all HFSExplorer windows, making them easier to find. - Enhancement: Attempt to force the GTK+ Look & Feel if the default one provided by the system is Metal or Motif. This makes HFSExplorer more usable in superuser mode on many Linux distributions. - Many other small fixes. See the git log for more info: https://github.com/unsound/hfsexplorer/releases/tag/hfsexplorer-0.23.1 0.23 ---- - Feature: Support for files compressed with HFS+ compression methods 3 and 4 (introduced starting with Mac OS X 10.6). Compressed files are indicated with blue colour in HFSExplorer. - Feature: Support in HFSExplorer for extracting extended attributes to AppleDouble files. - Feature: Support for Mac OS X sparse image (.sparseimage) files. - Enhancement: Add support for UDIF images larger than 2 GiB. - Bugfix: Fix regressions in the UDIF XML and zlib-compression code which broke UDIF image support. - Bugfix: Fix broken parsing of non-ASCII XML data in UDIF file. - Bugfix: Fix incorrect data being extracted for multiple-extent files. - Bugfix: Windows installer now installs HFSExplorer shortcuts in 'All users' instead of the user-specific start menu directory. - Bugfix: Windows uninstaller didn't clean up files in newly added directories. - Many other small fixes. See the git log for more info: https://github.com/unsound/hfsexplorer/releases/tag/hfsexplorer-0.23 0.22.1 ------ - Feature: The "Load file system from device" dialog is enabled for non-Windows systems (Mac OS X, Linux, FreeBSD and Solaris are supported initially). - Change: The HFSExplorer Windows launcher (hfsexplorer.exe) can now open the Java download page from the dialog box displayed when no Java runtime could be located. - Change: Binaries and scripts have been relocated into the "bin" directory. - Bugfix: Extracting files in Windows under Java 7 or higher caused false errors to be thrown because HFSExplorer tried to set UNIX-specific UID/GID properties for the extracted files. - Bugfix: The HFSExplorer Windows launcher (hfsexplorer.exe) threw errors in certain situations because the JVM couldn't locate the Microsoft Visual C++ runtime (msvcr*.dll) required by the JVM. This has now been fixed by appending the path of the directory containing the required .dll to the system path before loading the JVM. 0.22 ---- - Feature: Sparse bundles (.sparsebundle) are now supported by HFSExplorer, both plain and encrypted. - Feature: AES-256 is now a supported encryption method. However this also requires support in your Java runtime. In most cases Sun/Oracle's Java runtime needs to be updated with the "Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files" in order to support AES-256. - Feature: Preserve file attributes for extracted files. Which attributes can be preserved varies with the platform. On Java 5/6 only the last modified date can be set for the extracted file. For Java 7 and higher we can also set the last accessed date and creation date where the underlying file system supports it. When using Java 7 on UNIX platforms, the mode and ownership can also be set. - Feature: More detailed information about the B-tree files is added to the "File system info" window, and a new view of the Journal is added. - Change: HFSExplorer now hides specially protected files and directories by default. The affected files and directories are the file and directory inode directories ("\u0000\u0000\u0000\u0000HFS+ Private Data" / ".HFS+ Private Directory Data\u000d") and the journal files (".journal_info_block" / ".journal"). - Bugfix: Incorrect key compare order for extent keys led to issues with overflow extents in resource forks. - Bugfix: Original HFS catalog key comparison algorithm was incorrect, leading to various lookup issues on HFS. Fixed by implementing the 'relstring' case-folding table. - Bugfix: Recognizing HFS/+/X filesystems failed when operating on devices requiring aligned I/O. - Bugfix: int overflow bug in caching layer led to OutOfMemoryError in certain situations when reading large disks. - Bugfix: Missing string length check when checking for reserved Windows filenames caused an exception to be thrown. - Bugfix: When extracting directories with names containing spaces, the files in these directores could not be extracted. The fix is to check that the created directory name is really equal to the name that we intended to create (method deepEquals) and to fail if it isn't, requiring the user to rename the directory to something sane. - Many other fixes are also included. Please refer to the git log for detailed info. 0.21 ---- - Feature: New command line utility unhfs added which makes it possible to extract the contents of an HFS/HFS+/HFSX file system from the command line. Run unhfs.bat/unhfs.sh for instructions on how to use it. Thanks to Sebastian Lisken for suggesting this utility and participating in its development. - Feature: Ability to view and extract the contents of resource forks built into the file information dialog (will only appear if there is resource fork data in the file). Also available as an external program, Resource Viewer, which will appear on the start menu for Windows users, and can be accessed through the startup script resview.bat/resview.sh for other users. - Feature: New File menu item "Load file system from path" added, enabling users to type the pathname to a device file or disk image instead of having to select it with the file chooser dialog. This makes it a lot easier to load devices in Mac OS X and *nix systems. - Improvement: Increased compatibility with devices that are unwilling to state their size, such as certain iPod devices attached to Windows systems. Original problem report: http://sourceforge.net/forum/message.php?msg_id=5709684 - Symlink bugfix: Symlinks referring to themselves caused infinite recursion and StackOverflowError. Original problem report: http://sourceforge.net/forum/message.php?msg_id=5723203 - HFS bugfix: Incorrect structure definition for CdrFilRec led to an inability to extract resource forks and fragmented files. - Bugfix: Proper resource fork file format now generated when extracting resource forks. The earlier versions extracted resource forks as raw resource data, which is incompatible with Mac OS X. Now proper AppleDouble format files are generated, making the resource forks readable through SMB network shares when mounted by Mac OS X. 0.20.1 ------ - Bugfix: The status field in the main window could expand vertically. - Installer fix: Uninstalls current version before installing new one. - Mac OS X fix: Dock icon gets set to the HFSExplorer icon. - Bugfix: Some annoying debug messages were printed in the debug console. 0.20 ---- - Experimental support for reading encrypted UDIF/raw disk images (.dmg). Feedback is much appreciated, as I can only generate a certain amount of test cases. - Experimental support for older HFS (Mac OS Original) file systems. Feedback is much appreciated here as well. - Support for hard links, both to files and directories (yes, HFS+ supports directory hard links, but so far Apple only uses them for the purpose of Time Machine backups). - Support for POSIX-style symbolic links. - Ability to create a read/write disk image (.dmg) from a loaded file system. - Java 6+ only: Table header sorting for the file table is now implemented. The last (empty) column will sort on the internal sort order, if you need to reset your sorting choices. - More flexible extract options, such as setting default actions for different events that may occur. (Example: "Could not create directory" -> Skip / Auto-rename / ...) - Major restructuring/modularization of core components to ease future development. - Bugfix: Thread safety is now a reality within HFSExplorer. The extract progress dialog no longer needs to be modal. - Bugfix: Specifying a device path as argument when launching the app failed previously due to incorrect assumptions about input data. - Bugfix: Caching layer was suffering from a logic error, mostly encountered when reading very small filesystems (such as disk images), which then could not be loaded. - Bugfix: Autodetect failed for some MBR partitioned drives. - Bugfix: Corrected a small rounding error that affected the last digit of displayed file sizes, making 4,5 KiB files appear as 5 KiB files instead of 4 KiB (only affected what was presented to the user, and none of the internal workings). Whether this is the correct way of displaying a file size is arguable, but it's a floor estimate, and usually much more usable. - Bugfix: The user previously wasn't able to abort the "Calculating selection size" phase when extracting files. - Bugfix/feature: When extracting resource forks or both forks, empty resource forks are now skipped over, rather than being extracted as 0-byte "._" files. 0.19.5 ------ - HFSX support can be considered stable as I have got no reports on any related problems. - Bugfix/feature: GPT tables are now explicitly included in the Autodetect scan in the Windows dialog "Load file system from device". If you have a broken MBR but a valid GPT, the GPT partitions will be automatically detected. - Made the Volume info panel a bit more detailed and replaced JLabels with JTextFields so information easily can be marked up and copied. - Added two options in the popup menu displayed when user right clicks a file/folder: - Extract data - Extract data and resource fork(s) - Extract progress window now always closes when user clicks the window's close button, even though the extraction process might not have ended. This enables the user to do error checking if extraction hangs. - Windows: Added support for 64-bit JVMs (compiled code now exists for x86_64 and Itanium, though only x86_64 has been tested). - Launcher improvements and various small bug fixes to cope with 64-bit Windows and WOW64. - Converted the ever-disabled "Back" button into an "Up"-button to walk upwards (towards the root) in the directory tree. - Added support for more than 20 partitions per drive, more than 20 drives and more than 20 CD-ROMs in "Load file system from device" dialog (not that anyone has actually needed to use that many, but why impose limitations when you don't really have to?). - "Open file" in Windows is now much more usable due to invoking the Windows handler instead of using the Java6 openFile handler when available. - Fixed a few user interface bugs and quirks. 0.19 ---- - Feature: Experimental support for HFSX formatted volumes (Mac OS Extended with case sensitive filenames). Feedback is appreciated for those with HFSX volumes. - Feature: Implemented a caching layer between the file system handler and the media. This makes copying from CDs and DVDs a lot faster, and potentially speeds up operations on other media (hard disks, disk images) as well. - Feature: bzip2 compressed UDIF .dmg files can now be opened. - Bugfix: Annoying GUI behavior when extracting files with long file names. - Cosmetic fix: Background is now consistently white in the file list pane. - License change: GPL version 2 to GPL version 3. 0.18.3 ------ - Bugfix: Parsing of Driver Descriptor Records and GUID Partition Tables could bail out for unexpected values when detecting partition systems, leading to exceptions when trying to load file systems. - Bugfix: The launcher, hfsexplorer.exe, had a bug leading to access violation and crash under some circumstances due to a non null-terminated string being generated. 0.18.2 ------ - Bugfix/feature: Windows autodetect button now handles APM partitioned drives/CDs as well. - Bugfix: HFSExplorer now works with large Apple Partition Map and MBR partitioned drives. - Bugfix: Update check now checks for build number instead of version number. 0.18.1 ------ - Implemented support for wrapped HFS+ volumes, i.e. HFS+ volumes wrapped inside HFS volumes, as described in: http://developer.apple.com/technotes/tn/tn1150.html#HFSWrapper - Fixed a minor bug where the user wasn't notified when a file could not be opened. 0.18 ---- - Huge rework of the libraries from DMGExtractor, due to a lot of wasted memory leading to OutOfMemoryError for huge DMG files. Particulary the XML parser has been seriously reconstructed. Tested with an 11 GiB compressed/25 GiB uncompressed UDIF disk image. - Fixed a serious bug leading to a lot of files not beeing seen by HFSExplorer (though I didn't notice it myself). Had to do with the algorithm that collected all files in a directory. (thanks to Mark Wainwright for the valuable test case) - Implemented a Unicode composition algorithm, for those who have been experiencing strange filenames whenever there are accents and umlauts in them. (thanks to Wolf Mc Even for info) - Improved repsonsiveness and usefulness for the progress dialog displayed when extracting files from the file system. - Improved efficiency when reading UDIF disk images (.dmg files). (In some cases probably up to a million times faster... ;> ) - Implemented double-clicking in the right pane to browse a directory, or to extract (or open), a file. - Implemented right-clicking in the left and right pane for bringing up a popup menu. Currently the only option is "Information", which brings up the info window. - Made the partition choosing dialog default to the first HFS partition found. - Fixed a bug when running the application in OS X, related to JFileChooser (all in all, JFileChooser seems very buggy in OS X). - Fixed a non critical bug with HFSPlusBSDInfo. Apparently some root nodes (CNID 2) have a special value for "file mode", 0x0, not mentioned in POSIX and such specs (not that I have read them, but I assume...) so file info for the root node could not be displayed.. - UI is no longer active while the program loads a file at startup (could be confusing when loading large files, where the user might have thought that no operation was in progress) - Added a debug console window where all the output from System.out and System.err goes when the application is running in pure windowed mode. - Added icons for .dmg files in Windows Explorer. (for source material, thanks to the original creator of the icon for GParted, whoever that is...) 0.17 ---- - DMG UDIF file support! Most DMG files can now be read directly from within HFSExplorer (no prior extraction needed), thanks to integrating code from DMGExtractor. It is all rather slow at the moment (especially with compressed images), but expect performance enhancements in the future when I implement smarter buffering/caching. What is known not to work are .dmg files with ADC or BZIP2 compression and encrypted images. Additionally, any image that does not contain an HFS+ file system will obviously not work. - Created a launcher application for Windows, which automatically locates the Java Runtime Environment and starts the application from an .exe file. This launcher might work poorly with JREs from other vendors than Sun, so feedback is appreciated from those using non-Sun Java Runtime Environments. - Made a NSIS installer package for Windows users, making it easy to install/uninstall the application. The installer is able to create file associations with .dmg files. - Enabled the address field and "Go" button in HFSExplorer (after many releases where it has been disabled, waiting for implementation). - Title bar now shows which file is open. 0.16 ---- - Added automatic detection of partition systems and file systems, so that the user no longer needs to worry about whether it should choose to load them with or without APM. - Added support for the MBR and GUID Partition Table partitioning schemes, making access to raw disk images or devices from Intel systems possible. (Not very tested, might be buggy...) - Added an "autodetect" button to the "Load file system from device" dialog (only for Windows users), so that the user doesn't have to look for the correct device itself. - Added a progress dialog when extracting files, so that users get some info on what's going on. - Added keyboard shortcuts to menu items. - Added a menu item to check for newer versions of HFSExplorer. - Behavior change: When the program encounters an exception while extracting files (for example when the disk is full), the user can now choose to abort the entire extraction, or continue. - Fixed a bug leading to exceptions when failing to load a file system, requiring a restart of the program. 0.15.1 ------ - Minor Windows Vista fix. The icons were not found when starting HFSExplorer with the runfsb_vista.vbs script. Now the icons are included in the JAR file, so they should always be available. 0.15 ---- - Major UI overhaul with a few icons, changed appearance of the file list. Many things left to do though. - Added information dialogs for presenting information about the volume header, the catalog file, detailed file and folder info, some minor info on the journal... (all in preparation for future development work on write support) - Behavior change: Extract button now extracts the entry that was last in focus. If you selected a folder in the left pane most recently, that folder will be extracted and not the selection in the right pane (and vice versa). - Fixed a bug submitted by Gennadiy Bukhmatov related to the behavior of org.catacombae.hfsexplorer.types.OSType. - Added a start script for Windows Vista, automatically bringing up the UAC dialog. It has not been tested more than that, so please mail me about your experiences with Windows Vista. Vista users may run "runfsb_vista.vbs"... 0.11 ---- - Fixed a very significant bug, sometimes leading to some files not being seen by HFSExplorer, and sometimes leading to a complete crash. - Made extraction of multiple files, as well as directory trees possible. - Fixed some uncaught exception when trying to read an Apple Partition Map when it isn't there. - First release of source code. 0.1 --- - First release