46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
|
|
import json
|
||
|
|
import sys
|
||
|
|
import yaml
|
||
|
|
|
||
|
|
def deeply_obfuscate(data):
|
||
|
|
if isinstance(data, dict):
|
||
|
|
return {k: deeply_obfuscate(v) for k, v in data.items()}
|
||
|
|
elif isinstance(data, list):
|
||
|
|
return [deeply_obfuscate(v) for v in data]
|
||
|
|
elif isinstance(data, str) and data.startswith("ENC["):
|
||
|
|
return "fake-secret"
|
||
|
|
else:
|
||
|
|
return data
|
||
|
|
|
||
|
|
def main():
|
||
|
|
if len(sys.argv) != 3:
|
||
|
|
print("Usage: fake_sops.py <input_file> <output_file>", file=sys.stderr)
|
||
|
|
sys.exit(1)
|
||
|
|
|
||
|
|
input_file = sys.argv[1]
|
||
|
|
output_file = sys.argv[2]
|
||
|
|
|
||
|
|
with open(input_file, 'r') as f:
|
||
|
|
content = f.read()
|
||
|
|
|
||
|
|
try:
|
||
|
|
data = json.loads(content)
|
||
|
|
except json.JSONDecodeError:
|
||
|
|
try:
|
||
|
|
data = yaml.safe_load(content)
|
||
|
|
except yaml.YAMLError as e:
|
||
|
|
print(f"Error parsing input file as JSON or YAML: {e}", file=sys.stderr)
|
||
|
|
sys.exit(1)
|
||
|
|
|
||
|
|
obfuscated_data = deeply_obfuscate(data)
|
||
|
|
|
||
|
|
# Remove sops metadata
|
||
|
|
if "sops" in obfuscated_data:
|
||
|
|
del obfuscated_data["sops"]
|
||
|
|
|
||
|
|
with open(output_file, 'w') as f:
|
||
|
|
json.dump(obfuscated_data, f, indent=2)
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
main()
|