diff --git a/enumerate.py b/enumerate.py new file mode 100644 index 0000000..1b0f1ae --- /dev/null +++ b/enumerate.py @@ -0,0 +1,24 @@ +from winreg import * +from contextlib import suppress +import itertools + +def subkeys(path, hkey=HKEY_CLASSES_ROOT, flags=0): + with suppress(WindowsError), OpenKey(hkey, path, 0, KEY_READ|flags) as k: + for i in itertools.count(): + yield EnumKey(k, i) + +def subvalues(path, hkey=HKEY_CLASSES_ROOT, flags=0): + with suppress(WindowsError), OpenKey(hkey, path, 0, KEY_READ|flags) as k: + for i in itertools.count(): + yield EnumValue(k, i) + +for entry in subkeys(""): + if "shell" not in list(subkeys(entry)): + continue + + with suppress(WindowsError): + key = OpenKey(HKEY_CLASSES_ROOT, f"{entry}\\shell\\open\\command") + command = EnumValue(key, 0)[1] + protocolEnabled = "URL Protocol" in (x[0] for x in subvalues(entry)) + if protocolEnabled: + print(f"{entry:38} : {command}") \ No newline at end of file