-
Notifications
You must be signed in to change notification settings - Fork 0
/
mac.py
110 lines (103 loc) · 4.04 KB
/
mac.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
import requests
class Mac:
def __init__(self):
self.username = 'kismet'
self.password = 'kismet'
self.IP = 'localhost'
self.mac = "FF:FF:FF:FF:FF:FF"
self.best_seen = -120
self.last_seen_time = 0
self.last_best_time = 0
self.current_channel = 0
self.lat = ""
self.lon = ""
self.location = ""
self.bssid = "FF:FF:FF:FF:FF:FF"
self.url = f"http://{self.username}:{self.password}@{self.IP}:2501/"
self.source_params = {
'fields': [
'kismet.datasource.channels',
'kismet.datasource.uuid',
"kismet.datasource.interface",
"kismet.datasource.capture_interface",
"kismet.datasource.hopping",
"kismet.datasource.channel",
"kismet.datasource.hop_channels",
]
}
self.target_params = {
'fields': [
'kismet.device.base.macaddr',
"kismet.device.base.last_time",
"kismet.device.base.signal/kismet.common.signal.last_signal",
"kismet.device.base.channel",
'kismet.device.base.location/kismet.common.location.last/kismet.common.location.geopoint',
'kismet.device.base.key',
"dot11.device/dot11.device.last_bssid",
'kismet.common.seenby.uuid',
],
'datatable': True
}
self.one_six_eleven_params = {
'channels': ['1', '6', '11'],
'hoprate': 5
}
self.two_full_params = {
'channels': ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14'],
'hoprate': 5
}
self.five_full_params = {
'channels': ['36', '40', '44', '48', '52', '56', '60', '64', '100', '104', '108', '112', '116', '120',
'124',
'128', '132', '136', '140', '144', '149', '153', '157', '161', '165'],
'hoprate': 5
}
self.interfaces = []
def retrieve_mac(self):
results = requests.post(
url=f"{self.url}devices/by-mac/{self.mac}/devices.json",
json=self.target_params
).json()
return results
def get_interfaces(self):
results = requests.post(
url=f"{self.url}datasource/all_sources.json",
json=self.source_params).json()
self.interfaces = results
def survey_channels(self, uuid, span):
if span == "all":
for item in self.interfaces:
if item['kismet.datasource.uuid'] == uuid:
params = {
'channels': item['kismet.datasource.channels'],
'hoprate': 5
}
print(params['channels'])
requests.post(
url=f"{self.url}datasource/by-uuid/{uuid}/set_channel.cmd",
json=params)
elif span == "function_all":
for item in self.interfaces:
if item['kismet.datasource.uuid'] == uuid:
channel_list = []
for channel in item['kismet.datasource.channels']:
if len(channel) > 3:
pass
else:
channel_list.append(channel)
params = {
'channels': channel_list,
'hoprate': 5
}
print(params['channels'])
requests.post(
url=f"{self.url}datasource/by-uuid/{uuid}/set_channel.cmd",
json=params)
else:
requests.post(
url=f"{self.url}datasource/by-uuid/{uuid}/set_channel.cmd",
json=span)
def lock_channel(self, uuid, channel):
requests.post(
url=f"{self.url}datasource/by-uuid/{uuid}/set_channel.cmd",
json={'channel': channel})