Skip to content

Releases

v2026_0929

Choose a tag to compare

@github-actions github-actions released this 29 Sep 15:24

Full Changelog: v2026_0906...v2026_0929

v2026_0906

Choose a tag to compare

@github-actions github-actions released this 05 Sep 19:12

Full Changelog: v2026_0825...v2026_0906

v2026_0825

Choose a tag to compare

@github-actions github-actions released this 25 Aug 09:07

Full Changelog: v2026_0820...v2026_0825

Full Changelog: v2026_0820...v2026_0825

Full Changelog: v2026_0820...v2026_0825

Full Changelog: v2026_0820...v2026_0825

Full Changelog: v2026_0820...v2026_0825

v2026_0820

Choose a tag to compare

@github-actions github-actions released this 20 Aug 16:41
修复 traceroute TCP 竞态: connect 错误后仍等 ICMP + Windows 拒绝识别

问题现象(Linux 实测):
- TCP traceroute 10.192.15.7 -T -p 8085: 第1跳 * 超时, 第2跳直达目标
- 中间路由器明明返回了 Time Exceeded, 却显示无响应

根因:
1. 核心竞态: Linux 内核收到 ICMP Time Exceeded 后, 除了投递给 raw socket,
   还会把 EHOSTUNREACH 注入进行中的 connect()。原代码收到该错误立即返回
   '无法确认', 导致中间跳的 ICMP 响应被竞态丢弃
2. isConnectionRefused 在 Windows 上失效: Go syscall 包把该常量定义为
   POSIX 别名(数值≠10061), errors.Is 永远 false, 导致本机 RST 场景
   (端口关闭)也显示超时而非'到达目标'。已用 errors.As 提取 Errno
   数值按平台匹配(WSAECONNREFUSED=10061)

修复:
1. sendTcpProbe: 非确定性 TCP 错误(EHOSTUNREACH/ETIMEDOUT)后不立即返回,
   继续等待 raw socket 的 ICMP Time Exceeded 直到 deadline;
   仅 err==nil(连接成功)或 RST(连接拒绝)才直接判定到达目标
2. isConnectionRefused: 增加 Windows Errno(10061) 数值匹配
3. parseIcmpType 升级为 parseIcmpTypeCode: 同时提取 type/code,
   type=3 仅 code=3(端口不可达)判定到达目标, 其他 code(网络/主机不可达)
   视为中间跳, 避免把'不可达'误报为'到达'
4. 新增 parseIcmpTriggerPort: 提取 ICMP 触发包目的端口,
   校验属于当前探测, 防止无关/陈旧 ICMP 干扰路由显示
5. 测试: TestParseIcmpType 适配新签名(含 code),
   新增 TestParseIcmpTriggerPort(覆盖 Linux/Windows 两种格式)

冒烟验证(本机):
- TCP traceroute 关闭端口: 第1跳 [1ms] 到达目标(RST 识别)
- TCP traceroute 开放端口: 第1跳 [1ms] 到达目标(连接成功)
- 四平台交叉编译通过, dist 已重建, 待用户真实内网验证中间跳

v2026_0808

Choose a tag to compare

@github-actions github-actions released this 08 Aug 09:14
功能完善: 端口范围校验, 扫描并发限制, 退出码语义化, HTTPS支持, JSON输出

1. 修复端口范围上界校验 bug (spear.go parsePortRange)
   - 之前 12345-70000 会产生非法端口 70000, 现完整校验 1-65535
   - 与单端口 parsePorts 行为保持一致
2. 全端口扫描并发限制 (spear.go scanTarget/QuickPing)
   - 信号量限制最多 1024 并发, 防止 65535 个 goroutine 耗尽文件描述符
3. 退出码语义化 (所有模式)
   - 0=成功 1=参数错误 2=连接失败 3=内部错误
   - 25 处 os.Exit(1) 按语义分类替换
4. port 模式 HTTPS/TLS 支持
   - 新增 -tls-cert/-tls-key 参数, 校验同时指定且文件存在
   - 协议显示 http/https, 输出 https://localhost:port
   - 实测: 自签名证书 + curl -k 验证通过
5. tcping/scan 模式 JSON 输出
   - 新增 -json-out 参数, 输出机器可读 JSON (MarshalIndent)
   - 支持脚本解析 (ScanResult 原有 json tag)
6. 新增 3 个测试: 端口范围边界/单端口边界校验
7. 版本号升至 1.1.0
8. README/帮助文档同步新参数与退出码说明

v2026_0807_1315

Choose a tag to compare

@github-actions github-actions released this 07 Aug 13:15
修复 CI 交叉编译失败: traceroute 使用 syscall.Handle(仅Windows可用) 导致非Windows平台无法…

v2026_0807

Choose a tag to compare

@github-actions github-actions released this 07 Aug 16:14
全面代码审计修复: build标签改年月日, IPv6解析, TCP traceroute, 安全加固

1. build.yml: Release 标签从 v年_月日_时分 改为 v年_月日
2. udp.go: 修复 IPv6 解析 bug (::1 被错误解析为 host=:: port=1)
   改用 parseHostSegment 统一解析, 正确处理 [::1]:53 和 ::1 53
3. traceroute.go: 实现真正的 TCP traceroute
   - 新增 sendTcpProbe: 通过 Dialer.Control 在 TCP SYN 发出前设置 TTL
   - 新增 sockopt_unix.go/sockopt_windows.go 跨平台 setSocketTTL
   - TCP 模式: SYN 到达目标返回 SYN-ACK/RST, 中间路由器返回 ICMP Time Exceeded
   - 删除未使用的 tcpProbe 死代码
   - 移除 math/rand 依赖, 修复 probePort 随机化逻辑
4. main.go: 安全加固与完善
   - 静态目录校验移至 runPortMode, 避免多端口重复打印
   - handleEcho 请求体限制 1MB, 防止内存耗尽
   - extractTrailingFlags 新增 -version/-html/-json/-dir flag 回收
   - 版本检查移至 extractTrailingFlags 之后
5. bench.go: 修复 QPS 除零风险 (elapsed=0 时返回 0.0)
6. curl.go: 响应体限制 10MB, 防止超大响应耗尽内存
7. 新增 6 个测试用例: IPv6解析/连接拒绝判断/version后置flag/html-dir后置flag/UDP IPv6/QPS除零

v2026_0805_0955

Choose a tag to compare

@github-actions github-actions released this 05 Aug 09:55
合并来自 auto/fix-build-sh-perm-23c1 的合并请求 #5

fix: 为 build.sh 添加可执行权限,修复 CI 构建失败

PR-URL: #5

v2026_0804_1703

Choose a tag to compare

@github-actions github-actions released this 04 Aug 17:03
构建产物文件名去掉时间戳, Release 标签保留 v年_月日_时分 格式

v2026_0804_1700

Choose a tag to compare

@github-actions github-actions released this 04 Aug 17:00
修复 Release 创建失败(403): 显式声明 contents 写权限并升级 action-gh-release 至 v2