Skip to content

Instantly share code, notes, and snippets.

@bones-codes
Last active August 29, 2015 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bones-codes/9287602 to your computer and use it in GitHub Desktop.
Save bones-codes/9287602 to your computer and use it in GitHub Desktop.
Command line program to compare checksums.
#!/usr/bin/python
from argparse import ArgumentParser, RawDescriptionHelpFormatter
import subprocess
OKGREEN = '\033[36m'
FAIL = '\033[91m'
ENDC = '\033[0m'
def compare(dfile, csm, check):
if csm == check:
good = OKGREEN + "\nBUENO ---> " + ENDC
eq = OKGREEN + " == " + ENDC
okmsg = " Checksum checks out for %s:\n%s" % (dfile, csm)
chk = "%s" % check
print good + okmsg + eq + chk
return 0
else:
bad = FAIL + "\nNO BUENO ---> " + ENDC
noteq = FAIL + " != " + ENDC
errmsg = "File checksum does not match purported checksum:\n%s" % csm
chk = "%s" % check
print bad + errmsg + noteq + chk
return 1
def main():
parser = ArgumentParser(formatter_class=RawDescriptionHelpFormatter, description='''\A simple command line program to simplify hash sum checks.
File checksums are obtained with the openssl cmd.
Accepted digests are:
md2 MD2 Digest
md5 MD5 Digest
mdc2 MDC2 Digest
rmd160 RMD-160 Digest
sha SHA Digest
sha1 SHA-1 Digest
sha224 SHA-224 Digest
sha256 SHA-256 Digest
sha384 SHA-384 Digest
sha512 SHA-512 Digest
''')
parser.add_argument('digest', type=str, help='Specify message digest.')
parser.add_argument('checksum', type=str, help='Specify purported checksum.')
parser.add_argument('data_file', type=str, help='Specify the file.')
args = parser.parse_args()
dfile = args.data_file
digest = args.digest
checksum = args.checksum
csum = subprocess.check_output(["openssl", digest, dfile]).rstrip('\n').split(' ')
return compare(dfile, csum[-1], checksum)
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment