-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsumValidator.py
More file actions
124 lines (93 loc) · 3.09 KB
/
sumValidator.py
File metadata and controls
124 lines (93 loc) · 3.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#!/usr/bin/python2.7
import sys
import argparse
import hashlib
import os
import re
def usage():
print """usage: sumValidator.py [-h] [-version] filename
positional arguments:
filename Accept md5 or sha256 sum file as parameter
optional arguments:
-h, --help show this help message and exit
-version show program's version number and exit"""
sys.exit()
def checkMD5():
for key in res:
getFile = res.get(key)
if os.path.isfile(getFile) is False:
continue
return_md5 = hashlib.md5(open(getFile, 'rb').read()).hexdigest()
if return_md5 in res.keys():
print "Verified ",getFile
else:
print "Not verified ",getFile
def checkSingle(singleFile, ext):
extens = ext
getFileName = singleFile
verified = ""
return_sha = hashlib.sha256(open(getFileName, 'rb').read()).hexdigest()
fullFileName = getFileName + extens
with open(fullFileName) as f:
for line in f:
if return_sha in line:
verified = True
break
else:
verified = False
if verified is True:
print "Verified ", singleFile
else:
print "Not verified ", singleFile
getFileName = ""
res = {}
searchAsteriscDot = '*.'
searchDot = '.'
parser = argparse.ArgumentParser(prog='sumValidator')
parser.add_argument("file", metavar='filename', help="Accept md5 or sha256 sum file as parameter")
parser.add_argument("-version", action='version', version='%(prog)s 0.1')
args = parser.parse_args()
if args.file:
getFileName = args.file
if getFileName == "":
usage()
FileName, Ext = os.path.splitext(getFileName)
if Ext == ".sha256":
checkSingle(FileName, Ext)
sys.exit()
path, fileName = os.path.split(getFileName)
if path == "":
files = open(os.path.realpath(getFileName), "r")
getFullPath = os.path.dirname(os.path.realpath(getFileName)) + "/"
print "File: ",getFileName," Path Empty: ",getFullPath
else:
localFileName = path+"/"+fileName
files = open(localFileName, "r")
getFullPath = path + "/"
getFileName = fileName
print "File: ",getFileName," Path NE: ",getFullPath
for line in files:
key, value = line.split()
res[key] = value
results = value.find(searchAsteriscDot)
resultsDot = value.find(searchDot)
if results != -1 or resultsDot != -1:
cFileName = re.sub(r'^\*./|^\./', getFullPath, value)
res[key] = cFileName
else:
cFileName = getFullPath+ "/" +value
res[key] = cFileName
sumFileName, sumExt = os.path.splitext(getFileName)
if sumExt == "" or sumExt == ".txt":
searchSum = "sum"
result = sumFileName.lower().find(searchSum)
if result == 6 or result == 3:
findHash = re.sub(r'sum|[s]', '', sumFileName.lower())
else:
findHash = sumFileName
if sumExt == ".sum":
findHash = sumFileName
if findHash.lower() == "md5":
checkMD5()
if findHash.lower() == "sha256":
checkSHA256()