阅读:2519回复:11
如何判断发送的包是HTTP的还是SMTP的,以及如何取得网址或收件人的邮箱
我是在PASSTHRU的基础上修改的,想在发包时,当发送的是HTTP的包,取得网址;当发送邮件(SMTP)时,取得收件人的邮箱。
当我判断发送的包是IP包后,下面的处理不知怎么解决。请高手赐教。 问题1,如何判断发送的包是HTTP的,或者是SMTP的。 2,HTTP包如何取得网址 3,SMTP包如何取得收件人的邮箱。 |
|
沙发#
发布于:2008-08-06 11:41
在线等
|
|
板凳#
发布于:2008-08-06 13:55
等得好苦呀。
|
|
地板#
发布于:2008-08-06 14:54
我说楼主,我也在写类似功能的代码
能交流下吗? 加QQ181674677 我可以说在我们NDIS中接受到的数据中, HTTP包的判断我觉得应该是是在你得到的数据中的开头有个HTTP头 你可以通过这个判断是不是HTTP HTTP协议不知道你分析过没有 在HTTP包里面有记录你要发送的网址和内容 稍加分析就可以得出来了 SMTP我建议你抓包分析下 |
|
地下室#
发布于:2008-08-06 14:57
http通常 80端口
smtp 25端口 然后就是看内容了,http的命令,还是smtp的命令 通常 smtp的端口号是不会变的(变了无法跟别人通讯) |
|
|
5楼#
发布于:2008-08-06 18:10
谢谢二位大侠的执教。
这样做行不行? 判断端口,如果是25那么“肯定”是smtp, 如果不是25,那么我在包中找“http://”这样的字眼,如果找到了应该就是http,就把它后面的网址取得。 |
|
6楼#
发布于:2008-08-07 12:00
????/
|
|
7楼#
发布于:2008-08-13 14:53
首先判断是否是IP报文,然后判断是否是TCP,然后判断是否是HTTP,rfc文档有具体规定的~有专门的字段标志协议的类型
|
|
8楼#
发布于:2008-08-13 16:15
当然不可以,理由很简单,数据包中也可能有"HTTP://"这样的字符,
正确的做法是参考相应协议进行包解析 |
|
|
9楼#
发布于:2008-09-09 13:40
引用第5楼yingdi于2008-08-06 18:10发表的 : 这样的方法找HTTP包就算找到了,效率也太低点了 |
|
10楼#
发布于:2008-09-10 10:46
我觉得如何是简单点就通过端口号来判断,当然会不全面,但是效率高。
如果要全面过滤就需要分析数据包了。因为HTTP/SMTP都是tcp的应用协议。 |
|
11楼#
发布于:2008-10-02 04:41
...........
HTTP报文都是这样 HTTP/1.1 GET XXXX......或者 HTTP/1.1 200 OK ... 直接判断前面4字节是否等于HTTP SMTP类似. |
|