Initial development for the adding of users and hosts to kali
This commit is contained in:
commit
08d9b3c4d3
163
main.py
Normal file
163
main.py
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
import requests
|
||||||
|
import json
|
||||||
|
from time import sleep
|
||||||
|
import requests
|
||||||
|
|
||||||
|
|
||||||
|
import requests
|
||||||
|
base_url = "http://304door/guacamole"
|
||||||
|
data_source = 'postgresql'
|
||||||
|
url = f"{base_url}/api/tokens"
|
||||||
|
|
||||||
|
headers = {}
|
||||||
|
payload = {
|
||||||
|
'username': 'guacadmin',
|
||||||
|
'password': 'guacadmin'
|
||||||
|
}
|
||||||
|
|
||||||
|
response = requests.request("POST", url, headers=headers, data=payload)
|
||||||
|
|
||||||
|
token = json.loads(response.text)['authToken']
|
||||||
|
|
||||||
|
## TSHOOT
|
||||||
|
# print(response.status_code)
|
||||||
|
# print(response.text)
|
||||||
|
|
||||||
|
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
|
||||||
|
def create_user(data_source, token, username, password, attributes=None):
|
||||||
|
# Set the URL for the API endpoint
|
||||||
|
url = f'{base_url}/api/session/data/{data_source}/users'
|
||||||
|
|
||||||
|
# Set the headers for the request
|
||||||
|
headers = {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set the query parameters for the request
|
||||||
|
params = {
|
||||||
|
'token': token
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set the default attributes if none are provided
|
||||||
|
if attributes is None:
|
||||||
|
attributes = {
|
||||||
|
"disabled": "",
|
||||||
|
"expired": "",
|
||||||
|
"access-window-start": "",
|
||||||
|
"access-window-end": "",
|
||||||
|
"valid-from": "",
|
||||||
|
"valid-until": "",
|
||||||
|
"timezone": None,
|
||||||
|
"guac-full-name": "",
|
||||||
|
"guac-organization": "",
|
||||||
|
"guac-organizational-role": ""
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set the request body
|
||||||
|
body = {
|
||||||
|
'username': username,
|
||||||
|
'password': password,
|
||||||
|
'attributes': attributes
|
||||||
|
}
|
||||||
|
|
||||||
|
# Send the POST request
|
||||||
|
response = requests.post(url, headers=headers, params=params, data=json.dumps(body))
|
||||||
|
|
||||||
|
# Check for a successful response
|
||||||
|
if response.status_code == 200:
|
||||||
|
return response.json()
|
||||||
|
else:
|
||||||
|
response.raise_for_status() # Raise an exception for an unsuccessful response
|
||||||
|
|
||||||
|
def create_rdp_connection(data_source, token, connection_name, rdp_parameters, attributes=None):
|
||||||
|
# Set the URL for the API endpoint
|
||||||
|
url = f'{base_url}/api/session/data/{data_source}/connections'
|
||||||
|
|
||||||
|
# Set the headers for the request
|
||||||
|
headers = {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set the query parameters for the request
|
||||||
|
params = {
|
||||||
|
'token': token
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set the default attributes if none are provided
|
||||||
|
if attributes is None:
|
||||||
|
attributes = {
|
||||||
|
"max-connections": "",
|
||||||
|
"max-connections-per-user": "",
|
||||||
|
"weight": "",
|
||||||
|
"failover-only": "",
|
||||||
|
"guacd-port": "",
|
||||||
|
"guacd-encryption": "",
|
||||||
|
"guacd-hostname": ""
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set the request body
|
||||||
|
body = {
|
||||||
|
'parentIdentifier': 'ROOT',
|
||||||
|
'name': connection_name,
|
||||||
|
'protocol': 'rdp',
|
||||||
|
'parameters': rdp_parameters,
|
||||||
|
'attributes': attributes
|
||||||
|
}
|
||||||
|
|
||||||
|
# Send the POST request
|
||||||
|
response = requests.post(url, headers=headers, params=params, data=json.dumps(body))
|
||||||
|
|
||||||
|
# Check for a successful response
|
||||||
|
if response.status_code == 200:
|
||||||
|
return response.json()
|
||||||
|
else:
|
||||||
|
response.raise_for_status() # Raise an exception for an unsuccessful response
|
||||||
|
|
||||||
|
|
||||||
|
# Assume the following dictionary & read from file later
|
||||||
|
users_dict = {
|
||||||
|
'user1': 'password1',
|
||||||
|
'user2': 'password2',
|
||||||
|
}
|
||||||
|
|
||||||
|
# Assume the create_user function is defined as before
|
||||||
|
# ...
|
||||||
|
|
||||||
|
# Loop through each user and password in the dictionary
|
||||||
|
for username, password in users_dict.items():
|
||||||
|
# Call the create_user function
|
||||||
|
# create_user_response = create_user(data_source, token, username, password)
|
||||||
|
pass
|
||||||
|
# Optionally, print the response or handle it in some way
|
||||||
|
# print(f'Response for {username}:', create_user_response)
|
||||||
|
|
||||||
|
# IPs for RDP
|
||||||
|
ip_list = [
|
||||||
|
'devbox.roomatectf',
|
||||||
|
'192.168.1.2',
|
||||||
|
'192.168.1.3',
|
||||||
|
'192.168.1.4'
|
||||||
|
]
|
||||||
|
|
||||||
|
# Loop through each IP address in the list
|
||||||
|
for ip in ip_list:
|
||||||
|
# Set the connection name based on the IP (or however you prefer)
|
||||||
|
connection_name = f'RDP Connection to {ip}'
|
||||||
|
|
||||||
|
# Set the RDP parameters, including the current IP
|
||||||
|
rdp_parameters = {
|
||||||
|
'hostname': ip,
|
||||||
|
'port': '3389',
|
||||||
|
# ... other RDP parameters as needed
|
||||||
|
}
|
||||||
|
|
||||||
|
# Call the create_rdp_connection function
|
||||||
|
create_rdp_connection_response = create_rdp_connection(data_source, token, connection_name, rdp_parameters)
|
||||||
|
|
||||||
|
# Optionally, print the response or handle it in some way
|
||||||
|
print(f'Response for {ip}:', create_rdp_connection_response)
|
||||||
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user