/********************************************************************
Name: Hash Monster
Description: A simple gui to generate and compare hashes
Author: kavulix
Copyright (C) 2011 kavulix
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
********************************************************************/
CONTRIBUTORS
Andrey Panin, Solar Designer - md4 source
Colin Plumb, Ian Jackson - md5 source
Aaron Gifford - sha2 source
Eino Mäkitalo - sha2 patch for QCryptographicHash
Thomas Pornin - hsum source
mattahan - icons - http://mattahan.deviantart.com
Ivan Caputo - icons - http://www.kapcom.net
REQUIREMENTS
You must have qt version 4.7 or higher installed in order to run
the Hash Monster application. Additionally, this application relies
upon a number of different 3rd party libraries in order to provide
support for as many algorithms as possible including the qca library
and qca-ossl plugin, mhash, rhash and sph libraries. If you do not
wish to install any of those libraries you may optionally disable
them by following the instructions in the section below labeled
"COMPILING WITHOUT 3RD PARTY LIBRARIES".
Depends: libc6, libstdc++6, libgcc1, libfontconfig1, libaudio2,
libglib2.0-0, libpng12-0, zlib1g, libfreetype6, libsm6,
libice6, libxrender1, libxext6, libx11-6, libexpat1,
libxt6, libxau6, libpcre3, libuuid1, libxcb1, libxdmcp6,
libqtgui4, libqtcore4, libqt4-dbus, libqt4-xml, libqca2,
libqca2-plugin-ossl, libmhash2, libsph, librhash
SUPPORTED PLATFORMS
Hash Monster is officially supported on Linux and Windows 7. It may
compile and run successfully on other platforms but I have not
personally tested the application on other platforms.
SUPPORTED ALGORITHMS
qt supports the following:
md4, md5, sha1, sha224, sha256, sha384, sha512
qca supports the following:
md2, md4, md5, ripemd160, sha0, sha1, sha224, sha256, sha384, sha512,
whirlpool*
mhash supports the following:
adler32, crc32*, crc32b, gost*, haval128, haval160, haval192, haval224,
haval256, md2, md4, md5, ripemd128, ripemd160, ripemd256, ripemd320,
sha1, sha224, sha256, sha384, sha512, snefru128, snefru256, tiger128,
tiger160, tiger192, whirlpool
sph supports the following:
blake224, blake256, blake384, blake512, bmw224, bmw256, bmw384, bmw512,
cubehash224, cubehash256, cubehash384, cubehash512, echo224, echo256,
echo384, echo512, fugue224, fugue256, fugue384, fugue512, groestl224,
groestl256, groestl384, groestl512, hamsi224, hamsi256, hamsi384,
hamsi512, haval128_3, haval128_4, haval128_5, haval160_3, haval160_4,
haval160_5, haval192_3, haval192_4, haval192_5, haval224_3, haval224_4,
haval224_5, haval256_3, haval256_4, haval256_5, jh224, jh256, jh384,
jh512, keccak224, keccak256, keccak384, keccak512, luffa224, luffa256,
luffa384, luffa512, md2, md4, md5, panama, radiogatun32, radiogatun64,
ripemd, ripemd128, ripemd160, sha0, sha1, sha224, sha256, sha384, sha512,
shabal224, shabal256, shabal384, shabal512, shavite224, shavite256,
shavite384, shavite512, simd224, simd256, simd384, simd512, skein224,
skein256, skein384, skein512, tiger, tiger2, whirlpool, whirlpool0,
whirlpool1
rhash supports the following:
aich, btih*, crc32, ed2k, edonr256, edonr512, gost, gost_cryptopro,
has160, md4, md5, ripemd160, sha1, sha224, sha256, sha384, sha512,
snefru128, snefru256, tiger, tth, whirlpool
* not currently implemented
COMPILING LIBSPH
sudo apt-get install tar unzip wget build-essential
wget -O ~/Desktop/sphlib-2.1.zip http://www.saphir2.com/sphlib/files/sphlib-2.1.zip
wget -O ~/Desktop/sphpro.tar.gz http://downloads.sourceforge.net/project/hashmonster/sphpro.tar.gz
unzip ~/Desktop/sphlib-2.1.zip -d ~/Desktop
tar -xzf ~/Desktop/sphpro.tar.gz -C ~/Desktop/sphlib-2.1/c
cd ~/Desktop/sphlib-2.1/c
rm Make*
qmake sph.pro
make release
sudo cp -P lib* /usr/lib
sudo cp *.h /usr/include
NOTE: The steps listed above will install both the binary and
development files for libsph.
COMPILING LIBRHASH
sudo apt-get install tar wget build-essential
wget -O ~/Desktop/rhash-1.2.5-src.tar.gz http://downloads.sourceforge.net/project/rhash/rhash/1.2.5/rhash-1.2.5-src.tar.gz
wget -O ~/Desktop/rhashpro.tar.gz http://downloads.sourceforge.net/project/hashmonster/rhashpro.tar.gz
tar -xzf ~/Desktop/rhash-1.2.5-src.tar.gz -C ~/Desktop
tar -xzf ~/Desktop/rhashpro.tar.gz -C ~/Desktop/rhash-1.2.5/librhash
cd ~/Desktop/rhash-1.2.5/librhash
rm Make*
qmake rhash.pro
make release
sudo cp -P lib* /usr/lib
sudo mkdir -p /usr/include/rhash
sudo cp *.h /usr/include/rhash
NOTE: The steps listed above will install both the binary and
development files for librhash.
RUNNING HASH MONSTER ON UBUNTU
Compile and install libsph (instructions above).
Compile and install librhash (instructions above).
sudo apt-get install libqtcore4 libqtgui4 libqt4-xml libqt4-dbus \
libqca2 libqca2-plugin-ossl libmhash2
./hashmonster
COMPILING HASH MONSTER ON UBUNTU
Compile and install libsph (instructions above).
Compile and install librhash (instructions above).
sudo apt-get install build-essential libqt4-dev libqca2-dev \
libmhash-dev
sudo apt-get install libqtcore4 libqtgui4 libqt4-xml libqt4-dbus \
libqca2 libqca2-plugin-ossl libmhash2
qmake hashmonster.pro
make release
./hashmonster
NOTE: If you encounter any problems compiling with "make release"
or if the application crashes when attempting to access the
3rd party libraries you might try "make debug" which should
resolve the problem.
COMPILING WITHOUT 3RD PARTY LIBRARIES
If you are having problems compiling some of the libraries
required by Hash Monster then you can disable them with
the qmake command. For each library that you want to disable
simply add DISABLE[name of library] to the DEFINES variable.
For example, to disable a single library enter the following.
qmake -recursive DEFINES+=DISABLEQCA hashmonster.pro
To disable all libraries enter the following.
qmake -recursive DEFINES+="DISABLEMHASH DISABLESPH DISABLEQCA \
DISABLERHASH" hashmonster.pro
NOTE: The default qt library cannot be disabled.
TEXT VS BINARY HASHES
This application operates in a binary mode when generating
hashes. Some applications like sha1sum provide a text option
to use when generating the hash. The output of sha1sum lists
the hash followed by a space, followed by an asterisk (if in
binary mode) and then followed by the file path and file name.
Hash Monster does not attempt to determine whether hashes were
generated in a text or binary mode when loading an external
file for comparisons. Therefore, if you do use sha1sum or a
similar program to generate checksums make sure to specify the
binary option. In md5sum and sha1sum this can be accomplished
with the -b switch.
Example: sha1sum -b * > SHA1SUMS
HOW TO VERIFY HASHES
Click the batch tab, select a SUMS file (e.g., SHA1SUMS) to use for
the comparisons, then add all of the file paths to the table that
you want to hash and compare. File paths can be added to the table
by either clicking the "select files" button at the bottom left
corner of the table or by dragging and dropping files onto the table
from your desktop or from a file manager window like nautilus. Once
you have selected a SUMS file and added the desired files to the
table click the magnifying glass button to begin the comparisons.
NOTE ON BATCH SAVE AND COMPARE
In the current version file paths are discarded when saving hashes
and comparing hashes. The application focuses solely on file names.
This means that when you load a file containing hashes for
comparisons the application will strip the path from the file name
and then search the table on the batch tab for that file name
regardless of where it is located. For example, if the SUMS file
contains a line like the following:
24781d4debf293bb3eea1f2e8e2d40c0 */usr/bin/gedit
Hash Monster will automatically strip the path from the file name
which leaves "gedit." It will then search the table for any paths
containing the file name gedit and compare the two hashes.
/usr/bin/gedit
would be compared to:
/home/user/Desktop/gedit
If you add multiple files with the same name but different paths to
the table it will most likely cause the comparison to fail for all
but one of those files since the paths are ignored.
WHY DOES THE STRING HASH DIFFER FROM THE FILE HASH?
If you generate a hash for a text file and then attempt to generate
a hash for the contents of the text file on the String tab you may
notice that the hashes differ. In those instances try pressing enter
in the text box to add a new line at the end of the string and then
re-generate the hash. The file hash and string hash should then match
after adding the new line.
SELF TEST FUNCTION
If you think that one of the libraries is reporting an incorrect hash
or if there is a conflict between libraries then you might want to
test each of the hash functions from each library and compare the
results to a set a of known hashes. This can be accomplished by
passing the -etb parameter to Hash Monster from the command line.
hashmonster -etb
That will enable a test button at the bottom right of the Hash Monster
window. Click the button to begin testing each hash function. A default
test file is included but you can create your own test file to use with
this feature. Each time you click the test button you will be prompted
to select the location of the test file enabling you to specify a
custom test file. See the tests/default.xml for an example of how your
test file should be formatted. You can use the optional repeat attribute
in the xml test element which will force the string to be repeated a
specific number of times prior to hashing it. For example, string="test"
repeat="2" means hash the string "testtest". This enables you to test
large character sequences without having to embed the full string in the
xml file.
USING SYSTEM THEME
If you prefer that the Hash Monster window inherit your system's default
theme rather than the custom Hash Monster theme you can pass the -ust
parameter to Hash Monster from the command line. Please note that this
will not affect the the popup library/algorithm window. It will continue
to use a custom theme.
hashmonster -ust
DONATIONS
https://flattr.com/thing/383538/Hash-Monster
BUG REPORTS
http://sourceforge.net/tracker/?group_id=543105&atid=2204934
REQUEST NEW FEATURES
http://sourceforge.net/tracker/?group_id=543105&atid=2204937
NOTE ON INCLUDED CRYPTOGRAPHIC FUNCTIONS
This application does make use of open source digest algorithms but
they are not subject to the Export Administration Regulations.
http://www.apache.org/dev/crypto.html#faq