Skip to content

dylenfu/dht-tool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

747da03 · May 11, 2020

History

14 Commits
May 9, 2020
May 11, 2020
May 9, 2020
May 11, 2020
May 11, 2020
May 11, 2020
May 11, 2020
May 9, 2020
May 9, 2020
May 11, 2020
May 9, 2020
May 9, 2020
May 9, 2020
May 9, 2020
May 11, 2020
May 11, 2020

Repository files navigation

dth-tool

ontology p2pserver 测试工具

使用方式

下载项目ontology, 并切换到net-review分支:

https://github.com/dylenfu/ontology.git

下载项目dht-tool

https://github.com/dylenfu/dht-tool.git

根据环境make得到可执行文件

在config.json文件配置节点列表以及magic等参数。 具体测试时,不同的测试用例在params路径下修改用例参数。 然后运行命令如下:

./dht-tool -t=handshake

也支持批量测试

./dht-tool -t=handshake,heartbeat

测试用例

handshake                           // 握手
handshakeTimeout                    // 握手超时测试
handshakeWrongMsg                   // 握手客户端发送错误信息
heartbeat                           // 心跳持续测试
heartbeatInterruptPing              // p2p ping中断测试
heartbeatInterruptPong              // p2p pong中断测试
resetPeerID                         // 重置peerID
ddos                                // ddos 攻击单一节点,阻断流量(无法同步块)
invalidBlockHeight                  // 模拟节点持续快高异常 
attackRoutable                      // 路由表攻击
attackTxPool                        // 交易池攻击
doubleSpend                         // 双花攻击

测试条件及结果预期

1、握手测试

条件:
a、正常握手,或者在握手时停止于某个步骤
结果:
a、正常握手连接应该成功
b、握手中断连接应该失败

2、握手时发送非法version

条件:
a、使用参数构造虚假version,并发送到某个目标节点
结果:
a、连接失败

3、网络超时重试模拟

条件:
a、握手时在某个步骤延时
结果:
a、第一次握手失败
b、第二次握手成功

4、心跳测试

条件:
a、保持正常心跳
结果:
a、连接正常,模拟块高持续增加

5、心跳中断ping

条件:
a、心跳过程中,主动中断ping,持续n sec
结果:
a、连接正常,块高保持一定高度后持续增长
b、连接断开

6、心跳中断pong

条件:
a、心跳过程中,主动中断pong,持续n sec
结果:
a、连接正常,块高保持一定高度后持续增长
b、连接断开

7、更新peerID

条件:
a、建立连接保持心跳后,变更peerID
结果:
a、连接断开

8、网络流量攻击

条件:
a、构造多个虚假peerID
b、与单个目标sync节点距离较近
c、虚假peer主动发起连接,并持续ping
结果:
a、节点不能正常出块(出块慢甚至不出块)

9.路由表攻击

条件:
1.根据目标节点ID,构造大量距离目标seed节点很近的虚拟节点,
2.主动连接并ping目标节点,比如说节点最多允许接收1024个链接,其中4个链接为正常连接,
    1020个链接为恶意连接,当连接数超过1024时,是否会有恶意连接挤出正常连接
结果:
a、正常连接是否会被挤出
b、节点路由被恶意节点占满
c、节点重启后仍然被恶意节点占满
d、节点主动发起连接大概率会连接上恶意节点

10.块同步攻击

条件:
a.测试工具所模拟的节点块高度始终高于正常节点
结果:
a.造成同步异常或者延时

11.交易池攻击

条件:
a、多个恶意节点持续对多个目标seed节点发送不合法交易(比如余额不足)
结果:
a、查询交易池,不同目标节点的交易持应该相同,而且都不包含不合法交易
b、测试前后查询余额,账户余额不变

12.双花攻击

条件:
a、单个恶意节点,对多个目标seed节点发送连续的4笔交易,其中1笔能成功,另外3笔不能成功,
   比如只有2块钱的情况下,转账4次,1.1, 1.2, 1.3,1.4
结果:
a、目标seed节点交易池应该相同,都只有1笔正常的交易
b、测试前后查询余额账户,只转出一笔

测试参数:

1.握手测试参数

params/Handshake.json

HandshakeNormal = 0                 // 正常握手
StopClientAfterSendVersion = 1      // 握手时客户端发送version后停止
StopClientAfterReceiveVersion = 2   // 握手时客户端接收version后停止
StopClientAfterUpdateKad = 3        // 握手时客户端更新kad后停止
StopClientAfterReadKad = 4          // 握手时客户端读取kad后停止
StopClientAfterSendAck = 5          // 握手时客户端发送ack后停止
StopServerAfterSendVersion = 6      // 握手时服务端发送version后停止
StopServerAfterReceiveVersion = 7   // 握手时服务端结束到version后停止
StopServerAfterUpdateKad = 8        // 握手时服务端更新kad后停止
StopServerAfterReadKad = 9          // 握手时服务端读取kad后停止
StopServerAfterReadAck = 10         // 握手时服务端接收ack后停止

TODO

. dump dht . dump txnPool . utils for sending tx . utils for getting block height & account balance

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published