最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

如何使用Python实现对Windows的解锁屏幕

业界 admin 4浏览 0评论

Python解锁Windows屏幕

需要在Windows设置

步骤1: 进入BIOS/UEFI设置
重启计算机:

在计算机启动时,按下 Esc 键,通常会出现一个菜单。
进入BIOS设置:

在菜单中,按 F10 键进入 BIOS 设置。
步骤2: 禁用安全引导
找到安全引导选项:

在 BIOS 设置中,使用箭头键导航到“安全”或“启动”选项卡(具体名称可能因惠普笔记本型号而异)。
禁用安全引导:

找到“安全引导”(Secure Boot)选项,将其设置为“禁用”(Disabled)。
保存更改并退出:

按 F10 键保存更改并退出 BIOS 设置。
步骤3: 以管理员身份运行命令提示符
打开命令提示符:

在Windows中,右键点击“开始”按钮,选择“Windows PowerShell(管理员)”或“命令提示符(管理员)”。
输入命令:

输入以下命令并按回车:
cmd
bcdedit /set testsigning on
步骤4: 重启计算机
运行完命令后,重启计算机以使更改生效。
步骤5: 确认更改

使用Python代码

import pywinio
import time
import atexit

KBC_KEY_CMD = 0x64
KBC_KEY_DATA = 0x60

g_winio = None


def get_winio():
    global g_winio
    if g_winio is None:
        g_winio = pywinio.WinIO()
        atexit.register(cleanup)

    return g_winio


def cleanup():
    global g_winio
    g_winio = None


def wait_for_buffer_empty():
    winio = get_winio()
    dwRegVal = 0x02
    while (dwRegVal & 0x02):
        dwRegVal = winio.get_port_byte(KBC_KEY_CMD)


def key_down(scancode):
    winio = get_winio()
    wait_for_buffer_empty()
    winio.set_port_byte(KBC_KEY_CMD, 0xd2)
    wait_for_buffer_empty()
    winio.set_port_byte(KBC_KEY_DATA, scancode)


def key_up(scancode):
    winio = get_winio()
    wait_for_buffer_empty()
    winio.set_port_byte(KBC_KEY_CMD, 0xd2)
    wait_for_buffer_empty()
    winio.set_port_byte(KBC_KEY_DATA, scancode | 0x80)


def key_press(scancode, press_time=0.2):
    key_down(scancode)
    time.sleep(press_time)
    key_up(scancode)


VK_CODE = {
    '1': 0x02,
    '2': 0x03,
    '3': 0x04,
    '4': 0x05,
    '5': 0x06,
    '6': 0x07,
    '7': 0x08,
    '8': 0x09,
    '9': 0x0A,
    '0': 0x0B,
    'a': 0x1E,
    'b': 0x30,
    'c': 0x2E,
    'd': 0x20,
    'e': 0x12,
    'f': 0x21,
    'g': 0x22,
    'h': 0x23,
    'i': 0x17,
    'j': 0x24,
    'k': 0x25,
    'l': 0x26,
    'm': 0x32,
    'n': 0x31,
    'o': 0x18,
    'p': 0x19,
    'q': 0x10,
    'r': 0x13,
    's': 0x1F,
    't': 0x14,
    'u': 0x16,
    'v': 0x2F,
    'w': 0x11,
    'x': 0x2D,
    'y': 0x15,
    'z': 0x2C,
    'backspace': 0x0E,
    'clear': 0x0C,
    'enter': 0x0D,
    'shift': 0x10,
    'ctrl': 0x11,
    'alt': 0x12,
    'caps_lock': 0x3A,
    '-': 0x0C,
    '=': 0x0D,
    '[': 0x1A,
    ']': 0x1B,
    '\\': 0x2B,
    ';': 0x27,
    "'": 0x28,
    '`': 0x29,
    ',': 0x33,
    '.': 0x34,
    '/': 0x35,
}


def key_input(str):
    for c in str:
        try:
            key_press(VK_CODE[c])
        except:
            key_press(0x3A)
            time.sleep(0.5)
            key_press(VK_CODE[c.lower()])
            key_press(0x3A)


if __name__ == "__main__":
    pwd = "123456"  # 输入密码
    key_press(0x1C)  # Enter 键
    key_input(pwd)
    time.sleep(2)
    key_press(0x1C)  # Enter 键
```python


Python解锁Windows屏幕

需要在Windows设置

步骤1: 进入BIOS/UEFI设置
重启计算机:

在计算机启动时,按下 Esc 键,通常会出现一个菜单。
进入BIOS设置:

在菜单中,按 F10 键进入 BIOS 设置。
步骤2: 禁用安全引导
找到安全引导选项:

在 BIOS 设置中,使用箭头键导航到“安全”或“启动”选项卡(具体名称可能因惠普笔记本型号而异)。
禁用安全引导:

找到“安全引导”(Secure Boot)选项,将其设置为“禁用”(Disabled)。
保存更改并退出:

按 F10 键保存更改并退出 BIOS 设置。
步骤3: 以管理员身份运行命令提示符
打开命令提示符:

在Windows中,右键点击“开始”按钮,选择“Windows PowerShell(管理员)”或“命令提示符(管理员)”。
输入命令:

输入以下命令并按回车:
cmd
bcdedit /set testsigning on
步骤4: 重启计算机
运行完命令后,重启计算机以使更改生效。
步骤5: 确认更改

使用Python代码

import pywinio
import time
import atexit

KBC_KEY_CMD = 0x64
KBC_KEY_DATA = 0x60

g_winio = None


def get_winio():
    global g_winio
    if g_winio is None:
        g_winio = pywinio.WinIO()
        atexit.register(cleanup)

    return g_winio


def cleanup():
    global g_winio
    g_winio = None


def wait_for_buffer_empty():
    winio = get_winio()
    dwRegVal = 0x02
    while (dwRegVal & 0x02):
        dwRegVal = winio.get_port_byte(KBC_KEY_CMD)


def key_down(scancode):
    winio = get_winio()
    wait_for_buffer_empty()
    winio.set_port_byte(KBC_KEY_CMD, 0xd2)
    wait_for_buffer_empty()
    winio.set_port_byte(KBC_KEY_DATA, scancode)


def key_up(scancode):
    winio = get_winio()
    wait_for_buffer_empty()
    winio.set_port_byte(KBC_KEY_CMD, 0xd2)
    wait_for_buffer_empty()
    winio.set_port_byte(KBC_KEY_DATA, scancode | 0x80)


def key_press(scancode, press_time=0.2):
    key_down(scancode)
    time.sleep(press_time)
    key_up(scancode)


VK_CODE = {
    '1': 0x02,
    '2': 0x03,
    '3': 0x04,
    '4': 0x05,
    '5': 0x06,
    '6': 0x07,
    '7': 0x08,
    '8': 0x09,
    '9': 0x0A,
    '0': 0x0B,
    'a': 0x1E,
    'b': 0x30,
    'c': 0x2E,
    'd': 0x20,
    'e': 0x12,
    'f': 0x21,
    'g': 0x22,
    'h': 0x23,
    'i': 0x17,
    'j': 0x24,
    'k': 0x25,
    'l': 0x26,
    'm': 0x32,
    'n': 0x31,
    'o': 0x18,
    'p': 0x19,
    'q': 0x10,
    'r': 0x13,
    's': 0x1F,
    't': 0x14,
    'u': 0x16,
    'v': 0x2F,
    'w': 0x11,
    'x': 0x2D,
    'y': 0x15,
    'z': 0x2C,
    'backspace': 0x0E,
    'clear': 0x0C,
    'enter': 0x0D,
    'shift': 0x10,
    'ctrl': 0x11,
    'alt': 0x12,
    'caps_lock': 0x3A,
    '-': 0x0C,
    '=': 0x0D,
    '[': 0x1A,
    ']': 0x1B,
    '\\': 0x2B,
    ';': 0x27,
    "'": 0x28,
    '`': 0x29,
    ',': 0x33,
    '.': 0x34,
    '/': 0x35,
}


def key_input(str):
    for c in str:
        try:
            key_press(VK_CODE[c])
        except:
            key_press(0x3A)
            time.sleep(0.5)
            key_press(VK_CODE[c.lower()])
            key_press(0x3A)


if __name__ == "__main__":
    pwd = "123456"  # 输入密码
    key_press(0x1C)  # Enter 键
    key_input(pwd)
    time.sleep(2)
    key_press(0x1C)  # Enter 键
```python


发布评论

评论列表 (0)

  1. 暂无评论