Last active
August 29, 2015 13:56
-
-
Save bones-codes/9287602 to your computer and use it in GitHub Desktop.
Command line program to compare checksums.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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