-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
98 lines (87 loc) · 2.27 KB
/
main.py
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
import sys
import re
import time
import getopt
import requests
import urllib3
# INIT
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
argumentList = sys.argv[1:]
outputResult = []
def loadFile(file):
try:
with open(file) as f:
lines = [line.rstrip('\n') for line in f]
return lines
except:
print("Error: the file "+ file + " does not exist.")
def convertResult(result):
return str(result).replace("'", "") + '\n'
def writeFile(file):
try:
f = open(file,"w")
f.writelines(list(map(convertResult, outputResult)))
f.close()
print("Results saved: " + file)
except:
print("Error: unable to save results in "+ file)
def helpMenu():
print("""
Usage: magnify [-u] <url> [-f] <file> [-r] <rate> [-o] <filename>
-h: Help
-u --url: URL
-f --file: Input file containing URLs
-r --rate: Rate limit in seconds
-o --output: Output file name/path
""")
def checkRegex(content):
matches = []
patterns = loadFile('regex.txt')
for pattern in patterns:
p = '{}'.format(pattern)
r = re.findall(p, bytes.decode(content))
matches.extend(r)
return matches
def curlUrl(url):
keywords = loadFile('keywords.txt')
result = [url]
try:
r = requests.get(url, verify=False)
result.append(r.status_code)
rgx = checkRegex(r.content)
result.extend(rgx)
for word in keywords:
if word in str(r.content):
result.append(word)
except Exception as e:
print(e)
result.append('ERR')
return result
def multipleCurl(urls,rate):
for index, url in enumerate(urls):
result = curlUrl(url)
print("({}%) {}".format(int(((index+1)/len(urls))*100), result))
outputResult.append(result)
if(rate != -1):
time.sleep(rate)
try:
opts, args = getopt.getopt(argumentList,"f:h:r:u:o:",["file=", "rate=", "url=","output="])
rate = -1
try:
rate = int([item for item in opts if ("--rate" or "-r") in item][0][1])
except:
rate = -1
for opt, arg in opts:
if opt == '-h':
helpMenu()
sys.exit()
elif opt in ("-u","--url"):
print(curlUrl(arg))
elif opt in ("-f","--file"):
urls = loadFile(arg)
multipleCurl(urls,rate)
elif opt in ("-o", "--output"):
writeFile(arg)
except getopt.GetoptError:
helpMenu()
sys.exit(2)