Integrity Checker

By Sarah Dean
Last updated: 30th April 2006


Contents


Description

Integrity Checker is a straightforward application that checks the integrity of your files to ensure they have not been tampered with.

The files you select for protection will have their "known good" size stored together with either a hash or HMAC (user selectable) generated from the contents of each file. By comparing this information with what is actually stored on your drives later, any changes will be flagged up for your attention.

Screenshots of Integrity Checker are available.

Please email any bug reports, feature requests, comments, etc to me at sdean12@sdean12.org

The latest version (as of 30th April 2006) is v2.0

The latest version is always available at: http://www.SDean12.org/IntegrityChecker.htm


Download

Download latest stable Integrity Checker executables

Download source code for the above stable version (see also SDeanComponents to download the OTFE, etc components required to compile this software)

Hashes and PGP signatures of the Integrity Checker software, as downloaded, are available here

A beta version of the development version of Integrity Checker can also be downloaded. Note: This link may not work. If it doesn't, and you can download the stable version, a beta version of the next version has not yet been released. The beta version is unsupported, but please feel free to email me if you have any comments on it.


Notes


Command Line Summary

Integrity Checker supports the following command line parameters:

-load <filename> Automatically load list contained in <filename> at startup
Note: If the path or filename specified has spaces in it, don't forget to surround <filename> with double quotes!
-hmac <key>
A key to be used for HMAC operations. If this is not specified, and one is needed, the user will be prompted for it.
-check
Check files in loaded list (requires "-load" to be present)
-silent Do not show main dialog, but do show integrity check report when complete
-verysilent Do not show main dialog, or any other dialogs unless something goes wrong (e.g. integrity check fails one or more files)
-quit Quit after carrying out command line instructions (i.e. load, check)
Note: If "-silent" or "-verysilent" is specified, "-quit" is implicit


.ic File Format

".ic" files are straight text files with the following layout:
Version=<file version ID>
Hash=<hash used>
FileCount=<count of files in list>
KeyCheckRandom=<random data>
KeyCheckHMAC=<random data HMAC'd with the user's key>
<blank line>
Filename=<first filename>
FileSize=<first file's size>
FileHash=<first file's hash>
<blank line>
...Repeat the last 4 files for each file in list

Note: <file version ID> identifies the version ID of the file format used - NOT the version of the application creating the file. At present valid <file version ID> values are: 1.00 and 2.00

v2.00 always includes KeyCheckRandom and KeyCheckHMAC. v1.00 always omits these.

KeyCheckRandom is simply a string of random letters, characters, etc while KeyCheckHMAC is KeyCheckRandom HMAC'd with the same user key as used to HMAC the files listed. These two are used in order to check that the user enters the correct HMAC key. If the user is not HMACing their files (just using straightforward hashes), the values of these entries are to be set to empty strings.


TODO List

  1. Sort out my PGP installation so that I can specify a PGP signature that can be used to check the authenticity of the packages.
  2. The source code could do with a little tidying up...
  3. Add support for drag'n'drop "ic" files onto the application (drag 'n' drop for ".ic" files to load them, or files & directories to add them to the current list?)
  4. Add support for stuff like ".md5" files - the file checked is the same filename as the .md5 file, less the .md5 extension. (Note to self: md5 file may have other stuff in it, like the filename of the file to be checked, or multiple files/hashes)
  5. Filter the list of files to show only deleted/failed/whatever files? (This is a low priority as it would probably involve more work that it's worth - and you can always view this information by selecting "View|Report..." after carrying out an operation)
  6. etc, etc...

Known Bugs

Bugs with v2.0:

Appendix A: Version History


Appendix B: PGP Public Key

To send PGP encrypted email to me, please feel free to use the following PGP public key block:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGP 8.1 - not licensed for commercial use: www.pgp.com

mQGiBDekay4RBADuX/QEq7W9POZ3V5xIGj4lpO4+LB+LhY2+ZMi0/jMtsMQg6niJ
ctPBjyKCmm0LwleojZyLo7ArJ1Bkw4dswYbaULEDC+nB4KEwOsJzfdceJ8jI063g
KFZylqpuhAdEKr0am1UScp91O9HndO/TvW+Tz26MGdpHZMSR6ppAISyhSQCg/+eD
Me3ocRdWgJRK3QFPqJ8sZ4sD/jOzuQoWEjcCS+9RCW3ciCbBdsdpeZ+JTSwwiurj
tQ+vOZVmDxx+rBuN2f20BqeXGA1ySaZBkO3FTEcctxN37v7lh7LVa2Has+RZyNL1
P35sTUgJW0/v6ZcevG4pTMhWjQWPQsUGKHVIvHekEDTy+aeYb3kUvZBWJVnQXgJC
3oc/A/9OzHJMDyyezEDdElqAggilPatwIM61WdtX6r0fWF+JG0KrrNCD3PS6FR3O
EVryJdhgqUnmgjUYap50w2IeAgcRronaI8rxaQJHpp2v213Tt8b2Bs/FkZ77AAzI
xLgvQUQkhL8GNf3gtEO8ATJXVB6yswTWgmOFzCHSMH4zYJziprQgU2FyYWggRGVh
biA8c2RlYW4xMkBzZGVhbjEyLm9yZz6JAEsEEBECAAsFAkPGE8oECwMCAQAKCRAt
2N+++s56l4HlAKC32vR75faqWiy9+pcaDkcsiWoy1wCdFl5khqK1wDDnscmFEeWM
7jPhxoe5Ag0EN6RrLhAIAPZCV7cIfwgXcqK61qlC8wXo+VMROU+28W65Szgg2gGn
VqMU6Y9AVfPQB8bLQ6mUrfdMZIZJ+AyDvWXpF9Sh01D49Vlf3HZSTz09jdvOmeFX
klnN/biudE/F/Ha8g8VHMGHOfMlm/xX5u/2RXscBqtNbno2gpXI61Brwv0YAWCvl
9Ij9WE5J280gtJ3kkQc2azNsOA1FHQ98iLMcfFstjvbzySPAQ/ClWxiNjrtVjLhd
ONM0/XwXV0OjHRhs3jMhLLUq/zzhsSlAGBGNfISnCnLWhsQDGcgHKXrKlQzZlp+r
0ApQmwJG0wg9ZqRdQZ+cfL2JSyIZJrqrol7DVekyCzsAAgIH/2eFQW6w68YNeovi
EvJt1i41orLsBIvbR8M3ql6ly75zdIScRCREtORSb2JNRXkfiqc7Fca6gnmqUBNU
woo4NJAjyEz7ADyUxcA+uAU57anyqZeXUhQUZ5s/wEU77nYBFx0fNh+SlsNF4yL8
z5vJQvwUGJLvLZs1Ap1RSGxYMWJk0kdBu2j5wS0el6FrpqoXzrJZpPUpiegUPOqY
hg54Q0ddn9ksGO4LJUClhIjX/y54Pu9cWrcO+mKJ2kSZOM6zCXqErIek3J4xYy/W
CxJHtXjLEg5y2XMam45qKC6CmKcFwJJiVufWSWSCqqVYG30f9g1w44AYmn/VCIXx
t6ygcr6JAEYEGBECAAYFAjekay4ACgkQLdjfvvrOepdPnACg1HGvpsdlEQkb8VZc
rWbmoZyMLoYAoPBjVMIiYkdWD2t0cKaR/de8Rjct
=Hejr
-----END PGP PUBLIC KEY BLOCK-----

Email me at: sdean12@sdean12.org

Return to the main page page