37 lines · 1.1 KB · Python
RawDownload
#!/usr/bin/env python import os, sys def main(prog, *args):	if len(args) != 1:		raise Exception("missing program name as parameter") 	lineiter = sys.stdin.xreadlines()	for l in lineiter:		if l.startswith("Len = "):			sys.stdout.write(".")			sys.stdout.flush()			length = int(l[len("Len = "):]) 			l = lineiter.next()			if not l.startswith("Msg = "):				raise Exception("bad file, expecting 'Msg = ' after 'Len = '");			msg = l[len("Msg = "):].rstrip("\r\n")			if length == 0:				msg = ""			if len(msg)*4 != length:				raise Exception("bad msg, claimed length %d bits, have %d bytes = %d bits" % (length, len(msg), len(msg)*4)) 			l = lineiter.next()			if not l.startswith("MD = "):				raise Exception("bad file, expecting 'MD = ' after 'Msg = '");			exp = l[len("MD = "):].rstrip("\r\n") 			res = os.popen("echo -n %s | tr a-z A-Z | python -c 'import sys, base64; sys.stdout.write(base64.b16decode(sys.stdin.read()))' | %s" % (msg, args[0]), "r").read().rstrip("\n")			if res != exp:				print >>sys.stderr, "\nbad result\nexpected: %s\nsaw: %s\n" % (exp, res),				sys.exit(1)	print if __name__ == "__main__":	main(*sys.argv)