【问题标题】:How can you read keystrokes when the python program isn't in the foreground?当 python 程序不在前台时,如何读取击键?
【发布时间】:2010-11-06 11:09:06
【问题描述】:

我正在尝试分析我在下个月的击键,并想编写一个简单的程序来执行此操作。我不想准确地记录命令,而只是在我的按键上生成一般统计信息。

我最喜欢用 python 编码,但我愿意接受其他建议。这可能吗,如果可以,我应该看哪些 python 模块?这已经完成了吗?

我使用的是 OSX,但也有兴趣在 Ubuntu 机器和 Windows XP 上执行此操作。

【问题讨论】:

  • 你检查过pykeylogger吗?
  • 我尝试使用它,发现它需要很多我的安装中不存在的库。
  • 下载需要的库有什么问题?
  • 您运行的是 Windows 吗?许多网站会用键盘记录器感染你的机器。您是否尝试过关闭防病毒软件?
  • 我希望你是在开玩笑 :) 我想收集有关我打字的一般统计数据,特别是不记录所有内容,因为我肯定会输入密码。

标签: python keyboard background keylogger


【解决方案1】:

看来你需要http://patorjk.com/keyboard-layout-analyzer/

这个方便的程序将分析一段文本并告诉您手指必须移动多远才能输入它,然后推荐您的最佳布局。

要回答您最初的问题,在 Linux 上,您可以从 /dev/event* 中读取本地键盘、鼠标和操纵杆事件。我相信你可以例如简单地cat /dev/event0 > keylogger。这些事件是struct input_event 的实例。另见http://www.linuxjournal.com/article/6429

Python 的struct 模块是解析二进制数据的便捷方式。

对于 OSX,请查看 logkext 的源代码。 http://code.google.com/p/logkext/

【讨论】:

  • 嗯,看起来很有趣。所以我应该记录我的密钥流然后粘贴在那里?我试试看,谢谢。
【解决方案2】:

除非您打算自己编写界面,否则您将需要一些库,因为正如其他发帖人所指出的,您需要访问由桌面环境管理的低级按键事件。

在 Windows 上,PyHook 库将为您提供所需的功能。

在 Linux 上,您可以使用 Python X Library(假设您正在运行图形桌面)。

这两个都被pykeylogger使用了,效果很好。您最好下载源代码(参见例如 pyxhook.py)以查看如何捕获按键事件的具体示例。修改它以对键的分布求和而不是记录顺序应该很简单。

【讨论】:

    【解决方案3】:

    由于当前 X 服务器的 Record 扩展似乎已损坏,因此在 Linux 上使用 pykeylogger 并没有真正的帮助。请查看evdev 及其demo 函数。解决方案更糟糕,但它至少可以工作。

    归根结底是为设备设置一个挂钩

    import evdev
    keyboard_location = '/dev/input/event1'  # get the correct one from HAL or so
    keyboard_device = evdev.Device(keyboard_location)
    

    然后,定期轮询设备,获取按键状态等信息:

    keyboard_device.poll()
    

    【讨论】:

      【解决方案4】:

      根据您要收集的统计信息,也许您不必自己编写;程序Workrave 是一个程序,通过监视键盘和鼠标活动来提醒您小憩。它保留了您可能使用的此活动的统计信息(除非您想要非常详细/更具体的统计信息)。在最坏的情况下,您可以查看源代码 (C++) 以了解它是如何完成的。

      【讨论】:

      • 很有趣,我去看看。我基本上想知道当我切换到 dvorak 时我是否真的得到了一些好处。
      • 呃,更改键盘布局将如何影响您键入的键或键入它们的频率?
      • 我想确保我输入的密钥遵循一般的英语发行版,这样我才能从 Dvorak 中受益。我编程了很多,但我的论文是,当你考虑到我的电子邮件写作、SO 发布等因素时,我仍然会得到一个常规的英语分发。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2017-12-04
      • 1970-01-01
      相关资源
      最近更新 更多