前言
相信有些人也看过一些渗透,邮件伪造然后钓鱼这个在渗透中也是经典技巧了,那么邮件伪造又是如何运作的呢?下面的文章将会为你揭示邮件伪造,看完这篇文章,你会发现,原来就是这样。
邮件伪造原理
利用的是SMTP协议,因为在SMTP协议里面,是不需要身份认证的,也就是邮件发送者和邮件显示的发送人不一定要一致,那为什么我们平时发送的邮件的邮件发送人和显示的发送人都是一致的呢?这是邮件服务商人为要求的,163,qq邮箱都是如此
处理流程



这些只是代码之前的前奏,下面开始我们的工具编写
代码编写
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
   | # -*- coding: utf-8 -*- ''' Program:邮件伪造 Function:伪造邮件发送工具   Version:Python3.6 Time:2017/10/13 Author:Walks 个人博客:http://www.bywalks.com '''       import smtplib   import email.mime.multipart   import email.mime.text     #建立邮件对象   msg = email.mime.multipart.MIMEMultipart()   #添加数据,来自哪,去哪 msg['Subject'] = u'发送asd邮件时设置的标题asd'   msg['From'] = '[email protected]'   msg['To'] = '[email protected]'    content = "你好啊今asdasda好日子,所以西乡说些阿萨德asdasd事情阿斯达所阿斯达所大所大大所大库拉索多拉还是打款哈手机打开哈金士顿哈见到过巴克斯降本增效变成你们准备下次找你没错吧红烧冬瓜 。"       txt = email.mime.text.MIMEText(content,'text','utf-8')     msg.attach(txt)  # 将多个子部分进行组合     #防出错   try:           smtp = smtplib.SMTP()         # 连接到服务器         smtp.connect('smtp.163.com', '25')         # 用户名密码登录,密码为163邮箱的授权码         smtp.login('[email protected]', 'XXX')         # 发送邮件          smtp.sendmail('[email protected]', ['[email protected]'], msg.as_string())          smtp.quit()           print('邮件发送成功email has send out !')   except Exception as e:       print(e)
   | 
 
逐行解析
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
   | # -*- coding: utf-8 -*- ''' Program:邮件伪造 Function:伪造邮件发送工具   Version:Python3.6 Time:2017/10/13 Author:Walks 个人博客:http://www.bywalks.com '''     #导入两个库,用来发送邮件,multipart用来构造邮件,带附件的 import smtplib   import email.mime.multipart   import email.mime.text     #建立邮件对象   msg = email.mime.multipart.MIMEMultipart()   #添加数据,来自哪,去哪 msg['Subject'] = u'发送asd邮件时设置的标题asd'  #邮件显示的发送人  msg['From'] = '[email protected]'   #接受地 msg['To'] = '[email protected]'  #发送的内容   content = "你好啊今asdasda好日子,所以西乡说些阿萨德asdasd事情阿斯达所阿斯达所大所大大所大库拉索多拉还是打款哈手机打开哈金士顿哈见到过巴克斯降本增效变成你们准备下次找你没错吧红烧冬瓜 。"       txt = email.mime.text.MIMEText(content,'text','utf-8')    # 将多个子部分进行组合  msg.attach(txt)       #防出错   try:           smtp = smtplib.SMTP()         # 连接到服务器         smtp.connect('smtp.163.com', '25')         # 用户名密码登录,密码为163邮箱的授权码,自己设置的         smtp.login('[email protected]', 'XXX')         # 发送邮件(发送地,接受地,内容) 第二个参数必须为列表         smtp.sendmail('[email protected]', ['[email protected]'], msg.as_string())          #退出         smtp.quit()           print('邮件发送成功email has send out !')   except Exception as e:     #打印出错原因,可以查看出错代码       print(e)
   | 
 
两张成功图。这里为什么会显示代发,上面也说过了,邮件服务商要求,那么我们找一个小服务商是不是就行了?
 
  
         
        
            
                
                    
                        Author:
                        Bywalks
                    
                
                
                    
                        Permalink:
                        http://bywalks.com/2017/10/20/python3-study-04/
                    
                
                
                    
                        License:
                        Copyright (c) 2022 CC-BY-NC-4.0 LICENSE
                    
                
                
                     
                         Slogan:
                         Do you believe in DESTINY?