#!/usr/bin/env python3
import argparse
import sys
import os
try:
from . import hashwrapper # @UnusedImport
except SystemError:
import hashwrapper # @UnresolvedImport @Reimport
try:
from . import bbconstants # @UnusedImport
except SystemError:
import bbconstants # @UnresolvedImport @Reimport
try:
from . import utilities # @UnusedImport
except SystemError:
import utilities # @UnresolvedImport @Reimport
[docs]def main():
"""
Parse arguments from argparse/questionnaire.
Invoke :func:`bbarchivist.hashwrapper.verifier` with those arguments.
"""
if len(sys.argv) > 1:
parser = argparse.ArgumentParser(
prog="bb-filehasher",
description="""Applies hash functions to files.
Default: SHA-1, SHA-256, MD5""",
epilog="http://github.com/thurask/bbarchivist")
parser.add_argument(
"-v",
"--version",
action="version",
version="%(prog)s " +
bbconstants._version)
parser.add_argument(
"folder",
help="Working directory, default is local",
nargs="?",
default=os.getcwd())
parser.add_argument(
"-b",
"--block",
dest="blocksize",
help="Blocksize (bytes), default = 16777216 (16MB)",
default=16777216,
type=utilities.positive_integer,
metavar="INT")
hashgroup = parser.add_argument_group(
"verifiers",
"Verification methods")
hashgroup.add_argument(
"--crc32",
dest="crc32",
help="Enable CRC32 verification",
action="store_true",
default=False)
hashgroup.add_argument(
"--adler32",
dest="adler32",
help="Enable Adler-32 verification",
action="store_true",
default=False)
hashgroup.add_argument(
"--md4",
dest="md4",
help="Enable MD4 verification",
action="store_true",
default=False)
hashgroup.add_argument(
"--sha224",
dest="sha224",
help="Enable SHA-224 verification",
action="store_true",
default=False)
hashgroup.add_argument(
"--sha384",
dest="sha384",
help="Enable SHA-384 verification",
action="store_true",
default=False)
hashgroup.add_argument(
"--sha512",
dest="sha512",
help="Enable SHA-512 verification",
action="store_true",
default=False)
hashgroup.add_argument(
"--ripemd160",
dest="ripemd160",
help="Enable RIPEMD-160 verification",
action="store_true",
default=False)
hashgroup.add_argument(
"--whirlpool",
dest="whirlpool",
help="Enable Whirlpool verification",
action="store_true",
default=False)
hashgroup.add_argument(
"--no-sha1",
dest="sha1",
help="Disable SHA-1 verification",
action="store_false",
default=True)
hashgroup.add_argument(
"--no-sha256",
dest="sha256",
help="Disable SHA-256 verification",
action="store_false",
default=True)
hashgroup.add_argument(
"--no-md5",
dest="md5",
help="Disable MD5 verification",
action="store_false",
default=True)
hashgroup.add_argument(
"-a",
"--all",
dest="all",
help="Use all methods",
action="store_true",
default=False)
parser.set_defaults()
args = parser.parse_args(sys.argv[1:])
if args.all is True:
args.adler32 = True
args.crc32 = True
args.sha1 = True
args.sha224 = True
args.sha256 = True
args.sha384 = True
args.sha512 = True
args.md5 = True
args.md4 = True
args.ripemd160 = True
args.whirlpool = True
hashwrapper.verifier(args.folder,
args.blocksize,
args.crc32,
args.adler32,
args.sha1,
args.sha224,
args.sha256,
args.sha384,
args.sha512,
args.md5,
args.md4,
args.ripemd160,
args.whirlpool)
else:
folder = os.getcwd()
blocksize = 16777216
crc32 = utilities.str2bool(input("CRC32?: "))
adler32 = utilities.str2bool(input("ADLER32?: "))
sha1 = utilities.str2bool(input("SHA-1?: "))
sha224 = utilities.str2bool(input("SHA-224?: "))
sha256 = utilities.str2bool(input("SHA-256?: "))
sha384 = utilities.str2bool(input("SHA-384?: "))
sha512 = utilities.str2bool(input("SHA-512?: "))
md5 = utilities.str2bool(input("MD5?: "))
md4 = utilities.str2bool(input("MD4?: "))
ripemd160 = utilities.str2bool(input("RIPEMD160?: "))
whirlpool = utilities.str2bool(input("WHIRLPOOL?: "))
print(" ")
hashwrapper.verifier(
folder,
blocksize,
crc32,
adler32,
sha1,
sha224,
sha256,
sha384,
sha512,
md5,
md4,
ripemd160,
whirlpool)
smeg = input("Press Enter to exit") # @UnusedVariable