コード例 #1
0
    def __init__(self):
        super(Win32Helper, self).__init__()
        import platform
        self.os_system = platform.system()
        self.os_release = platform.release()
        self.os_version = platform.version()
        self.os_machine = platform.machine()
        self.os_uname = platform.uname()
        if "windows" == self.os_system.lower():
            win_ver = "win7_" + self.os_machine.lower()
            if ("5" == self.os_release): win_ver = "winxp"
            if logger().HAL:
                logger().log(
                    "[helper] OS: %s %s %s" %
                    (self.os_system, self.os_release, self.os_version))
            if logger().HAL:
                logger().log("[helper] Using 'helper/win/%s' path for driver" %
                             win_ver)

        self.use_existing_service = False

        self.driver_path = None
        self.win_ver = win_ver
        self.driver_handle = None
        self.device_file = pywintypes.Unicode(DEVICE_FILE)

        c_int_p = POINTER(c_int)

        # enable required SeSystemEnvironmentPrivilege privilege
        privilege = win32security.LookupPrivilegeValue(
            None, 'SeSystemEnvironmentPrivilege')
        token = win32security.OpenProcessToken(
            win32process.GetCurrentProcess(),
            win32security.TOKEN_READ | win32security.TOKEN_ADJUST_PRIVILEGES)
        win32security.AdjustTokenPrivileges(
            token, False, [(privilege, win32security.SE_PRIVILEGE_ENABLED)])
        win32api.CloseHandle(token)
        # import firmware variable API
        try:
            self.GetFirmwareEnvironmentVariable = kernel32.GetFirmwareEnvironmentVariableW
            self.GetFirmwareEnvironmentVariable.restype = c_int
            self.GetFirmwareEnvironmentVariable.argtypes = [
                c_wchar_p, c_wchar_p, c_void_p, c_int
            ]
            self.SetFirmwareEnvironmentVariable = kernel32.SetFirmwareEnvironmentVariableW
            self.SetFirmwareEnvironmentVariable.restype = c_int
            self.SetFirmwareEnvironmentVariable.argtypes = [
                c_wchar_p, c_wchar_p, c_void_p, c_int
            ]
        except AttributeError, msg:
            logger().warn(
                "G[S]etFirmwareEnvironmentVariableW function doesn't seem to exist"
            )
            pass
コード例 #2
0
def rebootComputer(message='Rebooting',
                   timeout=30,
                   forceClose=False,
                   reboot=True):
    # Enable the SeShutdown privilege (which must be present in your
    # token in the first place)
    priv_flags = (win32security.TOKEN_ADJUST_PRIVILEGES
                  | win32security.TOKEN_QUERY)
    hToken = win32security.OpenProcessToken(win32api.GetCurrentProcess(),
                                            priv_flags)
    priv_id = win32security.LookupPrivilegeValue(
        None, win32security.SE_SHUTDOWN_NAME)
    old_privs = win32security.AdjustTokenPrivileges(
        hToken, 0, [(priv_id, win32security.SE_PRIVILEGE_ENABLED)])
    try:
        win32api.InitiateSystemShutdown(None, message, timeout, forceClose,
                                        reboot)
    finally:
        # Restore previous privileges
        win32security.AdjustTokenPrivileges(hToken, 0, old_privs)
コード例 #3
0
def adjustPrivilege(priv, enable=True):
    flags = ntsecuritycon.TOKEN_ADJUST_PRIVILEGES | ntsecuritycon.TOKEN_QUERY
    htoken = win32security.OpenProcessToken(win32api.GetCurrentProcess(),
                                            flags)
    id = win32security.LookupPrivilegeValue(None, priv)
    if enable:
        newPrivileges = [(id, ntsecuritycon.SE_PRIVILEGE_ENABLED)]
    else:
        newPrivileges = [(id, 0)]
    win32security.AdjustTokenPrivileges(htoken, 0, newPrivileges)
    win32api.CloseHandle(htoken)
コード例 #4
0
    def adjust_privilege(privilege: str, enable: bool = False) -> bool:
        new_privileges = [(win32security.LookupPrivilegeValue(None, privilege),
                           win32con.SE_PRIVILEGE_ENABLED if enable else 0)]

        flags = win32con.TOKEN_ADJUST_PRIVILEGES | win32con.TOKEN_QUERY
        token = win32security.OpenProcessToken(win32api.GetCurrentProcess(),
                                               flags)

        if not token:
            return False

        win32security.AdjustTokenPrivileges(token, 0, new_privileges)
コード例 #5
0
ファイル: maestrod.py プロジェクト: guozanhua/maestro
 def AdjustPrivilege(priv, enable):
    htoken = \
       win32security.OpenProcessToken(
          win32api.GetCurrentProcess(),
          ntsecuritycon.TOKEN_ADJUST_PRIVILEGES | ntsecuritycon.TOKEN_QUERY
       )
    id = win32security.LookupPrivilegeValue(None, priv)
    if enable:
       newPrivileges = [(id, ntsecuritycon.SE_PRIVILEGE_ENABLED)]
    else:
       newPrivileges = [(id, 0)]
    win32security.AdjustTokenPrivileges(htoken, 0, newPrivileges)
コード例 #6
0
def enable_debug():
    flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY
    hToken = win32security.OpenProcessToken(
        win32api.GetCurrentProcess(),
        flags)
    priv_id = win32security.LookupPrivilegeValue(
        None,
        win32security.SE_DEBUG_NAME)
    old_privs = win32security.AdjustTokenPrivileges(
        hToken,
        0,
        [(priv_id, win32security.SE_PRIVILEGE_ENABLED)])
コード例 #7
0
 def seDebug():
     try:
         """SEDebug"""
         flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY
         htoken = win32security.OpenProcessToken(
             win32api.GetCurrentProcess(), flags)
         id = win32security.LookupPrivilegeValue(None, "seDebugPrivilege")
         newPrivileges = [(id, win32security.SE_PRIVILEGE_ENABLED)]
         win32security.AdjustTokenPrivileges(htoken, 0, newPrivileges)
     except Exception as e:
         print 'je me vautre'
         pass
コード例 #8
0
ファイル: utils.py プロジェクト: ssamson-tis/WAPT
def change_priv (priv_name, enable=True):
  hToken = win32security.OpenProcessToken (
    win32api.GetCurrentProcess (), 
    ntsecuritycon.MAXIMUM_ALLOWED
  )
  win32security.AdjustTokenPrivileges ( 
    hToken,
    False, 
    [(
      win32security.LookupPrivilegeValue (None, priv_name), 
      win32security.SE_PRIVILEGE_ENABLED if enable else 0
    )]
  )
コード例 #9
0
ファイル: Windows.py プロジェクト: krehl/rpaframework
 def put_system_to_sleep(self) -> None:
     """Put Windows into sleep mode
     """
     access = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY
     htoken = win32security.OpenProcessToken(win32api.GetCurrentProcess(),
                                             access)
     if htoken:
         priv_id = win32security.LookupPrivilegeValue(
             None, win32security.SE_SHUTDOWN_NAME)
         win32security.AdjustTokenPrivileges(
             htoken, 0, [(priv_id, win32security.SE_PRIVILEGE_ENABLED)])
         ctypes.windll.powrprof.SetSuspendState(False, True, True)
         win32api.CloseHandle(htoken)
コード例 #10
0
def change(s, l):
    global start
    string_date = " ".join(str(x) for x in l)
    list_date = string_date.split()
    year = int(list_date[0])
    if (list_date[0] == "00"):
        start += 1
    year = (start * 1000) + year
    month = int(list_date[1])
    dayOfWeek = int(
        list_date[2])  #CONVERT THE TIME VARIABLE INTO INTEGER VALUE
    day = int(list_date[3])
    hour = int(list_date[4])
    minute = int(list_date[5])
    second = int(list_date[6])
    microsecond = int(list_date[7])
    user_zone = 'UTC'
    local_tz = utc_to_local(
        datetime(year, month, day, hour, minute, second, microsecond),
        user_zone)
    if s == 1:
        month = monthDict[local_tz.month]
        print local_tz
        os.system('date -s "' + str(local_tz.day) + " " + month + " " +
                  str(local_tz.year) + " " + str(local_tz.hour) + ":" +
                  str(local_tz.minute) + ":" + str(local_tz.second) +
                  '"')  #SET THE TIME IN LINUX MACHINE
    elif s == 2:
        try:
            import win32api
            import win32security
        except ImportError as e:
            print str(e)
            sys.exit(1)
        print local_tz
        priv_flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY
        hToken = win32security.OpenProcessToken(win32api.GetCurrentProcess(),
                                                ntsecuritycon.MAXIMUM_ALLOWED)
        time_privilege = win32security.LookupPrivilegeValue(
            None, win32security.SE_TIME_ZONE_NAME)
        win32security.AdjustTokenPrivileges(
            hToken, 0, [(time_privilege, win32security.SE_PRIVILEGE_ENABLED)])
        win32api.SetTimeZoneInformation(
            (0, u'GMT Standard Time', (2000, 10, 5, 2, 0, 0, 0, 0), 0,
             u'GMT Daylight Time', (2000, 5, 3, 1, 0, 0, 0, 0), -60))
        win32api.SetSystemTime(
            local_tz.year, local_tz.month, dayOfWeek, local_tz.day,
            local_tz.hour, local_tz.minute, local_tz.second,
            local_tz.microsecond)  #SET THE TIME IN WINDOWS MACHINE
    else:
        print 'wrong param'
コード例 #11
0
ファイル: win32registry.py プロジェクト: Avinash-acid/saveenr
def SaveKey( regpath , filename ) :
    assert KeyExists( regpath )
    if ( os.path.exists( filename ) ) :
        os.unlink( filename )
    assert( not os.path.exists( filename ) )

    current_process = win32api.GetCurrentProcess()
    handle_token = win32security.OpenProcessToken( current_process, win32con.TOKEN_ADJUST_PRIVILEGES | win32con.TOKEN_QUERY )
    luid = win32security.LookupPrivilegeValue(None, "SeBackupPrivilege")
    new_privs = ( (luid, win32con.SE_PRIVILEGE_ENABLED), )
    win32security.AdjustTokenPrivileges( handle_token , False, new_privs)

        
    root_key , path = parse_regpath( regpath )
    handle = _winreg.OpenKey( root_key, path )

    try:
        _winreg.SaveKey( handle, filename )
    finally:
        win32security.AdjustTokenPrivileges( handle_token, True, new_privs )
        handle.Close()

    assert( os.path.exists( filename ) )
コード例 #12
0
ファイル: windows.py プロジェクト: kazarin1alex/lit
def AdjustPrivilege(priv, enable = 1):
    # Get the process token.
    flags = win32con.TOKEN_ADJUST_PRIVILEGES | win32con.TOKEN_QUERY
    htoken = win32security.OpenProcessToken(win32api.GetCurrentProcess(), flags)
    # Get the ID for the system shutdown privilege.
    id = win32security.LookupPrivilegeValue(None, priv)
    # Now obtain the privilege for this process.
    # Create a list of the privileges to be added.
    if enable:
        newPrivileges = [(id, win32con.SE_PRIVILEGE_ENABLED)]
    else:
        newPrivileges = [(id, 0)]
    # and make the adjustment.
    win32security.AdjustTokenPrivileges(htoken, 0, newPrivileges)
コード例 #13
0
    def __init__(self):
        super(RweHelper, self).__init__()

        import platform, os
        self.os_system  = platform.system()
        self.os_release = platform.release()
        self.os_version = platform.version()
        self.os_machine = platform.machine()
        self.os_uname   = platform.uname()
        if "windows" == self.os_system.lower():
            win_ver = "win7_" + self.os_machine.lower()
            if ("5" == self.os_release): win_ver = "winxp"
            if logger().DEBUG: logger().log( "[helper] OS: %s %s %s" % (self.os_system, self.os_release, self.os_version) )

        self.use_existing_service = False

        self.win_ver        = win_ver
        self.driver_handle  = None
        self.device_file    = pywintypes.Unicode(DEVICE_FILE)

        # check DRIVER_FILE_PATHS for the DRIVER_FILE_NAME
        self.driver_path    = None
        for path in DRIVER_FILE_PATHS:
            driver_path = os.path.join(path, DRIVER_FILE_NAME)
            if os.path.isfile(driver_path): 
                self.driver_path = driver_path
                if logger().DEBUG: logger().log("[helper] found driver in %s" % driver_path)
        if self.driver_path == None: 
            if logger().DEBUG: logger().log("[helper] RWE Driver Not Found")
            raise DriverNotFound

        c_int_p = POINTER(c_int)

        # enable required SeSystemEnvironmentPrivilege privilege
        privilege = win32security.LookupPrivilegeValue( None, 'SeSystemEnvironmentPrivilege' )
        token = win32security.OpenProcessToken( win32process.GetCurrentProcess(), win32security.TOKEN_READ|win32security.TOKEN_ADJUST_PRIVILEGES )
        win32security.AdjustTokenPrivileges( token, False, [(privilege, win32security.SE_PRIVILEGE_ENABLED)] )
        win32api.CloseHandle( token )
        # import firmware variable API
        try:
            self.GetFirmwareEnvironmentVariable = kernel32.GetFirmwareEnvironmentVariableW
            self.GetFirmwareEnvironmentVariable.restype = c_int
            self.GetFirmwareEnvironmentVariable.argtypes = [c_wchar_p, c_wchar_p, c_void_p, c_int]
            self.SetFirmwareEnvironmentVariable = kernel32.SetFirmwareEnvironmentVariableW
            self.SetFirmwareEnvironmentVariable.restype = c_int
            self.SetFirmwareEnvironmentVariable.argtypes = [c_wchar_p, c_wchar_p, c_void_p, c_int]
        except AttributeError, msg:
            if logger().DEBUG: logger().warn( "G[S]etFirmwareEnvironmentVariableW function doesn't seem to exist" )
            pass
コード例 #14
0
 def hibernate(self, state):
     token = win32security.OpenProcessToken(
         win32api.GetCurrentProcess(),
         win32security.TOKEN_QUERY | win32security.TOKEN_ADJUST_PRIVILEGES)
     shutdown_priv = win32security.LookupPrivilegeValue(
         None, win32security.SE_SHUTDOWN_NAME)
     privs = win32security.AdjustTokenPrivileges(
         token, False,
         [(shutdown_priv, win32security.SE_PRIVILEGE_ENABLED)])
     logging.debug("Privileges before hibernation: %s", privs)
     if windll.powrprof.SetSuspendState(state == 'disk', True, False) != 0:
         logging.info("System was in hibernation state.")
     else:
         logging.error("Error setting system to hibernation state: %d",
                       win32api.GetLastError())
コード例 #15
0
ファイル: utils.py プロジェクト: vaginessa/WindowsExploitTest
def get_all_privs(th):
    privs = win32security.GetTokenInformation(th,
                                              ntsecuritycon.TokenPrivileges)
    for privtuple in privs:
        privs2 = win32security.GetTokenInformation(
            th, ntsecuritycon.TokenPrivileges)
        newprivs = []
        for privtuple2 in privs2:
            if privtuple2[0] == privtuple[0]:
                newprivs.append((privtuple2[0], 2))  # SE_PRIVILEGE_ENABLED
            else:
                newprivs.append((privtuple2[0], privtuple2[1]))

        # Adjust privs
        privs3 = tuple(newprivs)
        win32security.AdjustTokenPrivileges(th, False, privs3)
コード例 #16
0
def enable_privilege(privilege_name):
    success = False
    privilege_id = win32security.LookupPrivilegeValue(None, privilege_name)

    new_privilege = [(privilege_id, win32con.SE_PRIVILEGE_ENABLED)]

    h_token = win32security.OpenProcessToken(win32process.GetCurrentProcess(),
                                             win32security.TOKEN_ALL_ACCESS)

    if h_token:
        success = win32security.AdjustTokenPrivileges(h_token, 0,
                                                      new_privilege)

        close_handle(h_token)

    return success
コード例 #17
0
ファイル: win.py プロジェクト: umutbb/hubble
def elevate_token(th):
    '''
    Set all token privileges to enabled
    '''
    # Get list of privileges this token contains
    privileges = win32security.GetTokenInformation(
        th, win32security.TokenPrivileges)

    # Create a set of all privileges to be enabled
    enable_privs = set()
    for luid, flags in privileges:
        enable_privs.add((luid, win32con.SE_PRIVILEGE_ENABLED))

    # Enable the privileges
    if win32security.AdjustTokenPrivileges(th, 0, enable_privs) == 0:
        raise WindowsError(win32api.FormatMessage(win32api.GetLastError()))  # pylint: disable=undefined-variable
コード例 #18
0
ファイル: System.py プロジェクト: bacgroup/ovd_sources
 def prepareForSessionActions():
     try:
         # Get some privileges to load the hive
         priv_flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY
         hToken = win32security.OpenProcessToken(
             win32api.GetCurrentProcess(), priv_flags)
         backup_privilege_id = win32security.LookupPrivilegeValue(
             None, "SeBackupPrivilege")
         restore_privilege_id = win32security.LookupPrivilegeValue(
             None, "SeRestorePrivilege")
         win32security.AdjustTokenPrivileges(
             hToken, 0,
             [(backup_privilege_id, win32security.SE_PRIVILEGE_ENABLED),
              (restore_privilege_id, win32security.SE_PRIVILEGE_ENABLED)])
     except Exception:
         Logger.exception("Failed to obtain more provilege")
コード例 #19
0
ファイル: util.py プロジェクト: zjp85/QTAF
 def _adjustProcessPrivileges(self):
     """提升权限
     """
     import win32security
     hCurPro = win32process.GetCurrentProcess()
     hToken = win32security.OpenProcessToken(
         hCurPro,
         win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY)
     luid = win32security.LookupPrivilegeValue(None,
                                               win32security.SE_DEBUG_NAME)
     if luid:
         newState = [
             (luid, win32security.SE_PRIVILEGE_ENABLED),
         ]
         win32security.AdjustTokenPrivileges(hToken, 0, newState)
     win32api.CloseHandle(hToken)
コード例 #20
0
ファイル: powersup.py プロジェクト: TinyHTPC/xbmc-dev-repo
def win_shutdown():
    """ Shutdown Windows system, never returns
    """
    try:
        import win32security
        import win32api
        import ntsecuritycon

        flags = ntsecuritycon.TOKEN_ADJUST_PRIVILEGES | ntsecuritycon.TOKEN_QUERY
        htoken = win32security.OpenProcessToken(win32api.GetCurrentProcess(), flags)
        id_ = win32security.LookupPrivilegeValue(None, ntsecuritycon.SE_SHUTDOWN_NAME)
        newPrivileges = [(id_, ntsecuritycon.SE_PRIVILEGE_ENABLED)]
        win32security.AdjustTokenPrivileges(htoken, 0, newPrivileges)
        win32api.InitiateSystemShutdown("", "", 30, 1, 0)
    finally:
        os._exit(0)
コード例 #21
0
def AdjustPrivilege(priv, enable=1):
    # Get process token
    flags = TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY
    htoken = win32security.OpenProcessToken(win32api.GetCurrentProcess(),
                                            flags)
    # Get the ID for the system shutdown privilege
    id = win32security.LookupPrivilegeValue(
        None, priv)  # params = (systemName, privilegeName)
    # Obtain the privilege for this process
    # Create a list of privileges to be added
    if enable:
        newPrivileges = [(id, SE_PRIVILEGE_ENABLED)]
    else:
        newPrivileges = [(id, 0)]
    # make the privilege adjustment
    win32security.AdjustTokenPrivileges(htoken, 0, newPrivileges)
コード例 #22
0
def patch_current_process_privileges():
    """
    Patch the current process to acquire the SeSystemEnvironmentPrivilege privileges,
    it is discouraged to use it in production, this function exists only for use from ipython.
    Use the privileges() function instead when possible.
    :return: Patch object that can be reverted.
    """
    process = win32process.GetCurrentProcess()
    token = win32security.OpenProcessToken(
        process,
        win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY)
    luid = win32security.LookupPrivilegeValue(
        None, win32con.SE_SYSTEM_ENVIRONMENT_NAME)
    privilege_enable = [(luid, win32security.SE_PRIVILEGE_ENABLED)]
    privilege_disable = [(luid, 0)]
    win32security.AdjustTokenPrivileges(token, False, privilege_enable)

    return Patch(token, privilege_disable)
コード例 #23
0
ファイル: main.py プロジェクト: dzmuh97/LastChaosBot
def get_extra_privs():
    th = win32security.OpenProcessToken(
        win32api.GetCurrentProcess(),
        win32con.TOKEN_ADJUST_PRIVILEGES | win32con.TOKEN_QUERY)
    privs = win32security.GetTokenInformation(th,
                                              ntsecuritycon.TokenPrivileges)
    newprivs = []

    for privtuple in privs:
        if privtuple[0] == win32security.LookupPrivilegeValue(None, "SeBackupPrivilege")\
            or privtuple[0] == win32security.LookupPrivilegeValue(None, "SeDebugPrivilege")\
            or privtuple[0] == win32security.LookupPrivilegeValue(None, "SeSecurityPrivilege"):
            print("Added privilege " + str(privtuple[0]))
            # privtuple[1] = 2 # tuples are immutable.  WHY?!
            newprivs.append((privtuple[0], 2))  # SE_PRIVILEGE_ENABLED
        else:
            newprivs.append((privtuple[0], privtuple[1]))
    privs = tuple(newprivs)
    str(win32security.AdjustTokenPrivileges(th, False, privs))
コード例 #24
0
def shutdown(off_pc=19):
    import time

    while time.localtime().tm_hour != off_pc:
        time.sleep(60)  # Ожидание 1 минута

    import sys

    if sys.platform == 'win32':
        import ctypes
        import win32security
        import win32api
        import winerror

        # Try to enable the required privileges to change the power state
        privilege_flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY
        token_handle = win32security.OpenProcessToken(
            win32api.GetCurrentProcess(), privilege_flags)
        privilege_id = win32security.LookupPrivilegeValue(
            None, win32security.SE_SHUTDOWN_NAME)

        # Does the user have permission to change the power state?
        win32security.AdjustTokenPrivileges(
            token_handle, 0,
            [(privilege_id, win32security.SE_PRIVILEGE_ENABLED)])

        if ctypes.GetLastError() != winerror.ERROR_SUCCESS:
            print(ctypes.WinError(), file=sys.stderr)
            quit()

        user32 = ctypes.WinDLL('user32')

        # https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-exitwindowsex
        user32.ExitWindowsEx(0x00000001, 0x00000000)

        if ctypes.GetLastError() != winerror.ERROR_SUCCESS:
            print(ctypes.WinError(), file=sys.stderr)
            quit()

    else:
        import os
        os.system('sudo shutdown now')
コード例 #25
0
    def __init__(self):
        # enable required SeSystemEnvironmentPrivilege privilege
        privilege = win32security.LookupPrivilegeValue( None, 'SeSystemEnvironmentPrivilege' )
        token = win32security.OpenProcessToken( win32process.GetCurrentProcess(), win32security.TOKEN_READ|win32security.TOKEN_ADJUST_PRIVILEGES )
        win32security.AdjustTokenPrivileges( token, False, [(privilege, win32security.SE_PRIVILEGE_ENABLED)] )
        win32api.CloseHandle( token )

        # get windows firmware variable API
        try:
            self._GetFirmwareEnvironmentVariable = kernel32.GetFirmwareEnvironmentVariableW
            self._GetFirmwareEnvironmentVariable.restype = c_int
            self._GetFirmwareEnvironmentVariable.argtypes = [c_wchar_p, c_wchar_p, c_void_p, c_int]
            self._SetFirmwareEnvironmentVariable = kernel32.SetFirmwareEnvironmentVariableW
            self._SetFirmwareEnvironmentVariable.restype = c_int
            self._SetFirmwareEnvironmentVariable.argtypes = [c_wchar_p, c_wchar_p, c_void_p, c_int]
            self._SetFirmwareEnvironmentVariableEx = kernel32.SetFirmwareEnvironmentVariableExW
            self._SetFirmwareEnvironmentVariableEx.restype = c_int
            self._SetFirmwareEnvironmentVariableEx.argtypes = [c_wchar_p, c_wchar_p, c_void_p, c_int, c_int]
        except AttributeError:
            logging.warn( "Some get/set functions don't't seem to exist" )
コード例 #26
0
def RunAsStandardUser(command_line, env, cwd, timeout):
    """Runs a command as non-elevated logged-on user.

    Args:
        command_line: The command line string, including arguments, to run.
        env: Environment variables for child process, None to inherit.
        cwd: Working directory for child process, None to inherit from parent.
        timeout: How long in seconds should wait for child process.

    Returns:
        (pid, exit_code, sdtout, stderr) tuple.

    Raises:
        ImpersonationError: when impersonation failed.
    """
    logging.info('Running "%s" as the logon user.', command_line)

    # Adjust current process to be part of the trusted computer base.
    current_process_token = win32security.OpenProcessToken(
        win32api.GetCurrentProcess(), win32security.TOKEN_ALL_ACCESS)
    tcb_privilege_flag = win32security.LookupPrivilegeValue(
        None, win32security.SE_TCB_NAME)
    se_enable = win32security.SE_PRIVILEGE_ENABLED
    win32security.AdjustTokenPrivileges(current_process_token, 0,
                                        [(tcb_privilege_flag, se_enable)])

    active_session_id = proc_util.GetActiveSessionID()
    if not active_session_id:
        raise ImpersonationError('Cannot find active logon session.')

    try:
        logon_user_token = win32ts.WTSQueryUserToken(active_session_id)
    except pywintypes.error as err:
        if err.winerror == winerror.ERROR_NO_TOKEN:
            raise ImpersonationError('No user is logged on.')
        else:
            raise ImpersonationError('Failed to get user token: %s' % err)

    return _RunAsOnWindowStationDesktop(command_line, logon_user_token,
                                        'WinSta0', 'default', env, cwd,
                                        timeout)
コード例 #27
0
    def get_app_info():
        try:
            import win32gui
            # TODO: or maybe win32gui.GetFocus() ?
            hwnd = win32gui.GetForegroundWindow()

            # Request privileges to enable "debug process", so we can
            # later use PROCESS_VM_READ, retardedly required to
            # GetModuleFileNameEx()
            import win32security, win32con, win32process, win32api
            priv_flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY
            hToken = win32security.OpenProcessToken(
                win32api.GetCurrentProcess(), priv_flags)
            # enable "debug process"
            privilege_id = win32security.LookupPrivilegeValue(
                None, win32security.SE_DEBUG_NAME)
            old_privs = win32security.AdjustTokenPrivileges(
                hToken, 0,
                [(privilege_id, win32security.SE_PRIVILEGE_ENABLED)])

            # Open the process, and query it's filename
            processid = win32process.GetWindowThreadProcessId(hwnd)
            pshandle = win32api.OpenProcess(
                win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ,
                False, processid[1])
            exename = win32process.GetModuleFileNameEx(pshandle, 0)

            # clean up
            win32api.CloseHandle(pshandle)
            win32api.CloseHandle(hToken)

            return {
                "appName": exename,
                "windowTitle": win32gui.GetWindowText(hwnd),
                "url": None,
                "idleTime": None
            }

        except Exception, e:
            print e
            return None
コード例 #28
0
ファイル: windows.py プロジェクト: kazarin1alex/lit
def elevate():
    import os
    import win32security

    pid = os.getpid()
    phandle = win32api.OpenProcess(win32con.PROCESS_ALL_ACCESS, False, pid)
    token_handle=win32security.OpenProcessToken(phandle,win32con.TOKEN_ALL_ACCESS)
    if token_handle==0:
        print('提取令牌失败')
    else:
        Luid=win32security.LookupPrivilegeValue(None,win32security.SE_DEBUG_NAME)
        if Luid==0:
            print('Luid获取失败')
        else:
            new_token_pricileges=[(Luid,win32security.SE_PRIVILEGE_ENABLED)]
            i=win32security.AdjustTokenPrivileges(token_handle,0,new_token_pricileges)
            if i==0:
                print('提权失败')
            else:
                print('succ')
    win32api.CloseHandle(token_handle)
コード例 #29
0
    def __init__(self):
        # enable required SeSystemEnvironmentPrivilege privilege
        privilege = win32security.LookupPrivilegeValue(
            None, 'SeSystemEnvironmentPrivilege')
        token = win32security.OpenProcessToken(
            win32process.GetCurrentProcess(),
            win32security.TOKEN_READ | win32security.TOKEN_ADJUST_PRIVILEGES)
        win32security.AdjustTokenPrivileges(
            token, False, [(privilege, win32security.SE_PRIVILEGE_ENABLED)])
        win32api.CloseHandle(token)

        kernel32 = windll.kernel32
        ntdll = windll.ntdll

        # import firmware variable APIs
        try:
            self._GetSystemFirmwareTable = kernel32.GetSystemFirmwareTable
            self._GetSystemFirmwareTable.restype = c_int
            self._GetSystemFirmwareTable.argtypes = [
                c_int, c_int, c_void_p, c_int
            ]

            self._NtQuerySystemInformation = ntdll.NtQuerySystemInformation

            # NTSTATUS WINAPI NtQuerySystemInformation(
            #     _In_      SYSTEM_INFORMATION_CLASS SystemInformationClass,
            #     _Inout_   PVOID                    SystemInformation,
            #     _In_      ULONG                    SystemInformationLength,
            #     _Out_opt_ PULONG                   ReturnLength
            # );
            self._NtQuerySystemInformation.restype = c_ulong
            self._NtQuerySystemInformation.argtypes = [
                c_int, c_void_p, c_ulong,
                POINTER(c_ulong)
            ]

        except AttributeError:
            logging.error(
                "GetSystemFirmwareTable function doesn't seem to exist")
            pass
コード例 #30
0
ファイル: sleeper.py プロジェクト: yutiansut/cronner
def _windows_sleep():
    '''Put a Windows computer to sleep.'''
    # This function was taken from:  http://permalink.gmane.org/gmane.comp.python.windows/7382

    #
    # Enable the SeShutdown privilege (which must be present in your
    # token in the first place)
    #
    priv_flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY
    htoken = win32security.OpenProcessToken(win32api.GetCurrentProcess(),
                                            priv_flags)
    priv_id = win32security.LookupPrivilegeValue(
        None, win32security.SE_SHUTDOWN_NAME)
    win32security.AdjustTokenPrivileges(
        htoken, 0, [(priv_id, win32security.SE_PRIVILEGE_ENABLED)])

    #
    # Params:
    # True=> Standby; False=> Hibernate
    # True=> Force closedown; False=> Don't force
    #
    ctypes.windll.kernel32.SetSystemPowerState(True, True)