Skip to main content

用于安全密码输入的 pinentry 的 pythonic 包装器

项目描述

PynEntry

pinentry的pythonic包装器

主要用于练习元编程

归功于mijikai的一个工作示例

需要安装 pinentry

方便方法:

  • 快速简单地从用户那里获取密码/pin:

get_pin(description=None, prompt=None, timeout=0, display=None, global_grab=True)

  • 显示并获得用户的确认:

get_confirm(description=None, timeout=0, display=None, global_grab=True)

  • 向用户显示消息:

show_message(description=None, timeout=0, display=None, global_grab=True)

PynEntry 类

上述方法实例化并配置一个 PynEntry 实例,可以通过属性手动调用和配置

PynEntry 类支持以下属性:

  • description:设置要显示的描述性文本
  • prompt:设置密码短语之前的文本(例如:“PASS:”)
  • title:设置窗口标题
  • ok_text:设置“确定”按钮中显示的文本
  • cancel_text:设置“取消”按钮中显示的文本
  • error_text:在重新提示之前设置文本以防出错(每次get_pin()调用后清除)
  • tty_name:选择要使用的 tty(自动设置)
  • tty_type:更改要使用的 tty 类型。
  • locale:设置要使用的语言环境(自动设置为当前操作系统语言环境)

注意:PynEntry 类使用 $PATH 变量来查找 pinentry 可执行文件,您可以在初始化时手动指定可执行文件的位置,如下所示:PynEntry(executable='/path/to/pinentry')

PynEntry 最好用作上下文管理器,以便在您完成后自动终止 pinentry 进程。

例子:

import pynentry
pynentry.show_message('Hello there!')

with pynentry.PynEntry() as p:
    p.description = 'Enter a password.\n Choose Wisely!'
    p.prompt = 'PASS>'
    try:
        passwd = p.get_pin()
    except pynentry.PinEntryCancelled:
        print('Cancelled?! Goodbye.')
        exit()
    p.ok_text = 'yep!'
    p.cancel_text = 'nope!'
    p.description = f'CAN YOU CONFIRM YOUR SUPER SECRET PASSWORD IS {passwd}?'
    if p.get_confirm():
            print(f'password {passwd} saved!')
    else:
            print(f'Too bad, so sad')

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pynentry-0.1.6.tar.gz (5.0 kB 查看哈希)

已上传 source

内置分布

pynentry-0.1.6-py3-none-any.whl (5.3 kB 查看哈希)

已上传 py3