Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8104182
  • 博文数量: 159
  • 博客积分: 10424
  • 博客等级: 少将
  • 技术积分: 14615
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-14 12:45
个人简介

啦啦啦~~~

文章分类
文章存档

2015年(5)

2014年(1)

2013年(5)

2012年(10)

2011年(116)

2010年(22)

分类: 网络与安全

2010-10-15 22:55:40

本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。
作者:gfree.wind@gmail.com
博客:linuxfocus.blog.chinaunix.net
    

最近在做P2P的session识别,也就是通过对包内容的分析,判断该session是哪种P2P软件。
发现大体上有以下几种方法:
  1. 有明确文档的,如电骡——在网上可以找到电骡的协议;这种比较方便,中规中矩的按照协议分析就好了;
  2. 在某些包中会有关键字,如easyMule——到这里要插一句,easyMule一直在误导大家,让大家认为easyMule是eMule的中文版本,其网站是电驴的中文网站。其实则不然。大家随便搜索一下就可以知道事情的始末。在easyMule的TCP连接中,握手后的包中往往会带有verycd的关键字。所以很容易识别;除了easyMule以为,还有很多P2P软件都会在TCP连接后的数据中,夹带自己的关键字。
  3. 包中没有关键字,但是仍然会有自己的一些固定字节。通过对比,往往可以找出规律;
  4. 包的内容插入了随机字段,包的内容始终找不到规律。那么可以从包的长度入手。因为尽管该P2P软件加入了随机字段,但是其交互的数据大小往往有规律。比如Ares。打个比方,第一个包的数据长度为11,第二个包的长度为8,第3个的长度为40,第4个的长度也为40。那么,如果该session符合这个特征,我们就可以判断出该session;
  5. 包的长度以及包的内容没有任何的特征。以Skype为例,因为skype有用户名和密码,所以它可以直接把密码作为私钥对数据进行加密。那么除了skype服务器外,没有人可以解密数据包。无论我们怎么比较数据包的内容,也不会找出规律。那么如何检测Skype的session呢?我们可以从另外一个角度去解决这个问题。在之前的判断中,我们都是通过该session的数据,来判断其协议类别。对于Skype来说,这条路就走不通了。那么我们可以通过skype的活动特征来判断。通过抓包分析,skype在建立TCP连接之前,都会使用UDP来检测对端端口是否可以连接。这就可以成为我们检测skype的手段。当然,在具体的实施中,还有很多细节需要考虑



阅读(4138) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-10-16 16:06:34

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com