捉鳖神技 - 如何逆推使用者意图 (实作篇)

由於前一篇文章发文後才发现还没写完 ....
/images/emoticon/emoticon10.gif
逆推使用者意图,就是要搭配监控才会更完整,这篇将介绍如何快速做出监控键盘及滑鼠的范例;後续的文章会推出实战专题来搭配GUI上的相关变化应用。

实作开始:

  1. 安装pynput 模组
pip3 install pynput
  1. 汇入模组
In [5]: from pynput.mouse import Button, Controller
  1. 测试获取滑鼠座标 (手动)
In [6]: mouse = Controller()
In [7]: # 获得目前滑鼠座标
In [8]: print(f"current Mouse Position: {mouse.position}")
Out[8]: current Mouse Position: (1027, 440)

[实战] 监控滑鼠座标
使用pynput 监控目前的滑鼠是如何被操作的, 时间自订

# mouse monitoring
from pynput.mouse import Listener
import time, sys

def moveTo(x, y):
 print(f"moveTo: ({x}, {y})")


def click(x, y, button, is_press):
 print(f"Mouse button: {button} in ({x}, {y}) {'press' if is_press else 'release'}")


def scroll(x1, y1, x2, y2):
 if x2:
  print(f"scroll from ({x1}, {y1}) into { 'right' if x2 > 0 else 'left'}")
 else:
  print(f"scroll from ({x1}, {y1}) into { 'buttom' if y2 > 0 else 'upper'}")

def main(duration):
    listener = Listener(
    on_move=moveTo,
    on_click=click,
    on_scroll=scroll)
    print("Test Start")
    listener.start()
    time.sleep(duration)
    listener.stop()
    print("Test Finish")


if __name__ == '__main__':
    timer = int(sys.argv[1])
    main(timer)

效果如下


[实战] 监控键盘事件
使用listener 的方式去监控键盘事件,监控时间一样是自订

from pynput.keyboard import Key, Listener
import time, sys

def on_press(key):
    print(f"Press: {key.char if hasattr(key, 'char') else key.name}")

def on_release(key):
 print(f"release: {key.char if hasattr(key, 'char') else key.name}")


def main(duration):
    global listener
    listener = Listener(on_press=on_press, on_release=on_release)
    print("Test Start")
    listener.start()
    time.sleep(5)
    listener.stop()
    print("Test End")


if __name__ == '__main__':
    timer = int(sys.argv[1])
    main(timer)

效果如下

结论:
使用这个模组就可以轻松达到监控滑鼠及键盘的行为,同时也可以记录在档案中,供後续查验使用

参考资料:


<<:  Day 23 何谓黑帽、白帽 SEO?

>>:  LeetCode解题 Day23

[第二十八只羊] 迷雾森林顶尖对决 登入介面套版

天亮了 昨晚是平安夜 关於迷雾森林故事 香水 在场本来许多animal们牵着喜鹊儿的翅膀小手跳舞 都...

[第26天]30天搞懂Python-直方图

前言 使用numpy及matplotlib函式库实作直方图。 程序 import numpy as ...

Day28 资安小结 - 红队与蓝队 ( 内附名字由来 )

打了这麽多的技术文,突然发现我好像都没有介绍到资安的基础,所以最後的这 3 篇文章可能就是做个资安的...

【後转前要多久】# Day28 Angular - 四种资料系结 Binding

Angular产生的档案实在太多辣,我们先专注在以下三个档案: app.component.css ...

[DAY 10] _软件实现I2C协议

因为我是用控制high、low,我接下来就贴上部分程序来个别说明,首先要先写上基本时序的规范,协议的...