Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ethr — 跨平台 CLI,用于通过 TCP、UDP、HTTP、HTTPS 和 ICMP 进行网络性能测试:带宽、连接数/秒、包数/秒、延迟、丢包、抖动、ping 和 traceroute。 | Kitploit
工具/GitHubGitHub/microsoft/ethr
通用工具数据包嗅探与分析网络映射端口扫描数据泄露信息收集数据泄露 分类第 18 名网络映射 分类第 19 名数据包嗅探与分析 分类第 20 名端口扫描 分类第 9 名
5.9k406179个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHubmicrosoft/ethr

ethr

跨平台 CLI,用于通过 TCP、UDP、HTTP、HTTPS 和 ICMP 进行网络性能测试:带宽、连接数/秒、包数/秒、延迟、丢包、抖动、ping 和 traceroute。

查看仓库

Ethr Build Status

Ethr 是一款使用 golang 编写的跨平台网络性能测量工具。该项目的目标是提供一个原生的工具,用于跨多种协议(如 TCP、UDP、HTTP、HTTPS)和跨多个平台(如 Windows、Linux 和其他 Unix 系统)进行全面的网络性能测量,包括带宽、连接数/秒、数据包数/秒、延迟、丢包和抖动。

Ethr server in action

Ethr 借鉴了现有开源网络性能工具的思想,并在此基础上进行了扩展。在带宽测量方面,它类似于 iPerf3,用于 TCP 和 UDP 流量。iPerf3 拥有更多选项,例如限速测试、更丰富的功能集,而 Ethr 支持多线程,可扩展到 1024 甚至更高数量的连接、多个客户端与单个服务器通信等。在延迟测量方面,它类似于 Windows 上的 latte 或 Linux 上的 sockperf。

与其他工具相比,Ethr 提供了更多的测试测量项,例如它可以在单个工具中提供带宽、连接数/秒、数据包数/秒、延迟以及 TCP 连接建立延迟的测量。未来,计划添加更多功能(希望其他人能够贡献)以及更多协议支持,使其成为全面的网络性能测量工具。

得益于 golang,Ethr 天生就是跨平台的,这不像通过 cygwin 等抽象层编译那样可能会限制功能。它希望通过结合 iPerf3、ntttcp、psping、sockperf 和 latte 等工具的功能,提供一个跨多个平台、支持多种协议的单一工具,从而统一性能测量。

安装

下载

https://github.com/Microsoft/ethr/releases/latest

Linux

root@kitploit:~
wget https://github.com/microsoft/ethr/releases/latest/download/ethr_linux.zip
unzip ethr_linux.zip

Windows Powershell

root@kitploit:~
wget https://github.com/microsoft/ethr/releases/latest/download/ethr_windows.zip -OutFile ethr_windows.zip
Expand-Archive .\ethr_windows.zip -DestinationPath .

OSX

root@kitploit:~
wget https://github.com/microsoft/ethr/releases/latest/download/ethr_osx.zip
unzip ethr_osx.zip

从源码构建

注意:从源码构建需要 go 1.11 或更高版本。

我们使用 go-module 来管理 Ethr 的依赖。更多信息请查看 如何使用 go-modules!

root@kitploit:~
git clone https://github.com/Microsoft/ethr.git
cd ethr
go build

如果 ethr 被克隆到 $GOPATH/src 目录树中,请确保使用 GO111MODULE=on 来调用 go 命令!

Docker

使用以下命令构建镜像:

root@kitploit:~
docker build -t microsoft/ethr .

生成二进制文件:

Linux

root@kitploit:~
docker run -e GOOS=linux -v $(pwd):/out microsoft/ethr make build-docker

Windows

root@kitploit:~
docker run -e BINARY_NAME=ethr.exe -e GOOS=windows -v $(pwd):/out microsoft/ethr make build-docker

OS X

root@kitploit:~
docker run -e BINARY_NAME=ethr -e GOOS=darwin -v $(pwd):/out microsoft/ethr make build-docker

使用 go get

root@kitploit:~
go get github.com/microsoft/ethr

使用 ArchLinux AUR

假设你正在使用 yay (https://github.com/Jguer/yay):

root@kitploit:~
yay -S ethr

发布 Nuget 包

请按照“从源码构建”主题构建 ethr.exe

修改 ethr.nuspec 以添加新的发布版本

root@kitploit:~
vim ethr.nuspec

创建 nuget 包(如 Ethr.0.2.1.nupkg)

root@kitploit:~
nuget.exe pack ethr.nuspec

将包上传到 nuget.org。

用法

简单用法

帮助:

root@kitploit:~
ethr -h

服务器:

root@kitploit:~
ethr -s

带文本用户界面的服务器:

root@kitploit:~
ethr -s -ui

客户端:

root@kitploit:~
ethr -c <server ip>

示例:

root@kitploit:~
// 启动服务器
ethr -s

// 使用 1 个线程启动默认(带宽)测试测量的客户端
ethr -c localhost

// 使用 8 个线程启动带宽测试
ethr -c localhost -n 8

// 使用 64 个线程向服务器 10.1.0.11 启动连接数/秒测试
ethr -c 10.1.0.11 -t c -n 64

// 在端口 9999 上运行 Ethr 服务器
./ethr -s -port 9999

// 测量到端口 9999 上 Ethr 服务器的 TCP 连接建立延迟
// 假设 Ethr 服务器运行在 IP 地址为 10.1.1.100 的服务器上
./ethr -c 10.1.1.100 -p tcp -t pi -d 0 -4 -port 9999

// 测量到 www.github.com 端口 443 的 TCP 连接建立延迟
./ethr -x www.github.com:443 -p tcp -t pi -d 0 -4

// 测量到 www.github.com 端口 443 的 TCP 连接建立延迟
// 注意:此处端口 443 由 https 自动推导
./ethr -x https://www.github.com -p tcp -t pi -d 0 -4

// 测量到 www.github.com 的 ICMP ping 延迟
sudo ./ethr -x www.github.com -p icmp -t pi -d 0 -4

// 运行类似 Linux 上 mtr 的测量
sudo ./ethr -x www.github.com -p icmp -t mtr -d 0 -4

// 通过发送 1 字节小数据包来测量 UDP 数据包数/秒
./ethr -c 172.28.192.1 -p udp -t p -d 0

已知问题和要求

Windows

对于 ICMP 相关测试(Ping、TraceRoute、MyTraceRoute),Windows 要求通过防火墙允许 ICMP。可以使用 PowerShell 中的以下命令完成此操作。但是,仅在设置的安全策略允许的情况下使用。

root@kitploit:~
// 通过防火墙允许 IPv4 的 ICMP 数据包
New-NetFirewallRule -DisplayName "ICMP_Allow_Any" -Direction Inbound -Protocol ICMPv4 -IcmpType Any -Action Allow  -Profile Any -RemotePort Any

// 通过防火墙允许 IPv6 的 ICMP 数据包
New-NetFirewallRule -DisplayName "ICMPV6_Allow_Any" -Direction Inbound -Protocol ICMPv6 -IcmpType Any -Action Allow  -Profile Any -RemotePort Any

此外,对于基于 TCP 的 TraceRoute 和 MyTraceRoute,需要管理员模式,否则 Ethr 将无法接收 ICMP TTL 超时消息。

Linux

对于 ICMP Ping、ICMP/TCP TraceRoute 和 MyTraceRoute,需要通过 sudo 使用特权模式。

完整命令行

常用参数

root@kitploit:~
	-h 
		帮助
	-no 
		禁用日志文件记录。默认启用日志文件记录。
	-o <filename>
		日志文件名。默认使用以下文件名:
		服务器模式:'ethrs.log'
		客户端模式:'ethrc.log'
	-debug 
		在日志输出中启用调试信息。
	-4 
		仅使用 IP v4 版本
	-6 
		仅使用 IP v6 版本

服务器模式参数

root@kitploit:~
在此模式下,Ethr 作为服务器运行,允许多个客户端针对其运行性能测试。
	-s 
		以服务器模式运行。
	-ip <string>
		绑定到指定的本地 IP 地址以进行 TCP 和 UDP 测试。
		这必须是有效的 IPv4 或 IPv6 地址。
		默认值:<空> - 任意 IP
	-port <number>
		使用指定的端口号进行 TCP 和 UDP 测试。
		默认值:8888
	-ui 
		在文本界面中显示输出。

客户端模式参数

root@kitploit:~
在此模式下,Ethr 客户端只能与 Ethr 服务器通信。
	-c <server>
		以客户端模式运行并连接到 <server>。
		服务器使用名称、FQDN 或 IP 地址指定。
	-b <rate>
		仅传输每秒比特数(格式:<num>[K | M | G])
		仅适用于带宽测试。默认值:0 - 不限
		示例:100(100bits/s),1M(1Mbits/s)。
	-cport <number>
		在客户端使用指定的本地端口号进行 TCP 和 UDP 测试。
		默认值:0 - 临时端口
	-d <duration>
		测试持续时间(格式:<num>[ms | s | m | h]
		0:永远运行
		默认值:10s
	-g <gap>
		连续测量之间的时间间隔(格式:<num>[ms | s | m | h]
		仅适用于延迟、ping 和 traceRoute 测试。
		0:无间隔
		默认值:1s
	-i <iterations>
		每次延迟测量的往返迭代次数。
		仅适用于延迟测试。
		默认值:1000
	-ip <string>
		绑定到指定的本地 IP 地址以进行 TCP 和 UDP 测试。
		这必须是有效的 IPv4 或 IPv6 地址。
		默认值:<空> - 任意 IP
	-l <length>
		要使用的缓冲区长度(格式:<num>[KB | MB | GB])
		仅适用于带宽测试。最大 1GB。
		默认值:16KB
	-n <number>
		并行会话(和线程)数量。
		0:等于 CPU 数量
		默认值:1
	-p <protocol>
		协议("tcp"、"udp"、"http"、"https" 或 "icmp")
		默认值:tcp
	-port <number>
		使用指定的端口号进行 TCP 和 UDP 测试。
		默认值:8888
	-r 
		对于带宽测试,从服务器向客户端发送数据。
	-t <test>
		要运行的测试("b"、"c"、"p"、"l"、"cl" 或 "tr")
		b:带宽
		c:连接数/秒
		p:数据包数/秒
		l:延迟、丢包和抖动
		pi:Ping 丢包和延迟
		tr:TraceRoute
		mtr:MyTraceRoute,包含丢包和延迟
		默认值:b - 带宽测量。
	-tos 
		指定要在 IPv4 TOS 字段或 IPv6 流量类别字段中使用的 8 位值。
	-w <number>
		使用指定的迭代次数进行预热。
		默认值:1
	-T <string>
		在日志文件中使用给定的标题记录结果。
		默认值:<空>		

外部模式参数

root@kitploit:~
在此模式下,Ethr 与非 Ethr 服务器通信。此模式仅支持少数几种测量类型,
例如 Ping、连接数/秒和 TraceRoute。
	-x <destination>
		以外部客户端模式运行并连接到 <destination>。
		<destination> 以 URL 或 Host:Port 格式指定。
		对于 URL,如果未指定端口,则 http 假定为 80,https 假定为 443。
		示例:对于 TCP - www.microsoft.com:443 或 10.1.0.4:22 或 https://www.github.com
		         对于 ICMP - www.microsoft.com 或 10.1.0.4
	-cport <number>
		在客户端使用指定的本地端口号进行 TCP 和 UDP 测试。
		默认值:0 - 临时端口
	-d <duration>
		测试持续时间(格式:<num>[ms | s | m | h]
		0:永远运行
		默认值:10s
	-g <gap>
		连续测量之间的时间间隔(格式:<num>[ms | s | m | h]
		仅适用于延迟、ping 和 traceRoute 测试。
		0:无间隔
		默认值:1s
	-ip <string>
		绑定到指定的本地 IP 地址以进行 TCP 和 UDP 测试。
		这必须是有效的 IPv4 或 IPv6 地址。
		默认值:<空> - 任意 IP
	-n <number>
		并行会话(和线程)数量。
		0:等于 CPU 数量
		默认值:1
	-p <protocol>
		协议("tcp" 或 "icmp")
		默认值:tcp
	-t <test>
		要运行的测试("c"、"cl" 或 "tr")
		c:连接数/秒
		pi:Ping 丢包和延迟
		tr:TraceRoute
		mtr:MyTraceRoute,包含丢包和延迟
		默认值:pi - Ping 丢包和延迟。
	-tos 
		指定要在 IPv4 TOS 字段或 IPv6 流量类别字段中使用的 8 位值。
	-w <number>
		使用指定的迭代次数进行预热。
		默认值:1
	-T <string>
		在日志文件中使用给定的标题记录结果。
		默认值:<空>		

状态

平台支持

Windows

已测试:Windows 10、Windows 7 SP1

未测试:其他 Windows 版本

Linux

已测试:Ubuntu Linux 18.04.1 LTS、OpenSuse Leap 15

未测试:其他 Linux 版本

OSX

已测试:OSX 由贡献者测试

其他

目前未测试其他平台

待办事项列表

待办事项工作项如下所示。非常欢迎为这些工作项或任何其他功能和错误修复做出贡献。

  • 在其他 Windows 版本、其他 Linux 版本、FreeBSD 和其他操作系统上测试 Ethr
  • 支持 UDP 延迟、TraceRoute 和 MyTraceRoute

贡献

本项目欢迎贡献和建议。大多数贡献需要您同意一份贡献者许可协议(CLA),声明您有权且确实授予我们使用您贡献的权利。详情请访问 https://cla.microsoft.com。

当您提交拉取请求时,CLA 机器人将自动确定您是否需要提供 CLA,并适当装饰 PR(例如,标签、评论)。只需按照机器人提供的说明操作即可。在使用我们 CLA 的所有仓库中,您只需执行一次此操作。

本项目采用了 Microsoft 开放源代码行为准则。 有关更多信息,请参阅 行为准则常见问题解答 或通过 [email protected] 联系,提出任何其他问题或评论。

下载工具
协议带宽连接数/秒数据包数/秒延迟PingTraceRouteMyTraceRoute
TCP是是不适用是是是是
UDP是不适用是否不适用否否
ICMP否不适用不适用不适用是是是