Provided by: hashrat_1.10.4-1_amd64 bug

NAME

       hashrat - hashing tool supporting several hashes and recursivity

SYNOPSIS

       hashrat [options] [paths to hash]

       hashrat -c [options] [input file of hashes]

DESCRIPTION

       Hashrat  is  a  hash-generation  utility  that supports the md5, sha1, sha256, sha512, whirlpool, jh-224,
       jh256, jh-384 and jh-512 hash functions, and also the HMAC versions of those functions. It can output  in
       traditional format (same as md5sum and shasum and the like) or it's own format.

       Hashes can be output in octal, decimal, hexadecimal, uppercase hexadecimal or base64.

       Hashrat  also  supports  directory recursion, hashing entire devices, and generating a hash for an entire
       directory. It has a CGI mode that can be used as a web-page to lookup hashes.

OPTIONS

       -?, -help, --help
              Print this help.

       -version, --version
              Print program version.

       -type <type>
              Use hash algorithm <type>. Hash types can be chained as a comma-seperated list.

       -md5   Use md5 hash algorithm. This is the default hash.

       -sha1  Use sha1 hash algorithm.

       -sha256
              Use sha256 hash algorithm.

       -sha512
              Use sha512 hash algorithm.

       -whirl Use whirlpool hash algorithm.

       -whirlpool
              Use whirlpool hash algorithm.

       -jh224 Use jh-224 hash algorithm.

       -jh256 Use jh-256 hash algorithm.

       -jh384 Use jh-384 hash algorithm.

       -jh512 Use jh-512 hash algorithm.

       -hmac  HMAC using specified hash algorithm.

       -8     Encode with octal instead of hex.

       -10    Encode with decimal instead of hex.

       -H, -HEX
              Encode with UPPERCASE hexadecimal.

       -64, -base64
              Encode with base64.

       -i64, -i64
              Encode with base64, with rearranged characters.

       -p64, -p64
              Encode with base64 with a-z,A-Z and _-,  for  best  compatibility  with  'allowed  characters'  in
              websites.

       -x64, -x64
              Encode with XXencode style base64.

       -u64, -u64
              Encode with UUencode style base64.

       -g64, -g64
              Encode with GEDCOM style base64.

       -a85, -a85
              Encode with ASCII85.

       -z85, -z85
              Encode  with  ZEROMQ  variant  of ASCII85.  -t, -trad Output hashes in traditional md5sum, shaXsum
              format.

       -tag, --tag -bsd
              Output hashes in bsdsum format.

       -r     Recurse into directories when hashing files.

       -f <listfile>
              Hash files listed in <listfile>.

       -i <pattern>
              Only hash items matching a comma-seperated list of shell patterns. Please be aware  that  -i  does
              not yet work on directories, only files.

       -x <pattern>
              Exclude  items  matching  a  comma-seperated list of shell patterns. Works on both directories and
              files.

       -X <path>
              Exclude items listed in file <path>. Items in the file can be wildcards.

        -name  <pattern>
              Only hash items matching a comma-seperated  list  of  shell  patterns  (-name  as  in  the  'find'
              command).

        -mtime  <days>
              Only  hash items <days> old. Has the same format as the find command, e.g. -10 is younger than ten
              days, +10 is older than ten, and 10 is ten days old.

        -mmin  <mins>
              Only hash items <min> minutes old. Has the same format as the find command, e.g.  -10  is  younger
              than ten mins, +10 is older than ten, and 10 is ten mins old.

        -myear  <years>
              Only hash items <years> old. Has the same format as the find command, e.g. -10 is younger than ten
              years, +10 is older than ten, and 10 is ten years old.

       -exec  In CHECK or MATCH mode only examine executable files.

       -dups  Search for duplicate files.

       -n <length>
              Truncate hashes to <length> bytes.

       -c     CHECK hashes against list from file (or stdin).

       -cf    CHECK hashes but only show failures.

       -C <dir>
              CHECK files under dir recursively against a list from file (or stdin). This can detect 'new' files

       -Cf <dir>
              CHECK files under dir recursively against a list from file  (or  stdin).  This  can  detect  'new'
              files. Only show failures.

       -m     MATCH files from a list read from stdin.

       -lm    Read hashes from stdin, upload them to a memcached server (requires the -memcached option).

       -memcached <server>, -mcd <server>
              Specify  memcached  server.  This  option overrides reading list from stdin if used with -m, -c or
              -cf.

       -h <script>
              -hook <script> Script to run when a file fails CHECK mode, or is found in MATCH  mode.  Script  is
              passed  the  filename as an argument. In 'find duplicates' mode a second file name (the duplicate)
              will be passed as the second argument.

       -color Use ANSI color codes on output when checking hashes.

       -S, -strict
              Strict mode: when checking, check file mtime, owner, group, and inode as well as it's hash.

       -d     Dereference (follow) symlinks.

       -fs    Stay one filesystem.

       -dir   -dirmode DirMode: read all files in directory and create one hash for them (implies -r).

       -devmode
              DevMode: read from a file EVEN OF IT'S A DEVNODE.

       -lines Read lines from stdin and hash each line independently.

       -rl, -rawlines
              Read lines from stdin and hash each line independently, INCLUDING any trailing whitespace. This is
              compatible with 'echo text | md5sum'.

       -cgi   Run in HTTP CGI mode.

       -net   Treat  'file'  arguments as either ssh or http URLs, and pull files over the network and then hash
              them   (allows   hashing   of   files   on   remote   machines).    URLs   are   in   the   format
              ssh://[username]:[password]@[host]:[port] or http://[username]:[password]@[host]:[port].

       -idfile <path>
              Path to a ssh private key file to use to authenticate INSTEAD OF A PASSWORD when pulling files via
              ssh.

       -xattr Use eXtended file ATTRibutes. In hash mode, store hashes in the file  attributes.  In  check  mode
              compare against hashes stored in file attributes.

       -txattr
              Use  TRUSTED  eXtended file ATTRibutes. In hash mode, store hashes in trusted file attributes. The
              trusted attributes can only be read and  written  by  root.  Under  FreeBSD  this  means  'SYSTEM'
              attributes.

       -cache Use  hashes  stored  in  user  xattr if they're younger than the mtime of the file. This speeds up
              outputting hashes.

       -u <types>
              Update. In checking mode, update hashes for the files as you go. The <types> is a  comma-separated
              list  of  things  to  update,  which can be xattr memcached or a file name. This will update these
              targets with the hash that was found at the time of checking.

       -hide-input
              When reading data from stdin in linemode, set the terminal to not  echo  characters,  thus  hiding
              typed input.

       -xsel  Update  X11  clipboard  and primary selections to the current hash. This works using Xterm command
              sequences. The xterm resource 'allowWindowOps' must be set to 'true' for this to work.

       -star-input
              When reading data from stdin in linemode replace characters with stars.

NOTES

       Hashrat can also detect if it's being run under any of the following names (e.g., via symlinks):

       md5sum Run with '-trad -md5'.

       shasum Run with '-trad -sha1'.

       sha1sum
              Run with '-trad -sha1'.

       sha256sum
              Run with '-trad -sha256'.

       sha512sum
              Run with '-trad -sha512'.

       jh224sum
              Run with '-trad -jh224'.

       jh256sum
              Run with '-trad -jh256'.

       jh384sum
              Run with '-trad -jh384'.

       jh512sum
              Run with '-trad -jh512'.

       whirlpoolsum
              Run with '-trad -whirl'.

       hashrat.cgi
              Run in web-enabled 'cgi mode'.

EXAMPLES

       hashrat
              Generate a md5 hash of data read from stdin  (default hash type is md5).

       hashrat -jh256
              Generate a jh-256 hash of data read from stdin.

       hashrat -sha256 -64
              Generate a sha-256 hash of data read from stdin, output with base64 encoding.

       hashrat -sha256 -64 -lines
              Read lines from stdin, and generate a sha-256 with base64 encoding FOR EVERY LINE. This strips any
              whitespace from the end of the line (including \r and/or \n line terminators).

       hashrat -md5 -trad -rawlines
              Read  lines  from  stdin,  and  generate a md5 hash in traditional format for every line INCLUDING
              TRAILING WHITESPACE.  This is compatible with 'echo text | md5sum', where text  is  one  line,  as
              echo adds a newline to the end of the text it outputs.

       hashrat -type sha256,whirl,md5 -64
              Generate  a  sha-256  hash of data read from stdin, then hash the result with whirlpool, then with
              md5.

       hashrat *
              Generate a list of hashes for files in the current directory (default hash type is md5).

       hashrat -r -sha1 * > hashes.sha1
              Generate a list of hashes for files in the current directory, AND ALL SUBDIRECTORIES,  using  sha1
              hashing.

       cat hashes.sha1 > hashrat -c
              Check hashes listed in hashes.sha1.

       cat hashes.sha1 > hashrat -c -strict
              Check  hashes listed in hashes.sha1. If hashes are NOT in traditional format than the -strict flag
              will cause hashrat to check the files uid, gid, size, mtime and inode and print a failure  message
              if any of those don't match.

       cat hashes.sha1 > hashrat -cf
              Check hashes listed in hashes.sha1 but only output failures.

       cat APT1.md5 | hashrat -m -r /
              Read a list of hashes from stdin and search recursively for files matching them.

       cat APT1.md5 | hashrat -lm -memcached 127.0.0.1
              Read a list of hashes from stdin, and register them in a memcached server.

       hashrat -m -memcached 127.0.0.1 -r /
              Search recursively for files whose hashes are stored in a memcached server.

       hashrat -devmode -whirlpool -64 /dev/sda1
              Generate a whirlpool hash of the entire device /dev/sda1. Output result in base 64.

       hashrat -sha1 -net ssh:user:password@myhost/bin/*
              Generate sha1 hashes of files in /bin/* on the remote machine 'myhost'.

       hashrat -whirlpool -net http://myhost.com/webpage.html
              Generate  whirlpool hash for the listed URL. Note, many webpages have dynamic content that changes
              every time, so this will only return the same hash over and over if the page is static and doesn't
              change.

       hashrat -dups -r /home -u xattr
              Search for duplicate files under /home. Update hashes stored in filesystem attributes as you go.

USES FOR HASHRAT

       1)  Strong Passwords

       Hashrat  can be used to generate strong passwords for websites. So, you don't have to remember the strong
       password, if it be always regenerate with hashrat.  You need to remember a handful of  moderately  decent
       passwords, i.e., things that I can't find by grepping in the '10,000 most popular passwords' list[1], and
       an additional personal pin. Now, you need to combine the website name, one of passwords, and the personal
       pin, into a string and feed them into hashrat:

           $ echo "facebook.com password 1234" | hashrat -sha1 -64

       Obviously, a good password isn't 'password' and a good pin isn't '1234', but you get the idea. This gives
       a 28-character string that should take "8.02 trillion  centuries"  to  crack  with  a  "massive  cracking
       array",  according  to  Steve  Gibson's  Password  haystacks  utility[2].  This  is what I then use as my
       password. Unfortunately some websites won't take a 28-character password, and for these you can  truncate
       to the appropriate length (using the -n flag), but the results are still stronger than anything you could
       remember, and nothing needs storing on disk (as with password managers).

       There are some dangers to using the 'echo' method shown above if you are  on  a  shared  machine,  or  if
       someone  gets  hold of your computer/harddrive. On a shared machine someone could type 'ps ax' to see all
       commands running, and if they time it right, they might see your command-line with your password  in  it.
       Another  danger  lies in using a shell (like bash) that will record your typed commands so you can recall
       them later. Bash stores this information on disk in the file .bash_history, so  if  you  use  the  'echo'
       method shown above your password will be saved on disk. To combat this hashrat has line mode:

           $ hashrat -sha1 -64 -lines

       This  reads  lines from stdin, so type into hashrat and then press ENTER, and you'll be given the hash of
       the line you typed. By this method your password is neither visible in 'ps ax', nor  is  ever  stored  on
       disk.

       A  -lines will produce a different hash to the 'echo' method listed above, because it strips any trailing
       whiespace off the lines read. If you want strict compatibility  with  'echo'  (by  default  echo  adds  a
       newline to the end of the text to output) then use rawlines mode:

           $ hashrat -sha1 -64 -rawlines

       Finally,  you  can  prevent  shoulder-surfers  seeing  you type your password by using the -hide-input or
       -star-input options to hide what you type.

           [1] https://github.com/discourse/discourse/blob/master/lib/common_passwords/10k-common-passwords.txt

           [2] https://www.grc.com/haystack.htm

       2)  Watching for file changes

       Like md5sum/shasum etc, hashrat can be used to detect changes in  files  that  might  indicate  malicious
       activity.  For  instance, in order to get early warning of malware like cryptolocker (that encrypts files
       on a users disk, or on network shares, and then demands a ransom for file recovery) you can scatter about
       the  disk  a  number  of  Canary files that should not change. You need record their hashes and regularly
       check them. If they change, you will know something is going on.

       Hashes generated by hashrat can be output to a file, or stored in  extended  file  attributes,  or  in  a
       memcached server.

           $ hashrat -sha256 -r . > /tmp/files.sha256

           $ hashrat -sha256 -r . -xattr

           $ hashrat -sha256 -r . -memcached

       Similarly these can then be used to check files later:

           $ cat /tmp/files.sha256 | hashrat -c -sha256

           $ hashrat -C . -sha256  -xattr

           $ hashrat -C /tmp -sha256  -memcached

       Note  that -c checks only check the files in the supplied list. The -C flag instead checks all files in a
       directory (supplied on command line) and expects to find those in the list. This means that -C  can  find
       new files that aren't in the list, whereas -c can't.
       There  is  a slight difference between xattr/memcached checks and checks where a list is read from stdin.
       Currently when reading from stdin hashrat will ONLY check the files in the list. However, in  -xattr  and
       -memcached  mode,  it  will  check  all files, outputting and error for those where no stored hash can be
       found. This is likely to change in the a future release, with the stdin method being  brought  into  line
       with the others.

       3)  Finding files that match hashes

       Using  the  -m  flag  hashrat can be told to read a range of hashes from stdin, and then search for files
       matching those hashes. For Example:

           $ cat APT1-AppendixE-MD5s.txt | hashrat -r -m /usr

       The  last  command  will  search  recursively  under  /usr  for  files  with  hashes  matching  those  in
       APT1-AppendixE-MD5s.txt.  The input on stdin must begin with a hash, anything written after the hash will
       be treated as a comment to be displayed if a file matching the hash is found.

       Hashtypes other than md5 can be used thusly:

           $ cat sha1-list.lst | hashrat -r -sha1 -m /usr

       Hashes can also be loaded into a memcached server, so that the same file list can be checked on a  number
       of machines, without needing to store the hashlist on those machines. First you need load the hashes:

           $ cat APT1-AppendixE-MD5s.txt | hashrat -lm -memcached 192.168.1.5

       The  last  line  loads  the  hashes to a memcached server at 192.168.1.5. You can then search against the
       memcached server by:

           $ hashrat -r -m -memcached 192.168.1.5 /usr

       4)  Find duplicate files

       Using the -dups flag (usually in combination with the -r recursive flag) hashrat can be set to search for
       duplicate files and output any found to stdout.

HOOKSCRIPTS

         Hookscripts,  defined  using  the  -h  or -hook command-line options, are scripts that are run for each
       hashed item. -h and -hook options take an argument that is the path to  the  script.  Hookscripts  behave
       differently in different modes:

       Check Hashes mode.
              The  hookscript  is  called  if  a  file doesn't match it's expected hash, or is not listed in the
              expected hashes. It is passed the path of the file.

       Locate files mode
              The hookscript is called if a file matches the hash to locate. It is passed the path of the file.

       Find duplicates mode
              The hookscript is called if a file is a duplicate of another file. It is passed the paths of  both
              files.

CGI Mode

       If  hashrat  is run with the -cgi flag, or if it's run with a name of hashrat.cgi (either by renaming the
       hashrat executable, or via a symbolic link) it will output a webpage that allows users to look up  hashes
       over  the  web. This allows one to look-up your strong passwords even if you don't have access to a local
       version of hashrat.

       CGI Mode can be configured using an options file. The file path is passed in the url, like this:
       hashrat.cgi?OptionsFile=/etc/hashrat.options

       If an options file is used, then CGI mode uses the options in the file as its defaults. The options  file
       contains the following :

       HashType <type>      Type of hash to generate

       Encoding <type>      Type of encoding to use for outputted hash

       Line  Ending  <type>    Line  ending to append to input text. This is for compatibility with command-line
       usage with "-rawlines". Options are "none", "lf", "crlf" or "cr", meaning "none",  "newline",  "carriage-
       return newline" and "carriage-return" respectively.

       OutputLength <len>   Crop output hash to length len "len"

       SegmentLength <len>  Break output up into segments of length "len"

       SegmentChar <char>   Separate output segments with character "char"

       NoOptions            Do not offer the user the options so they can change them. Just show an entry box to
       enter text.

       HideText             Hide inputted text (overrides any other config)

       ShowText             Show inputted text (overrides any other config)

       Example:
              HashType=sha256
              Encoding=base64
              LineEnding=none
              OutputLength=12
              SegmentLength=4
              SegmentChar=+
              NoOptions=Y

EXTENDED FILESYSTEM ATTRIBUTES

       Hashrat can use extended filesystem attributes where these are supported. This allows a hash to be stored
       in  the filesystem metadata of the target file. This can then be used for checking hashes, or for caching
       hashes to produce faster output during hashing runs. There are two types of filesystem attribute, trusted
       attributes, which can only be set and read by root, and user attributes, which can be set and read by any
       user that has the appropriate permissions for the file.

       Hashes can be stored against files by using the -xattr option to set user attributes:

           $ hashrat -sha256 -r . -xattr

       And using the -txattr flag to set trusted attributes (you must be root to set trusted attributes):

           # hashrat -sha256 -r . -txattr

       When checking either flag can be used, but hashrat will always use trusted  attributes  when  running  as
       root, if those are available, otherwise it will fall back to user attributes.

           $ hashrat -c -sha256 -r . -xattr

       The  -cache  option  allows using stored hashes rather than regenerating hashes. It only considers hashes
       stored in user attributes at current.

           $ hashrat -r . -cache

       This makes getting a report of hashes considerably faster, but it runs the risk that the hashes  may  not
       be accurate. Hashrat will only output a hash stored in file attributes if the storage time of the hash is
       younger than the modify time (mtime) of the file, however, this means an attacker could change the modify
       time of the file to hide changes they've made. Thus this feature should not be used for security checking
       purposes (but should be safe for uses like finding files that have changed and need to be backed up,  for
       instance).

AUTHOR

       The hashrat was written by Colum Paget <colums.projects@gmail.com>.

       This  manual  page  was  written by Joao Eriberto Mota Filho <eriberto@debian.org> for the Debian project
       (but may be used by others).