FileVerifier++ is a Windows application for verifying the integrity of files. FileVerifier supports various algorithms by means of dynamically loadable hash libraries. It is a pure Win32 C++ application and doesn't have any dependencies other than what comes with Windows. Permanent installation is not required and may be burned to a CD or used from a flash drive.
In brief, FileVerifier++ should run without problems on the following operating systems.
The current version of FileVerifier++ as of this writing is known to execute on Windows XP and Windows 2003 Server (through testing). It should also operate on Windows 2000. It might execute on Windows NT 4.0 (some upgrades may be neccessary.)
The current binary build supports wide characters internally (2-bytes) and utilizes the Unicode versions of the Windows API calls. Thus, this version will not directly execute on Windows 9x as it does not support these functions. I did create an ANSI build of FileVerifier (ANSI here is Microsoft's terminology, not mine), and that build does appear to work on Windows 98, though on my test system (VMWare Server), it appears to hang upon termination. The same "ANSI" build executes on other operating systems without issues. Upon further debugging, it appears to be hanging upon returning to a 16-bit device-driver call, so it may be something to do with VMWare's drivers being installed in the VM. More to come on this one.Hash Algorithms Supported
The hash algorithms currently supported (at the time of this writing) are:
The FileVerifier++ Shell Extension is a useful addition to FileVerifier++. The extension adds a context-menu handler to Windows Explorer that allows one to hash a set of files and/or directories. The menu allows one to choose between the default hash algorithm and each installed algorithm.
The extension is distributed with the MSI package as well as the binary zip distribution (though in this case, it must be manually registered.)
FileVerifier++ now comes with a non-interactive, command-line hashing utility called FVC. FVC supports all of the hash algorithms and input/output formats that the FileVerifier++ GUI application supports, as well as simple recursive hashing with standard wildcards. FVC also has the ability to verify multiple hash files, even recursively.
The command line version is available starting with version v0.4.7.4812.
Older Screenshots:License Terms
GNU General Public Licence v2Download
OpenPGP compatible public key for validating signatures: Here
Other files including previous releases: Available on SourceForge.net .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
Revision history: Changes with v0.6.3.5830: * A situation where the program would crash upon recalculating or verifying a list where a significant number of files are skipped initially has been fixed. * A situation where the program will crash upon writing lists with entries with dates prior to 1/1/1970 has been fixed. Any dates prior to this will be set to 1/1/1970. This restriction will be lifted in future versions. * A workaround for a condition causing a brief delay in the program exit on certain systems has been applied. Changes with v0.6.2.5822: * None. Release v0.6.2.5821 was not compiled with optimizations. It should have been! Changes with v0.6.2.5821: * Added option that allows one to skip recalculating items that have file sizes and modification times that match what is currently present on disk. * Added option that specifies whether or not hash files should be verified automatically upon opening. * Improved performance of several algorithms, especially concerning the SHA-2 family of algorithms. Changes with v0.6.1.5643: * Fixed issue with file/directory column not displaying the correct text when an item only contains a filename. * Fixed an issue where the file information display was erroneously marking the entry's attributes as mismatching when no file attributes were set. Changes with v0.6.0.5600: * Two "virtual" columns have been added to the view, called File and Directory. These columns are not displayed by default, but may be enabled instead of the Path column to simulate the view provided by other programs. * The button that closes the message log and file information side panes has been replaced with one that actually has an "X". Changes with v0.5.8.5527: * Customization of displayed columns and the column order is now possible. * An issue where FV++ crashes when clicking in the tagging column in an empty buffer has been resolved. * A related issue where FV++ mistakenly counts clicks outside the actual range of items in the list view within the tagging column only as valid tagging requests has been resolved. * A memory leak associated with directory recursion has been fixed. This should have a major impact on memory usage after the application is done processing directories. * Some improvements have been made as to how listview selection is handled, which improves performance on very large data sets in terms of responsiveness. * WinFVC, an experimental frontend to FVC, has been added to the project. The front-end is used from the shell extension to implement a few new commands for verifying hash files and creating new ones. It is intended to supplement the shell extension with quicker verification of multiple files. WinFVC requires the Microsoft .NET framework 2.0. * FVC now supports combining recursive parameters with non-recursive ones in the same invocation. Instead of passing the -r option, one may prefix parameters with **\ or **/ to indicate that the parameter should be processed recursively. * The MD5SUM format reader will now allow lines that do not contain a '*' preceding the file name. These lines are not processed any differently, however, as FV++ always hashes in binary mode. Changes with v0.5.7.5491: * The configuration backend is no longer the Windows Registry, but is now a textual configuration file. The location of the configuration file is either <FVDIR>\fv.cfg or %APPDATA%\FileVerifier++\fv.cfg, where if a file named fv.cfg is found in the application directory, it is used, otherwise a User specific configuration file is created in %APPDATA%\FileVerifier++\fv.cfg. Portable installs should always include a fv.cfg file, even if it is blank, if one does not want to leave the configuration on the system in which the program is running. * MD5SUM (and related file formats) now support the extended format used by Slavasoft FSUM. This allows storing the algorithm name for a hash if that algorithm name is not associated with the file extension (storing SHA1 hashes in a file ending in .MD5). * An algorithm name compatibility configuration is now used when writing hash files. This is of significance when algorithm names are different between applications (such as RMD160 vs. RIPEMD160 vs. RIPEMD-160). While the program does not currently give any provisions for editing this configuration, it is stored in algmap.cfg in the program directory and can be edited if necessary. * Processing/checking/verifying progress dialogs now display information about actual byte counts, as well as time elapsed and estimated time remaining. Total percent complete is now based upon byte counts, as opposed to file counts. * Prior versions will not handle file sizes within FVA/FVB/CSV file formats that are greater than or equal to 4GiB. In the past, files larger than this could be processed, though if results were saved in a file, such results would not read back properly. This has been fixed. * Running the application on both files and directories at the same time from the shell extension (and by drag and drop) resulted in files not being processed. This has been fixed. Changes with v0.5.6.5404: * An issue in FVC where nonexistent files are provided on the command line are not reported as being nonexistent has been fixed. * A preliminary CHM help document has been added, and is displayable from the Help menu. Changes with v0.5.5.5381: * The ability to display hashes using different encoding methods other than hexadecimal has been added. This encoding information is embedded within the FVX (FVA/FVB) file format, however, the actual encoding used within the FVX format is still hexadecimal, to preserve compatibility with older versions of FV++. This may change later on. * Much work has been done to nearly eliminate all flicker in the application. This has been an issue for quite some time. This should work whether or not Windows XP visual styles are enabled. * The string dialog now is resizable and allows one to select an output encoding. It also supports multiline text (which will use CR-LF endings, naturally). * The file comment dialog now behaves properly with <Enter>, as previously, Ctrl-<Enter> needed to be used to enter multiline comments. * v0.5.2.5113 introduced a change that was supposed to display the date/time in the current locale, however, it was broken with the switch from STLPort to libstdc++. This is now fixed. * There is now support for BSD CKSUM formatted files. There is no need to explicitly state the format when opening a file from the shell, though when loading a file using the Load Results action, it will be necessary to select the correct format unless one uses the "Auto Detect (*.*)" selection in the load results dialog. * Several algorithms have had their names changed. For example, SHA-1 is now SHA1, SHA-256 is now SHA256, etc. This will not break existing FVA files though, as each hash module now specified a list of alias names. This has been done so that the program writes BSD CKSUM files with algorithm names that match the ones used in BSD CKSUM and related utilities. Changes with v0.5.2.5114: * No changes but a version increase and a rebuild with a different compiler, as v0.5.2.5113 tends to crash when terminating threads. Changes with v0.5.2.5113: * v0.5.1 did not display comments in the message log, unlike previous versions supporting the message log. This has been fixed. * When a parsing error occurs, the program no longer outputs the message relating to successful loading of the file. * When a parsing error occurs, there is now a limit on the number of errors that will be displayed (for now, it is 10). If any records could be salvaged, those ones will be loaded. * Parse errors in CSV files now correctly show the line number of the erroneous line. * Comments for FVA/FVB files are now displayed in the message log. * Modification times are now displayed with respect to the system locale. However, text written to FVA and CSV files will always be in the format MM-DD-YYYY HH:MM:SS in order to make files compatible between different locales. * MD5SUM file format now supports only two comment delimiters, ; and #. This change was made in order to prevent a case in which the entire file would be dumped to the message log. * Added support for user defined file comments. New options allow one to override the default comment with a user defined one, and allows one to be prompted for a comment each time a file is saved. * The binary distributions are now compiled with GCC 4.3.0 (previously, GCC 3.4.5). Also, the program is no longer dependent on STLport, due to using an updated libstdc++ compilation that has adequate support for wchar_t to the point where boost wregex will build with it. * FVC now supports the -d option, allowing one to specify a custom comment when creating hash files. * FVC now may build on non-windows operating systems. It has not been well tested on other operating systems such as Linux, but it appears to operate the way it should for the most part. Changes with v0.5.1.5014: * A bug was discovered with pattern matching in the Advanced Processing dialog. To make pattern matching simpler, the pattern is treated more like a Unix pattern, in that * and ? will match a period (.). The main implication is that * should be used in place of *.*, but most other patterns like *.exe should be the same between the two schemes. * When launching FV++ from the shell by opening a registered hash file, the file format type was not being correctly retained, which caused the save operation to save an existing file in the MD5SUMS format, irrespective of the already existing format. This has been corrected. * It is now possible to use the clipboard copy operation with the message log window. Previously, attempts to do so resulted in invoking the hash entry clipboard copy operation as opposed to copying the text from the text box. The Ctrl-C accelerator now also operates based on what control has the keyboard's focus. Paste and cut will always apply to the hash entry buffer though. Changes with v0.5.0.5002: * Message log is now based on the Rich Edit control that comes with Windows. This gives provisions for formatting based upon message severity. * Changed column ordering so that hash, hash algorithm, and status are right next to the file name. This makes it so that these items are always in view, as these are the items of most importance (especially when the other ones aren't present). * Added more file extensions to the load/save/import dialogs. These are based on the MD5SUM format, so it's not a major addition. * The aforementioned extensions are registered with the MSI installer now as well (plus the *.SHA* ones). Changes with v0.4.8.4943: * Added advanced processing operation. Currently, this allows one to add files to the buffer from multiple directories, with the option of adding only files that match a list of patterns or a regular expression. These advanced processing lists may be saved for reuse at a later time. * Added capability to load simple line feed delimited text files containing file names. This is useful for interoperability purposes, where one wishes to choose a set of files to hash via. external means. The *.LST/*.TXT formats are available in the Load, Save, and Import operations. Changes with v0.4.7.4812: * Added preliminary version of fvc (command line file hashing utility). * A small script called fvc-batch allows creation of hash files within each subdirectory. * Fixed a division-by-zero error that occurs when reading files less than 100 bytes in size (hash files, not files being hashed). Changes with v0.4.6.4742: * Added File Information sidebar. Changes with v0.4.5.4674: * Fixed issue with compatibility of comments in MD5SUM files created by other programs. Changes with v0.4.1.4517: * Added support for WHIRLPOOL and WHIRLPOOL-T (for backwards compatibility purposes) algorithms. * Added support for EDONKEY2K algorithm. Changes with v0.4.0.4488: * Progress dialogs for verification and calculation now display the number of files being processed, how many have been processed, as well as the percentage complete in numeric form. * Progress dialogs also show the percent complete in the title bar, allowing for one to monitor progress without having to have the window visible. * Fixed an issue that causes the program to crash when tagging entries by status. * Initial directories for load and save common dialogs are now set with reference to entries added to the buffer. It may be desireable to do some more work in this area, but this should be a big improvement over the old behavior (where this aspect was ignored completely). * When one cancels the Processing Files dialog, the user is prompted as to whether or not to save the partially obtained results, as opposed to simply discarding it. * In the previous release, the default algorithm behavior for SFV and MD5 files was lost. It has been restored again with this release. * There are now options that allow one to preserve the line ending modes and path seperator characters for existing files. This means that if one's program is configured to write Windows-style line endings, any file opened with Unix-style line endings will be rewritten with Unix-style line endings, provided that this option is selected. * About dialog has been revamped and contains more information about the build. * The previous build was accidentally compiled for athlon-xp processors (i.e. using the -march option). Changes with v0.3.1.4419: * Clipboard operations cut, copy, and paste are now available for tranfering entries from one instance of the program to another. * An import operation has been added, which allows one to add the contents of a file containing hashes to the current working buffer (as opposed to loading it exclusively). * Various other internal changes have been made. Changes with v0.3.0.4225: * An issue with the shell extension launching the application even when the handler does not actually add it's context menu items to a context menu has been fixed. Changes with v0.3.0.4213: * Options dialog has been redone. Colors for each item state are now configurable. * Most recently used list has been added. * Select All, Select None, and Invert Selection menu commands have been added as there are now operations that look at selections as opposed to tagging (for convenience). * Fixed some GDI object leaks. Changes with v0.2.1.3885: * Support for SFV file format. * Can automatically strip pathnames down to relative paths, being relative to the location of the checksum/hash result file. * Delayed calculation. Normally when files and directories are added to the buffer, their hashes are computed immediately. With delayed calculation, one can add files to the buffer, and compute their hashes in two distinct steps. This allows one to manipulate the list before actually calculating, allowing one to pick and choose exactly what files should be processed. * Internal support for Structured Exception Handling. Faulty hash modules should not crash the application (not that this was ever an issue, but something that I've been wanting to support). * Improved CSV file parser. * Various other miscellaneous modifications. Changes with v0.2.0.3656: * Files were being created with the read-only file system attribute. The behavior appeared to be somewhat random (at least it had the potential to be). This has been fixed. * The buffer that holds the main list view state information was not being marked as dirty when files were dropped from the shell or when FileVerifier was invoked using the shell extension. This also has been fixed. Changes wtih v0.2.0.3631: * Fixed a reported issue with file writing and UTF-8 encoding (files were not being completely written). Changes with v0.2.0.3621: * Removed duplicate entry for JamCRC in the CRC module. * Made several improvements to the Makefile (doesn't concern binaries). * Files aren't truncated when overwitten, causing corruption if a file is saved on top of another that is larger than the new data. Appeared in v0.2.0 when Unicode support was added. Changes with v0.2.0.3569: * Shell extension was not properly inserting menu items in the context menu, causing duplicate menu entries to appear. Fixed. * Shell extension was not handling cases where not enough menu identifiers were available. Menu now has an option to allow FileVerifier to prompt for an algorithm when resources are limited. Fixed. * Shell extension had a directory handle resource leak. Fixed. * Additional variants of CRC32 are now supported. Changes with v0.2.0.3533: * FileVerifier++ now comes with a shell extension. It can be manually installed and removed with the regsvr32 utility, in the form of "regsvr32 X:\path\to\fvdir\fvshell.dll" To remove it, use the /u switch of the regsvr32 utility. * The program is now packaged with an MSI installer. This is the recommended way of using FileVerifier++ if one wants to use the shell extension. Otherwise, one may download the version without the installer and use it as usual. Changes with v0.2.0.3367: * Fixed a few issues with XML file generation. * Fixed an issue with the file-information dialog not always displaying on double-click. This probably appeared with the addition of owner-draw buttons. * Made some performance adjustments. The hashing speed should be up to two times faster on large files. * All modification times are now stored in UTC, and are also currently displayed in UTC. This may change in the future. Changes with v0.2.0: * Added support for FVA (XML) and FVB (Compressed XML) formats. * Added support for Unicode. Currently in Unicode builds, all files are treated as being encoded in UTF-8, except in FVA and FVB formats, where the encoding supplied in the XML processing instruction is honored. The following encodings are supported in that case: * UTF-8 * UTF-16 * ISO-8859-1 * US-ASCII * Added option for registering and unregistering FVA and FVB file types with Windows Explorer. * Added support for Windows XP visual styles. * Some buttons in the application are now owner-draw, in order to support icon buttons. * Toolbar icons have been improved. * Fixed a bug where check boxes status was not initialized after clearing the file list, resulting in strange behavior after using the buffer after loading an existing file. * Disabled digital signature verification of hash modules. This was an experimental feature in the previous version, and has been removed as it is too difficult to maintain. A way to create custom builds with a user provided public key may appear in the future. * Changed the standard library in the build from libstdc++ to STLport, as such was required to have Boost support wide character regular expressions. * Command line parameter now accepts files of any type. File type is determined by extension. (i.e. *.FVA -> FVA file, *.FVB -> FVB, *.CSV -> CSV, Anything else is assumed to be a text file in md5sum(3) format). * Added context menu to main list view. Context menu actions act upon selected items, whereas main menu actions act on tagged items, or possibly all items. Changes with v0.1.99.2164: * Fixed a bug in the CRC module that appeared in v0.1.99.2163 Changes with v0.1.99.2163: * Fixed a bug with the initializing of the Microsoft Crypto API. Changes with v0.1.99.2161: * Added digital signature support for verifying the contents of the hash libraries themselves. Changes with v0.1.99.2142: * Added a feature that allows one to recalculate the entries that are present in the buffer. Changes with v0.1.99.2122: * Added support for the Windows clipboard (allows for copying and pasting hashes into other applications). Changes with v0.1.99.2097: * Initial public release.