Chinaunix首页 | 论坛 | 博客
  • 博客访问: 317542
  • 博文数量: 239
  • 博客积分: 481
  • 博客等级: 下士
  • 技术积分: 1170
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-15 17:28
文章分类

全部博文(239)

文章存档

2014年(13)

2013年(6)

2012年(122)

2011年(98)

分类: LINUX

2011-07-29 09:06:35

原文地址:P2P软件session的识别 作者:CU技术文章

作者:
原文:

最近在做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的手段。当然,在具体的实施中,还有很多细节需要考虑

 

本博文转载于:风语塘 的博客

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