Python3學習系列(四):編寫屬於自己的郵件偽造工具

前言:

相信有些人也看過一些滲透,郵件偽造然後釣魚這個在滲透中也是經典技巧了,那麼郵件偽造又是如何運作的呢?下面的文章將會為你揭示郵件偽造,看完這篇文章,你會發現,原來就是這樣。

目錄:

  • 0x01:郵件偽造原理
  • 0x02:處理流程
  • 0x03:代碼實現
  • 0x04:逐行解析

0x01 郵件偽造原理

利用的是SMTP協議,因為在SMTP協議裡面,是不需要身份認證的,也就是郵件發送者和郵件顯示的發送人不一定要一致,那為什麼我們平時發送的郵件的郵件發送人和顯示的發送人都是一致的呢?這是郵件服務商人為要求的,163,qq郵箱都是如此

0x02 處理流程

  • 註冊個郵箱,這裡用網易163

  • 登陸郵箱
  • 進入設置

  • 打開SMTP服務

  • 設置授權碼

這些只是代碼之前的前奏,下面開始我們的工具編寫

0x03 代碼編寫

# -*- coding: utf-8 -*-Program:郵件偽造Function:偽造郵件發送工具 Version:Python3.6Time:2017/10/13Author: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] = 123asds@163.com msg[To] = xxx@qq.com 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(bywalkss@163.com, XXX) # 發送郵件 smtp.sendmail(bywalkss@163.com, [739327037@qq.com], msg.as_string()) smtp.quit() print(郵件發送成功email has send out !) except Exception as e: print(e)

0x04 逐行解析

# -*- coding: utf-8 -*-Program:郵件偽造Function:偽造郵件發送工具 Version:Python3.6Time:2017/10/13Author: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] = 123asds@163.com #接受地msg[To] = XXX@qq.com #發送的內容 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(bywalkss@163.com, XXX) # 發送郵件(發送地,接受地,內容) 第二個參數必須為列表 smtp.sendmail(bywalkss@163.com, [XXX@qq.com], msg.as_string()) #退出 smtp.quit() print(郵件發送成功email has send out !) except Exception as e: #列印出錯原因,可以查看出錯代碼 print(e)

兩張成功圖。這裡為什麼會顯示代發,上面也說過了,郵件服務商要求,那麼我們找一個小服務商是不是就行了?

個人博客:bywalks.com

推薦閱讀:

Python視頻教程,Python學習路線圖林其
17個新手常見Python運行時錯誤
PyQt5系列教程(19):微調框2
給妹子講python--01好用的列表
0x2:反向shell

TAG:Python教程 | 網路安全 |