OS X拦截密码表单元素的键盘事件

时间:2014-01-25 21:17:22

标签: c macos osx-mavericks cgeventtap

我目前正在创建一个c程序,它会计算我在一天内按下的所有按键并按数量对按键类型进行排序,这样我就能分辨出哪些按键最常按。它更像是一个副项目而不是其他任何东西,但我对我的程序似乎无法拦截任何密码字段输入这一事实感到恼火。我想这是件好事,但我花了好几个小时看文档并试图想办法如何做到这一点。我不是想创建任何类型的恶意软件。有没有解决的办法?我的程序以root身份运行。我使用ApplicationServices框架和CGEventRef以及CGEventTapCreate功能。我应该使用不同的框架或结构吗?此外,kCGHIDEventTapkCGSessionEventTapkCGAnnotatedSessionEventTap之间是否存在差异?我尝试过使用它们,但它似乎对我的程序没有任何影响。

我在OS X 10.9上运行它

更新 显然我无法捕捉到终端的击键,这是我花费大部分时间在笔记本电脑上的地方。这是一个问题。

1 个答案:

答案 0 :(得分:2)

您想要的是相当复杂的并且需要内核扩展。进程间通信也不是一件容易的事。看看logKext,特别是logKext.cpp。该项目实际上将击键记录到加密文件中。你应该能够从中获取所需的一切。