0
0

More than 3 years have passed since last update.

Python3 Windowsのレジストリから不正なキー名候補を検索する

Posted at

Windowsのレジストリから不正なキー名候補を検索するコードです。"\uFEFF"のeast asian widthが"N"unicodedata.east_asian_width("\uFEFF") == "N")だったので、このような文字を含むキー名をすべて取り出してくるコードです。出力後にレジストリを目視で確認して整理することを目的としています。

Microsoft Payとやらのよく分からないキーがヒットしたのは見なかったことにしています。

import unicodedata
import winreg
from pprint import pp


def str_has_east_asian_width_N(s):
    return any((unicodedata.east_asian_width(c) == "N" for c in s))


def get_winreg_invalid_candidates(key, path, candidates=[]):
    for i in range(0xffffffff):
        try:
            name = winreg.EnumKey(key, i)
        except OSError:
            break
        if str_has_east_asian_width_N(name):
            candidates.append([name, path])
        try:
            get_winreg_invalid_candidates(
                winreg.OpenKey(key, name),
                path + "\\" + name,
                candidates)
        except FileNotFoundError:
            pass
        except PermissionError:
            pass
    return candidates


invalid_candidates = []
invalid_candidates.extend(get_winreg_invalid_candidates(
    winreg.HKEY_CURRENT_USER, "HKEY_CURRENT_USER"))
invalid_candidates.extend(get_winreg_invalid_candidates(
    winreg.HKEY_LOCAL_MACHINE, "HKEY_LOCAL_MACHINE"))
invalid_candidates.extend(get_winreg_invalid_candidates(
    winreg.HKEY_USERS, "HKEY_USERS"))
invalid_candidates.extend(get_winreg_invalid_candidates(
    winreg.HKEY_CURRENT_CONFIG, "HKEY_CURRENT_CONFIG"))
pp(invalid_candidates)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0