2.4.2 QQ邮箱协议分析与实现
协议分析过程如下:
分析post头:利用wirshark抓取的QQ邮箱的数据流,其中host、origin、referer这三项中都带有qq.com,以此判断是何种邮箱;唯一的URL是区分发送邮件流与上传附件流的条件依据。
分析message-body:发送邮件流,其中正文等信息都在message-body里,直接提取即可;上传附件流,windows系统下,属于小附件时,是单会话单post,在message-body中前364个字节是乱码后边是以明文显示,属于大附件时,是单会话多post,在message-body中前364个字节是乱码后边是以明文显示,网盘上传附件时,是mime格式传递的。Linux系统下,小附件的情况,是单会话单post,在message-body中是以明文显示。大附件的情况,是多会话多post,在message-body中是以明文显示。网盘上传附件,是单会话多post,在message-body中前364个字节是乱码后边是以明文显示。
具体实现如下:
1)判断协议:首先利用字符串匹配判断数据流的邮箱类型,是163、yeah还是126邮箱,然后利用字符串匹配和正则表达式匹配判断URL是发送邮件流还是上传附件流。
2)提取协议内容:先采用pcre类库的正则表达式技术提取数据流中的发件人、收件人、正文、主题、发送时间,再分别将提取的信息URL解码,并上报。
3)提取协议文件: windows系统下①小附件情况,直接将message-body除了前364位乱码的字符串以uuid的形式存到文件里。②大附件的情况,首先将message-body除了前364位乱码的字符串以通过四元组产生哈希值为文件名存储,利用乱码判断是最后一个数据包,文件大小存到链表里,并将文件名改为uuid的形式,并上报。③网盘上传附件,利用正则表达式匹配提取文件名,利用sundy算法提取文件内容。
图2-4 QQ邮箱协议分析流程图
Linux系统下,①小附件的情况,直接将message-body以uuid的形式存到文件里。②大附件的情况,首先将message-body以通过四元组产生哈希值为文件名存储,然后用提取的偏移量加content-length判断是否等于提取的附件大小,如果等于将提取与文件大小存到链表里,并将文件名改为uuid的形式,并上报。③网盘上传附件,利用正则表达式匹配提取文件名,利用sundy算法提取文件内容。
4)上报结果:主要采用jansson类库的技术,以jansson串的形式上报。处理QQ邮箱的流程图,如图2-4所示。
2.4.3通过MIME格式发送邮件的邮箱协议分析与实现
协议分析如下:
以MIME格式为数据流的邮箱有:新浪、中国石油、21cn、央视网、tom、189邮箱。
分析post头:利用wirshark抓取的新浪、中国石油、21cn、央视网、tom邮箱的数据流,其中host、origin、referer这三项中分别都带有sina.com、sina.cn、cnpc.com、21cn.com、cntv.com、tom.com、189.cn,以此判断是何种邮箱;唯一的URL是区分发送邮件流与上传附件流的条件依据。
分析message-body:发送邮件流,其中新浪、21cn、央视网邮箱分别以mime格式传递的,而中国石油、tom、189邮箱是整个的message –body传递的。上传附件流,都是mime格式的,开头和结尾都是boundary形式,并有文件名。
实现:
1)判断协议:首先利用字符串匹配判断数据流的邮箱类型,然后利用字符串匹配和正则表达式匹配判断URL先判断是发送邮件流不是的话,再判断是上传附件流。
2)提取协议内容:先采用pcre类库的正则表达式技术提取数据流中的发件人、收件人、正文、主题、发送时间,再分别将提取的信息URL解码,并上报。
3)提取协议文件:利用正则表达式匹配提取文件名,利用sundy算法提取文件内容以及文件大小。
4)上报结果:主要采用jansson类库的技术,以jansson串的形式上报。处理简易通过MIME格式发送邮件的邮箱流程图,如图2-5所示。
图2-5 通过MIME格式发送邮件的邮箱协议分析流程图
2.4.4搜狐邮箱协议分析与实现
协议分析过程如下:
搜狐邮箱主要包括:搜狐邮箱、搜狗邮箱、chinaren邮箱。
分析post头:利用wirshark抓取的搜狐邮箱的数据流,其中host、origin、referer这三项中分别都带有sohu.com、sogou.com、chinaren.com,以此判断是何种邮箱;唯一的URL是区分发送邮件流与上传附件流的条件依据。
分析message-body:发送邮件内容的POST流,是通过message –body实体传递的,而上传普通附件流,是通过mime格式传递。实体的开头和结尾均为boundary形式,并且有文件名等信息。最后,批量上传到搜狐U盘的数据流,是经过多会话发送的,并且其中不涉及加密。
图2-6搜狐邮箱的协议分析流程图
具体实现如下:
1)判断协议:首先利用字符串匹配判断数据流的邮箱类型,然后利用字符串匹配和正则表达式匹配判断URL是否是上传附件流,不是的话,再判断是否是发送邮件流,再不是的话,再判断是否为上传到搜狐u盘数据流。
2)提取协议内容:先采用pcre类库的正则表达式技术提取数据流中的发件人、收件人、正文、主题、发送时间,再分别将提取的信息URL解码,并上报。
3)提取协议文件:对于普通附件数据流,利用正则表达式匹配提取文件名,利用sundy算法提取文件内容以及文件大小;上传到搜狐U盘的数据流,首先将message-body通过四元组产生哈希值为文件名存储,然后用提取的偏移量加content-length判断是否等于提取的附件大小,如果等于将提取文件大小存到链表里,并将文件名改为uuid的形式,并上报。
4)上报结果:主要采用jansson类库的技术,以jansson串的形式上报。
搜狐邮箱协议分析流程图如图2-6所示。
本文来源:https://www.2haoxitong.net/k/doc/6b1c3ee7dd36a32d7275816f.html
文档为doc格式