Files

108 lines
2.7 KiB
Python
Raw Permalink Normal View History

2024-04-15 22:28:20 -06:00
import libs.scanner as scan
import time
mm = None
def loadSettings(ac):
ac.send('Scanner-Settings', mm.vars['Scanner-Settings'])
def setSettings(ac, data):
2024-04-19 23:11:46 -06:00
if not mm.userInGroup(ac, 'Admins'):
mm.sendPopupError(ac.rawClient, "Error", "You are not authorised")
return
data = data['data']
valid = True
valid = valid and isinstance(data['numJobs'], int)
valid = valid and isinstance(data['maxPingTimeout'], int)
valid = valid and isinstance(data['maxNmapTimeout'], int)
valid = valid and isinstance(data['nmapGroupSize'], int)
valid = valid and isinstance(data['tcpSettings'], dict)
valid = valid and isinstance(data['udpSettings'], dict)
valid = valid and isinstance(data['tcpSettings']['mode'], int)
valid = valid and isinstance(data['udpSettings']['mode'], int)
if valid:
for obj in [data['tcpSettings'], data['udpSettings']]:
match obj['mode']:
case -1:
pass
case 1:
valid = valid and isinstance(obj['mode'], int)
valid = valid and isinstance(obj['ports'], list)
if valid:
valid = valid and all(isinstance(val, int) for val in obj['ports'])
case 2:
valid = valid and isinstance(obj['topCount'], int)
case 3:
valid = valid and isinstance(obj['relatedString'], str)
case _:
valid = False
if valid:
2024-04-21 10:31:38 -06:00
print(data)
2024-04-19 23:11:46 -06:00
mm.vars['Scanner-Settings'] = data
else:
mm.sendPopupError(ac.rawClient, "Error", "There is an error in the config.")
2024-04-15 22:28:20 -06:00
2024-04-20 18:15:46 -06:00
def onStats(stats):
2024-04-21 10:31:38 -06:00
# print(stats)
2024-04-20 18:15:46 -06:00
for ac in mm.authServer.clients:
if ac.currentPage == "/main/dashboard":
ac.send("Scanner-Metrics", stats)
2024-04-15 22:28:20 -06:00
def startScanner(ac, data):
2024-04-20 18:15:46 -06:00
mm.sendPopupSuccess(ac.rawClient, "Scanner", "Scanner Started!")
scan.start(mm.vars['Scanner-Settings'], onStats)
2024-04-15 22:28:20 -06:00
def stopScanner(ac, data):
2024-04-20 18:15:46 -06:00
mm.sendPopupSuccess(ac.rawClient, "Scanner", "Scanner Stopped!")
2024-04-15 22:28:20 -06:00
scan.stop()
def init(moduleMaster):
global mm
mm = moduleMaster
mm.vars['Scanner-Settings'] = {
2024-04-19 23:11:46 -06:00
"numJobs": 500,
"maxPingTimeout": 3,
"maxNmapTimeout": 2,
2024-04-19 23:11:46 -06:00
"nmapGroupSize": 10,
# Port modes:
# -1: Disable
# 1: Specify Ports
# 2: Top N most common ports
# 3: Related to word
"tcpSettings": {
"mode": 2,
2024-04-19 23:11:46 -06:00
"ports": [22, 80, 443],
"topCount": 100,
"relatedString": "http"
},
"udpSettings": {
"mode": -1,
2024-04-19 23:11:46 -06:00
"ports": [631, 161, 137],
"topCount": 100,
"relatedString": "telnet"
2024-04-19 23:11:46 -06:00
}
2024-04-15 22:28:20 -06:00
}
2024-04-19 23:11:46 -06:00
mm.addPageEventListener('/Scan/Scan', loadSettings)
mm.addAuthEventListener('Scanner-SetSettings', setSettings)
2024-04-15 22:28:20 -06:00
mm.addAuthEventListener('Scanner-StartScanner', startScanner)
mm.addAuthEventListener('Scanner-StopScanner', stopScanner)
def main():
2024-04-20 18:15:46 -06:00
pass