HPFEEDS协议

2019-05-16  本文已影响0人  小小怪吃吃吃

参考链接:
1、http://phantom0301.cc/2016/02/19/Hpfeeds/
2、http://www.yanglajiao.com/article/xumesang/50569842
3、http://www.cnblogs.com/lijingchn/p/5566662.html

在对一些开源蜜罐进行研究时,不可避免地会涉及到hpfeeds协议,那么hpfeeds协议究竟是什么呢?里面的一些机制、使用又是怎样的一个情况呢?为什么开源蜜罐MHN、T-pot都使用这个协议呢?

一、HPFEEDS协议是什么

hpfeeds是一个轻量级的验证发布-订阅协议(authenticated publish-subscribe protocol)。

二、HPFEEDS协议简介

hpfeeds把不同的数据用频道来划分,支持传送任意的二进制数据。由频道的使用者决定传送数据结构的形式。进入频道需要一个“授权钥匙”(Authkey),它由两部分组成:ident和secret,相当于身份和密码。把密码和每次连接的一个随机数进行hash摘要算法然后一起发送给服务器(即发送到服务器的secret映射到一个连接),这样保证不会被窃听,所以它可以运行在SSL、TLS下。不同的钥匙会被赋予不同的频道权限。

三、HPFEEDS协议组成

1、线路协议组成:每个hpfeeds协议消息都携带了一个固定格式的消息头,有两个参数:消息总长度和请求类型。


消息类型
完整消息

2、消息的认证过程

四、HPFEEDS的原理

hpfeeds协议通过以下几部分实现:hpfeeds server, hpfeeds client,mongodb数据库。

hpfeeds协议建立连接及通信的过程: 
1、Client发起连接请求;
2、server为每个client的连接生成一个连接标志,并将其发送给请求连接的client;
3、client发送自己的id和sha1(nonce+Authkey)到server进行认证;
4、server从mongodb中取出相应的信息检查验证,若认证通过,保持连接并执行后续操作。否则,断开连接;
5、client发起publish/subscribe请求;
6、server检查client请求消息的类型,发布/订阅。

五、为什么使用HPFEEDS
整个协议实现了三方的功能独立。使用这种方式降低了应用与业务逻辑之间的耦合,统一一个对外的发布接口,只需要关心监听的类型,不关心监听的具体处理人。只管发,不管到不到。很方便的建立一种一对多的依赖关系。

优点:
1.降低耦合。发布者对于接收者的数量,身份,接收的数据类型一无所知。
2.安全性高。只有消息订阅者之间的单线信息交互,不存在其他程序的信息交换。
3.测试方便。
缺点:
性能降低,订阅要进行管理

六、HPFEEDS的使用

1、普通安装步骤:

git clone https://github.com/rep/hpfeeds/
cd hpfeeds
python setup.py build
python setup.py install

2、代码分析
Hpfeeds协议server与client的通讯主要是使用TCP套接字的方式。
http://www.cnblogs.com/lijingchn/p/5566662.html

上一篇 下一篇

猜你喜欢

热点阅读