-
Notifications
You must be signed in to change notification settings - Fork 0
/
AWVSs.py
110 lines (90 loc) · 3.73 KB
/
AWVSs.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
import requests
import json
import sys
import os
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
InputFile = sys.argv
if not os.path.isfile('awvsAPIkey'):
usrapi_key = input('Pls input ur AWVS API-key:')
open('awvsAPIkey', 'w+').write(usrapi_key)
os.system('attrib +s +h awvsAPIkey')
if InputFile == '':
print('Please Input FileName!')
exit(1)
if InputFile == "delete":
os.system('attrib -s -h awvsAPIkey|del /s /q awvsAPIkey')
print('success')
exit(0)
if not os.path.isfile(InputFile[1]):
print('Not This File!')
exit(1)
class AFormat:
def __init__(self):
pass
@staticmethod
def targets_to_address(targets: dict):
return [x['address'] for x in targets['targets']]
@staticmethod
def targets_to_id(targets: dict):
return [x['target_id'] for x in targets['targets']]
class AWVSS:
def __init__(self, ip: str = '127.0.0.1', port: int = 3443, key=open('awvsAPIkey', 'r').read()):
self.pre_url = f'https://{ip}:{port}'
self.header = {
'X-Auth': key, 'Content-Type': 'application/json;charset=UTF-8'}
def getme(self):
url = self.pre_url+'/api/v1/me'
r = requests.get(url, headers=self.header, verify=False)
print(r.json())
def getinfo(self):
url = self.pre_url+'/api/v1/info'
r = requests.get(url, headers=self.header, verify=False)
print(r.json())
def getworker(self):
url = self.pre_url+'/api/v1/workers'
r = requests.get(url, headers=self.header, verify=False)
print(r.json())
def getnotice(self):
url = self.pre_url+'/api/v1/notifications'
r = requests.get(url, headers=self.header, verify=False)
print(r.json())
def getstat(self):
url = self.pre_url+'/api/v1/me/stats'
r = requests.get(url, headers=self.header, verify=False)
print(r.json())
def gettargets(self, threat: int = None, criticality: int = None):
url = self.pre_url+'/api/v1/targets'
r = requests.get(url, headers=self.header, verify=False)
return r.json()
def addtarget(self, address: str, description: str = ''):
url = self.pre_url+'/api/v1/targets/add'
param = {'groups': [], 'targets': [
{'address': address, 'description': description}]}
r = requests.post(url, headers=self.header,
verify=False, data=json.dumps(param))
print(r.json())
def deltarget(self, target_id: str):
url = self.pre_url+'/api/v1/targets/{target_id}'
r = requests.request('DELETE', url, headers=self.header, verify=False)
if r.status_code == 204:
print('OK')
def scan(self, target_id: str):
url = self.pre_url+'/api/v1/scans'
param = {'profile_id': '11111111-1111-1111-1111-111111111111', 'target_id': target_id,
'schedule': {'disable': False, 'start_date': None, 'time_sensitive': False}, 'incremental': False}
r = requests.post(url, headers=self.header,
verify=False, data=json.dumps(param))
if r.status_code == 201:
print(r.json())
if __name__ == "__main__":
Scan = AWVSS()
for ip in open(InputFile[1], 'r'):
Scan.addtarget(ip.replace('\n', ''))
targets = Scan.gettargets()
# targets_address = AFormat.targets_to_address(targets)
targets_id = AFormat.targets_to_id(targets)
# print(targets_address)
# print(targets_id)
# Scan.deltarget('a7063428-9dba-49c3-bfbb-8442fd9cf876')
Scan.scan(targets_id)