aboutsummaryrefslogtreecommitdiff
path: root/validate_keys.py
diff options
context:
space:
mode:
Diffstat (limited to 'validate_keys.py')
-rwxr-xr-xvalidate_keys.py43
1 files changed, 42 insertions, 1 deletions
diff --git a/validate_keys.py b/validate_keys.py
index e8a50e6..ecac046 100755
--- a/validate_keys.py
+++ b/validate_keys.py
@@ -1,5 +1,6 @@
#!/usr/bin/env python3
+import argparse
import hashlib
import json
import os
@@ -182,10 +183,50 @@ def generate_report(results):
return "\n".join(lines) + "\n"
+def remove_invalid_keys(keys_file, results):
+ invalid_keys = {entry["key"] for entry in results["invalid_format"]} | {
+ entry["key"] for entry in results["invalid_signature"]
+ }
+
+ with open(keys_file, "r") as file:
+ data = json.load(file)
+
+ removed = 0
+
+ for edition in data["editions"].values():
+ for category in edition["categories"].values():
+ original_count = len(category["keys"])
+ category["keys"] = [
+ key for key in category["keys"] if key not in invalid_keys
+ ]
+ removed += original_count - len(category["keys"])
+
+ with open(keys_file, "w") as file:
+ json.dump(data, file, indent=2, ensure_ascii=False)
+ file.write("\n")
+
+ return removed
+
+
if __name__ == "__main__":
- report = generate_report(validate_keys())
+ parser = argparse.ArgumentParser(description="Validate Windows XP product keys")
+
+ parser.add_argument(
+ "--clean",
+ action="store_true",
+ help="remove invalid keys from keys.json",
+ )
+
+ arguments = parser.parse_args()
+ results = validate_keys()
+ report = generate_report(results)
with open("report.md", "w") as file:
file.write(report)
print("Generated report.md")
+
+ if arguments.clean:
+ removed = remove_invalid_keys("keys.json", results)
+
+ print(f"Removed {removed} invalid keys from keys.json")