20 lines
603 B
Python
Executable File
20 lines
603 B
Python
Executable File
#!/usr/bin/python3 -u
|
|
import tarfile
|
|
import hashlib
|
|
import argparse
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('infile', type=argparse.FileType('rb'))
|
|
parser.add_argument('-c','--hashtype', default="md5" , choices=hashlib.algorithms_available )
|
|
args = parser.parse_args()
|
|
|
|
tf=tarfile.open(fileobj=args.infile)
|
|
|
|
for file in tf:
|
|
if file.isfile():
|
|
h=hashlib.new(args.hashtype)
|
|
extracted_file=tf.extractfile(file)
|
|
for chunk in iter(lambda: extracted_file.read(h.block_size),b''):
|
|
h.update(chunk)
|
|
print("{1} {0}".format(file.name,h.hexdigest()))
|