| import zipfile | |
| import json | |
| import argparse | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("-f", "--filepath", help="Specify a filepath to an agent's zip file, .zip extension required.", type=str, required=True) | |
| parser.add_argument("-s", "--savefile", help="Specify a name and location for the saved configuration file. Will be saved in .json format.", default="config") | |
| args = parser.parse_args() | |
| filepath = args.filepath | |
| savefile = args.savefile | |
| archive = zipfile.ZipFile(filepath, "r") | |
| file = archive.open("data") | |
| json_file = json.loads(file.read().decode("utf-8")) | |
| # Only want to remove serialized objects from dictionary | |
| val_to_remove = ":serialized:" | |
| for key in json_file.keys(): | |
| # So if each value is a type dict, then I want to iterate through it and remove the serialized key | |
| if type(json_file[key]) is dict: | |
| if val_to_remove in json_file[key].keys(): | |
| json_file[key].pop(val_to_remove) | |
| with open(f"{savefile}.json", "w") as outfile: | |
| outfile.write(json.dumps(json_file, indent=2)) | |
| file.close() | |