-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathinvoker.py
136 lines (110 loc) · 4.86 KB
/
invoker.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
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
125
126
127
128
129
130
131
132
133
134
135
136
import os
from configparser import ConfigParser
from flask import Flask, render_template, request
from sources.reporter import mainReporter, ReporterPcap, ReporterFile
from werkzeug.utils import secure_filename
ALLOWED_EXTENSIONS = {'pcap'}
app = Flask(__name__)
app.config['UPLOAD_PATH'] = 'uploads'
app.jinja_options['extensions'].append('jinja2.ext.loopcontrols')
fileStrings = {}
config_object = ConfigParser()
config_object.read("config.ini")
@app.route('/')
@app.route('/submit')
def home():
return render_template('home.html')
@app.route('/submit/ioc')
def iocSubmit():
return render_template('iocsubmit.html')
@app.route('/submit/pcap')
def pcapSubmit():
return render_template('pcapsubmit.html')
@app.route('/submit/file')
def fileSubmit():
return render_template('filesubmit.html')
@app.route('/validate', methods=['POST'])
def validate():
ioc = request.form['ioc']
if ioc:
reportsData = mainReporter(ioc)
print('IOC DATA:', reportsData)
if len(reportsData) > 0:
return render_template('iocanalysis.html', result=reportsData)
else:
return render_template('empty.html', result='TRY AGAIN')
else:
return render_template('empty.html', result='NO VALUE ENTERED')
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/pcap', methods=['POST'])
def pcapAnalyzer():
if request.method == 'POST':
abuse = request.form.get('abuse')
virus = request.form.get('virus')
urlscan = request.form.get('urlscan')
countTable = request.form.get('countTable')
bot = request.form.get('bot')
url = request.form.get('urls')
file = request.files['file']
if file.filename == '' or not file:
return render_template('empty.html', result='SUBMIT A FILE')
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
if filename:
abuseCheck = True if abuse == 'on' else False
virusCheck = True if virus == 'on' else False
urlscanCheck = True if urlscan == 'on' else False
countTableCheck = True if countTable == 'on' else False
botCheck = True if bot == 'on' else False
urlCheck = True if url == 'on' else False
data = ReporterPcap(file, abuseCheck, virusCheck, urlscanCheck, countTableCheck, botCheck, urlCheck)
print('PCAP DATA:', data)
if data.get('error'):
return render_template('empty.html', result=data.get('error'))
if data.get('EngineData') or data.get('totalIp') or data.get('totalPub') or data.get(
'graph') or data.get('urls').get('urls'):
return render_template('pcapanalysis.html', result=data)
else:
if data.get('error'):
return render_template('empty.html', result=data.get('error'))
elif not data.get('urls').get('urls'):
return render_template('empty.html', result='NO URLS FOUND')
else:
return render_template('empty.html', result='SELECT ANY OF THE CHECKBOXES')
else:
return render_template('empty.html', result='FILENAME SHOULD BE ASCII')
else:
return render_template('empty.html', result='SUBMIT PCAP FILE WITH EXTENSION .PCAP')
else:
return render_template('empty.html', result='SOMETHING WENT WRONG')
@app.route('/file/strings', methods=['GET'])
def fileStrings():
return render_template('filestrings.html', result=fileStrings)
@app.route('/file', methods=['POST'])
def fileAnalyzer():
if request.method == 'POST':
strings = request.form.get('strings')
ped = request.form.get('ped')
engine = request.form.get('engine')
global fileStrings
uploaded_file = request.files['file']
filename = secure_filename(uploaded_file.filename)
if filename != '':
directory_path = os.path.join(app.config['UPLOAD_PATH'], filename)
if os.path.isfile(directory_path):
data = ReporterFile(directory_path, strings, ped, engine)
fileStrings = data
else:
uploaded_file.save(directory_path)
data = ReporterFile(directory_path, strings, ped, engine)
fileStrings = data
print('FILE DATA:', data)
return render_template('fileanalysis.html', result=data)
else:
return render_template('empty.html', result='SOMETHING WENT WRONG')
if __name__ == '__main__':
host_server = config_object["SERVER"]["HOST"]
host_port = config_object["SERVER"]["PORT"]
app.run(host=host_server, port=host_port, debug=True)