#python #security #winapi
Вопрос:
Я попробовал этот код:
import win32security import win32api token = win32security.OpenProcessToken(win32api.GetCurrentProcess(), win32security.TOKEN_QUERY_SOURCE | win32security.TOKEN_QUERY) for i in range(0x30): try: n = win32security.LookupPrivilegeName(None, i) privs = win32security.GetTokenInformation(token, i) except Exception as e: pass else: print(privs) print(i, n) while True: pass
Я попытался получить информацию о каждой привилегии(мне в основном нужны флаги), но я не могу понять возвращаемые значения функции GetTokenInformation() , она возвращает разные типы, и мне не удается извлечь из нее какую-либо информацию, я искал в MSDN, но все равно не понял.
Комментарии:
1. Это задокументировано на MSDN. Похоже, вы недостаточно внимательно прочитали эту документацию, учитывая код в вопросе.
Ответ №1:
Прочитав больше в MSDN, я узнал, что функция GetTokenInformation получает параметр с именем TOKEN_INFORMATION_CLASS, который указывает, что функция вернет, поэтому для того, чтобы узнать о привилегиях и об их флагах, я использовал следующий код:
import win32security import win32api token = win32security.OpenProcessToken(win32api.GetCurrentProcess(), win32security.TOKEN_QUERY_SOURCE | win32security.TOKEN_QUERY) privs = win32security.GetTokenInformation(token, win32security.TokenPrivileges) for i in range(len(privs)): # name of privilege name = win32security.LookupPrivilegeName(None, privs[i][0]) flag = privs[i][1] # check the flag value if flag == 0: flag = 'Disabled' elif flag == 3: flag = 'Enabled' print(name, flag) while True: pass