yingdi
驱动牛犊
驱动牛犊
  • 注册日期2007-11-15
  • 最后登录2008-08-14
  • 粉丝0
  • 关注0
  • 积分192分
  • 威望46点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
阅读:2463回复:11

如何判断发送的包是HTTP的还是SMTP的,以及如何取得网址或收件人的邮箱

楼主#
更多 发布于:2008-08-06 10:56
我是在PASSTHRU的基础上修改的,想在发包时,当发送的是HTTP的包,取得网址;当发送邮件(SMTP)时,取得收件人的邮箱。
当我判断发送的包是IP包后,下面的处理不知怎么解决。请高手赐教。
问题1,如何判断发送的包是HTTP的,或者是SMTP的。
        2,HTTP包如何取得网址
        3,SMTP包如何取得收件人的邮箱。
yingdi
驱动牛犊
驱动牛犊
  • 注册日期2007-11-15
  • 最后登录2008-08-14
  • 粉丝0
  • 关注0
  • 积分192分
  • 威望46点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-08-06 11:41
在线等
yingdi
驱动牛犊
驱动牛犊
  • 注册日期2007-11-15
  • 最后登录2008-08-14
  • 粉丝0
  • 关注0
  • 积分192分
  • 威望46点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-08-06 13:55
等得好苦呀。
ay19880703
驱动牛犊
驱动牛犊
  • 注册日期2008-05-24
  • 最后登录2010-03-25
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望120点
  • 贡献值1点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-08-06 14:54
我说楼主,我也在写类似功能的代码  
能交流下吗?
加QQ181674677

我可以说在我们NDIS中接受到的数据中,
HTTP包的判断我觉得应该是是在你得到的数据中的开头有个HTTP头 你可以通过这个判断是不是HTTP    HTTP协议不知道你分析过没有  在HTTP包里面有记录你要发送的网址和内容  稍加分析就可以得出来了  SMTP我建议你抓包分析下
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
地下室#
发布于:2008-08-06 14:57
http通常 80端口
smtp 25端口

然后就是看内容了,http的命令,还是smtp的命令

通常 smtp的端口号是不会变的(变了无法跟别人通讯)
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
yingdi
驱动牛犊
驱动牛犊
  • 注册日期2007-11-15
  • 最后登录2008-08-14
  • 粉丝0
  • 关注0
  • 积分192分
  • 威望46点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-08-06 18:10
谢谢二位大侠的执教。

这样做行不行?
判断端口,如果是25那么“肯定”是smtp,
 如果不是25,那么我在包中找“http://”这样的字眼,如果找到了应该就是http,就把它后面的网址取得。
yingdi
驱动牛犊
驱动牛犊
  • 注册日期2007-11-15
  • 最后登录2008-08-14
  • 粉丝0
  • 关注0
  • 积分192分
  • 威望46点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-08-07 12:00
????/
robar
驱动牛犊
驱动牛犊
  • 注册日期2007-06-27
  • 最后登录2013-06-24
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望41点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-08-13 14:53
首先判断是否是IP报文,然后判断是否是TCP,然后判断是否是HTTP,rfc文档有具体规定的~有专门的字段标志协议的类型
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-08-13 16:15
当然不可以,理由很简单,数据包中也可能有"HTTP://"这样的字符,
正确的做法是参考相应协议进行包解析
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
ViskerWong
驱动牛犊
驱动牛犊
  • 注册日期2008-03-18
  • 最后登录2011-10-18
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望29点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2008-09-09 13:40
引用第5楼yingdi于2008-08-06 18:10发表的  :
谢谢二位大侠的执教。

这样做行不行?
判断端口,如果是25那么“肯定”是smtp,
 如果不是25,那么我在包中找“http://”这样的字眼,如果找到了应该就是http,就把它后面的网址取得。


这样的方法找HTTP包就算找到了,效率也太低点了
mister
驱动牛犊
驱动牛犊
  • 注册日期2001-11-25
  • 最后登录2013-02-26
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望26点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2008-09-10 10:46
我觉得如何是简单点就通过端口号来判断,当然会不全面,但是效率高。
如果要全面过滤就需要分析数据包了。因为HTTP/SMTP都是tcp的应用协议。
liio
驱动小牛
驱动小牛
  • 注册日期2005-12-24
  • 最后登录2022-06-16
  • 粉丝4
  • 关注1
  • 积分24分
  • 威望343点
  • 贡献值0点
  • 好评度171点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2008-10-02 04:41
...........

HTTP报文都是这样

HTTP/1.1 GET XXXX......或者
HTTP/1.1 200 OK
...

直接判断前面4字节是否等于HTTP

SMTP类似.
游客

返回顶部