import sys import base64 import requests from pathlib import Path # Handle our arguments if len(sys.argv) != 4: print("Usage: python client.py ") sys.exit(1) spec_file = str( Path(sys.argv[1]).resolve() ) capab_file = str( Path(sys.argv[2]).resolve() ) out_file = sys.argv[3] url = "http://127.0.0.1:60060/link" # Populate our arguments linkargs = { "action": "link", "params": { "spec": spec_file, "file": capab_file } } # Make a request to the Sidecar try: response = requests.post(url, json=linkargs) response.raise_for_status() data = response.json() if data.get("success") is True: print("[*] Success") if data.get("message") != "": print(data.get("message")) raw_binary = base64.b64decode(data["output_b64"]) with open(out_file, "wb") as f: f.write(raw_binary) else: print(f"[-] Failure {data.get('context')}:\n{data.get('message')}") except requests.exceptions.RequestException as e: print(f"[-] HTTP Connection Error: {e}")