Provided by: hashrat_1.20-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  and  various
       types of base32 and 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.

       -totp <secret>
              TOTP code from supplied secret (defaults to google authenticator compatible code).

       -totp <url>
              TOTP  code  from supplied otpauth url, the url is distinguished from a secret using
              the leading 'oftpauth:' component.

       -digits <n>
              Produce TOTP code with <n> digits.

       -period <n>
              Produce TOTP code with period/lifetime of <n> seconds.

       -8     Encode with octal instead of hex.

       -10    Encode with decimal instead of hex.

       -H, -HEX
              Encode with UPPERCASE hexadecimal.

       -32, -base32
              encode with base32.

       -c32   encode with Crockfords base32.

       -w32   encode with word-safe base32.

       -z32   encode with zbase32.

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

       -hid   Show hidden (starting with .) files

       -hidden
              Show hidden (starting with .) 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.

       -xdialog
              Run in 'xdialog' (zenity, yad or qarama) mode.

       -dialog-types
              Specify a list of dialog commands and use the first found on the system. Default is
              'yad,zenity,qarma'.

       -iprefix <prefix>
              String to prefix all input before hashing

       -oprefix <prefix>
              Prefix to add to the front of output hashes

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

       5)  As an 'ls'

       Hashrat outputs a file's name, type, mode, mtime, uid, gid and size, along  with  a  hash.
       This allows it to be used as a kind of 'ls' by ftp style programs, listing all the details
       of a file, but with the added feature of a hash.

       6)  Hashing files on remote machines

       If run with the '-net' option,  hashrat  will  treat  paths  starting  with  'http://'  or
       'ssh://'  differently,  connecting to the target machine and pulling files off it (hashrat
       assumes there is no hashing program on the remote machine,  and  that  it  must  therefore
       download the files to hash them). For ssh paths wildcars are supported:

                 hashrat -net ssh://username:password@server/usr/bin/*

       7)  As a TOTP authenticator

       Hashrat  can  be  used  as  a  TOTP  authenticator,  and  defaults to google-authenticator
       compatible codes.

                 hashrat -totp 3EK4LIB2553CUPA7DBXJMMKDCYTEA2IZA

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

TOTP MODE

       Hashrat can be used as a TOTP (Time-based One Time Password) authenticator and defaults to
       google-authenticator compatible codes. The simplest use case is:

       hashrat -totp <secret>

       It's possible to change the hash, period/lifetime and number of digits in  the  TOTP  code
       like so:

       hashrat -totp 3EK4LIB2553CUPA7DB -sha256 -period 90 -digits 8

CLIPBOARD OUTPUT

       Hashes  produced  in  standard-in  input  mode  and TOTP codes can be pushed to the system
       clipboard using the `-clip` option. This option first tries to find a command that can set
       the  clipboard,  searching for one of 'xsel', 'xclip' or 'pbcopy'. If it can't find any of
       these, it falls back to using xterm's built in clipboard setting method.

       Alternatively the `-xsel` option only attempts to use the xterm clipboard setting method.

       The default list of clipboard commands can be overridden using the `-clipcmd` option.

QRCODE OUTPUT

       Hashes produced in standard-in input mode and TOTP codes can be displayed as qrcodes using
       the  `-qr`  or  `-qrcode`  options.  These  options  require  the "qrencode" utility to be
       installed, and also an image viewer that can be used to display the qrcode image.

       By default hashrat searches for the following image viewers:

       imlib2_view,fim,feh,display,xv,phototonic,qimageviewer,pix,sxiv,qimgv,qview,nomacs,geeqie,ristretto,mirage,fotowall,links -g

       The default list of image viewers can be overridden using the `-viewcmd` option.

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