自主抓取IMAP流量
根据测试需求,需要抓取IMAP流量包,使用wireshark + Python(IMAP库)实现
实现Python 代码
不废话直接上; 注意别用SSL,这个是加密无法被抓包;port:143是公开;至于文件夹我这边是自己尝试出来的,QQ邮箱文件夹应该都是大写的,可以参考如下信息
已发送邮件(Sent Mail/Sent Items):包含了用户发送出去的所有邮件。
草稿箱(Drafts):存储了尚未完成或尚未发送的邮件草稿。
垃圾邮件(Junk/Spam):自动过滤出来的垃圾或疑似垃圾邮件。
已删除邮件(Trash/Deleted Items):用户删除的邮件会暂时存放在这里,直到清空该文件夹。
星标邮件(Starred/Favorites):根据邮箱设置,可能会有专门收集标记为重要或星标的邮件的文件夹。
归档邮件(Archive):用户可能将不再需要留在收件箱但又想保留的邮件移到此文件夹。
重要邮件(Important):如果设置了优先级筛选,可能会有单独收集标记为重要的邮件文件夹。
对于QQ邮箱,正确的已发送邮件文件夹名称可能是Sent或者已发送(如果是中文版客户端或界面)。因此,你应该尝试使用服务提供商所使用的实际文件夹名称。
import imaplib
import email
class Mail:
def __init__(self, username, password, host, port):
self.username = username
self.password = password
self.host = host
self.port = port
self.mail = imaplib.IMAP4(self.host, self.port)
self.mail.login(self.username, self.password)
self.mail.select('inbox')
self.mail.list()
self.mail.close()
self.mail.logout()
def send_mail(self, to, subject, content):
mail = imaplib.IMAP4(self.host, self.port)
mail.login(self.username, self.password)
mail.select('inbox')
mail.list()
mail.close()
mail.logout()
mail = email.message.EmailMessage()
mail['From'] = self.username
mail['To'] = to
mail['Subject'] = subject
mail.set_content(content)
mail.send()
print('邮件发送成功')
mail.quit()
def receive_mail(self):
mail = imaplib.IMAP4(self.host, self.port)
mail.login(self.username, self.password)
inbox = mail.select('INBOX')
print('全部邮件', inbox)
mail.list()
# mail.close()
# mail.logout()
def receive_mail_with_content(self):
mail = imaplib.IMAP4(self.host, self.port)
mail.login(self.username, self.password)
UnSeen = mail.select('Junk')
print('垃圾邮件', UnSeen)
mail.list()
# mail.close()
# mail.logout()
def receive_mail_SENT_content(self):
mail = imaplib.IMAP4(self.host, self.port)
mail.login(self.username, self.password)
UnSeen = mail.select('SENT')
print('已发送', UnSeen)
mail.list()
mail = Mail('xxx', 'xxx', 'imap.qq.com', 143)
mail.receive_mail()
mail.receive_mail_with_content()
mail.receive_mail_SENT_content()'''
wireshark 进行抓包
设置抓包过滤
已知代码中 port= 143 , 所以 过滤我们可以直接用tcp port == 143 实现