自主抓取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 = usernameself.password = passwordself.host = hostself.port = portself.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.usernamemail['To'] = tomail['Subject'] = subjectmail.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 实现