Location: ProgrammingUnlimited.Net :: Software :: FileVerifier++
.

What is it?
.

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.

System Requirements
.

In brief, FileVerifier++ should run without problems on the following operating systems.

• Windows 2000 IA32
• Windows XP Home/Professional IA32
• Windows Server 2003 IA32
• Windows Vista (all versions)
• Windows 7 (all versions)

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:

• CRC16
• CRC32
• BZIP2 CRC
• MPEG2 CRC
• JamCRC
• Posix CRC
• MD4
• MD5
• EDONKEY2K
• RIPEMD-128
• RIPEMD-160
• RIPEMD-256
• RIPEMD-320
• SHA-1
• SHA-224
• SHA-256
• SHA-384
• SHA-512
• WHIRLPOOL
• WHIRLPOOL-T
Current Features
.
• Can load and save results to and from various formats.
• Hash algorithms can be added through the DLL interface.
• Hash verification. Can load hash results and compare to what is actually on your disk.
• Color coding of validity states
• Verification considers file size, file attributes, and modification date to be significant.
• Drag and drop support.
• Recursive directory processing.
• Recursive processing using patterns.
• Calculates hashes on strings.
• Search and grep using regular expressions.
• Selective verification.
• Unicode support (recognizes Unicode file names and writes results encoded in UTF-8 (without BOM))
• Supports Windows XP Visual Styles
• Shell Integration (Shell extension).
• Can be installed using installer or without.
• Command line version. (in beta)
FileVerifier++ Shell Extension
.

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.)

Command Line Version
.

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.

Some Features To Come (Hopefully)
.
• The ability to verify multiple hash files in the GUI version.
• More hash algorithms included.
• Various other options.
Screenshots
.

New Screenshots:

Older Screenshots:

.

GNU General Public Licence v2

.

Current Stable Version (v0.6.3.5830): [MSI] [ZIP] [source ZIP] [MD5] [SHA1] [FVA] [SIG]

Current Testing Version (v0.6.5.6000): [x86_64 MSI] [x86_64 ZIP] [source ZIP] [MD5] [SHA1] [FVA] [SIG]

OpenPGP compatible public key for validating signatures: Here

Other files including previous releases: Available on SourceForge.net .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....

Project Hosting By:

ChangeLog
.
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

Changes with v0.5.5.5381:
* The ability to display hashes using different encoding methods other
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
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
* 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).
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:
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.
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:

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
* 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.
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
* 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

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
* 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
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
* 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).
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.

...... ...... ...... ...... ...... ...... ...... ...... ....... ....... ...... ...... ....... ....... ...... ...... ...... ...... ...... ...... ...... ...... ....... ....... ...... ...... ....... ....... ...... ...... ...... ...... ...... ...... ...... ...... ....... ....... ...... ...... ....... .......