Skip to content

Releases: chainreactors/gogo

v2.15.0

Choose a tag to compare

@M09Ic M09Ic released this 14 Jul 08:45

Bug Fixes

-F 解析 .dat 文件无输出 (#127)

  • RunnerOption 在 proxy 重构中新增了 ProxyDialTimeout/ProxyDialContext 两个 func 类型字段,Go 的 json.Marshal 对含有 func 字段的结构体在类型检查阶段直接报错(即使值为 nil),导致 Config.ToJson() 将错误字符串写入 .dat 文件的 config header,使所有 .dat 文件损坏
  • RunnerOpt 添加 json:"-" tag,与 Config 中其他所有运行时字段保持一致
  • ToJson 错误处理改为返回 "{}" 而非错误字符串,防止写入损坏的 .dat 文件
  • parseSegment 增加 fallback:config header 解析失败时用默认 config 兜底,兼容已损坏的旧版 .dat 文件,可恢复其中的扫描数据
  • parseScanResultData/parseSmartResultData 遇到单行 JSON 解析错误时 skip 而非中止整段解析

其他修复

  • 修复 -F 格式化输出中结果重复的问题
  • 修复 -o 自定义分隔符未生效的问题
  • 修复 jsonlines 格式解析 smart/alive 结果失败的问题
  • 模板加载时跳过编译错误的模板而非中止整个加载过程

New Features

SDK 集成机制

gogo 从 CLI 工具扩展为可嵌入的扫描引擎,新增以下 SDK 集成点:

  • context.Context 支持:扫描任务可通过 context 取消,优雅退出
  • ResultCallback:实时回调接收每条扫描结果,无需等待扫描结束
  • ResourceProvider:外部注入指纹/模板/端口配置等资源,替代内嵌数据
  • BeforeInit/AfterInit 钩子:扫描初始化前后的自定义扩展点
  • RunWithArgs 入口:暴露可复用的 runner,支持编程式调用
  • 实例级 proxy dialer(RunnerOption.ProxyDialContext):并发多任务可使用不同代理,不再共享全局 DefaultTransport

FingerPrintHub 主动指纹

  • 集成 FingerPrintHub 主动指纹匹配引擎,通过 -vv 参数触发
  • 基于 Aho-Corasick 多模式匹配加速的指纹预筛选

大格式化输出加速

  • -F 处理大 .dat 文件时性能优化,显著减少格式化输出耗时

Underlying Changes

以下变更来自底层依赖库的升级,对 gogo 的扫描能力和准确率有直接影响:

fingers(指纹引擎)

  • 引擎级 CaseInsensitive 开关,统一大小写匹配策略
  • FingersEngine 自持 PortPreset,消除全局变量依赖
  • passive_only build tag,允许不依赖 net/http 的被动模式编译
  • Hub/Xray 引擎改用完整模板执行,修复多请求模板 body_N 塌陷为 body_1 的漏匹配
  • 主动探测新增跨 finger 的请求缓存,相同 send_data 路径只发一次 HTTP 请求
  • CPE vendor:product 辅助函数,为自动化漏洞关联提供基础

neutron(模板引擎)

  • 新增 ChainExecutor,通用模板链遍历执行器,替代原有的手动遍历逻辑
  • 对齐 nuclei 的 redirect 策略(DontFollow / FollowAll / FollowSameHost)
  • per-context CookieJar:每次模板执行自动创建独立 CookieJar,redirect 链内 Set-Cookie 正确传递
  • 独立 HTTPMatch/HTTPExtract 函数,可在非模板上下文中直接使用
  • 全面对齐 nuclei 行为:下线 RootURL/favicon 自造机制,收敛到标准模板语义

utils(基础工具库)

  • httputils:HTTP 响应自动 charset 解码(GBK/Shift_JIS/EUC-KR/Big5 → UTF-8),基于 Content-Type header 和 HTML meta 标签自动检测
  • ahocorasick:Aho-Corasick 多模式匹配引擎,支持正则文字提取和双关键字索引,用于指纹预筛选加速
  • parsers:统一的 Result 基础类型、NeutronResult/ProtonFinding 类型,标准化扫描结果表示
  • httpx:通用 HTTP client 构建器,支持 proxy/timeout/redirect 预设

proxyclient(代理客户端)

  • 新增 WireGuard 协议支持
  • 新增 Trojan/VMess/VLess/AnyTLS/Hysteria2 协议(via extra/ 模块)
  • Clash 订阅解析支持
  • extra/ 重构为独立 Go 模块,按需引入

logs(日志库)

  • 并发写入 mutex 保护,修复高并发场景下的竞态问题

Build

  • go.mod 锁定 go 1.17,保持 Go 1.11 / WindowsXP 交叉编译兼容
  • Release 构建切换至 Go 1.17,二进制体积 ~4 MB(upx 后),相比 Go 1.24 构建减少 ~30%
  • 移除未使用的 nmap_service_probes(661 kB)和 nmap_services(226 kB)内嵌数据
  • goreleaser 新增 goregexp tag,排除 go-re2 wasm 引擎(~5 MB)

v2.14.1 (re-release)

Choose a tag to compare

@github-actions github-actions released this 16 Dec 16:29

v2.14.1

⚠️ Breaking Changes

  • [refactor] 移除全局变量,重构内部结构 (如果你使用 gogo 作为 library,可能需要调整代码)

Changelog

  • [feat] 实现 gogo SDK 和示例代码, 支持将 gogo 作为库使用
  • [feat] 重构 gogo SDK 接口
  • [feat] 添加扫描计时功能, #120
  • [fix] 修复 TCP 指纹加载失败问题
  • [fix] 修复 -v/-e 参数不生效问题
  • [fix] 修复 -m s/ss 模式下的cidr解析panic , #122

Full Changelog: v2.14.0...v2.14.1

v2.14.0

Choose a tag to compare

@github-actions github-actions released this 06 Jul 08:57

破坏性更新, 支持了多次任务输出到一个文件, 重构了输出文件结构

Changelog

  • [feat] 如果没有指定-o/-O自动基于-f的后缀解析输出格式
  • [feat] 支持通过!标记排除端口, #113
  • [feat] 支持自动合并扫描结果, #115
  • [fix] 修复ubuntu20glibc not work, #116
  • [fix] 程序退出过快导致没有完全print, #105

Full Changelog: v2.13.8...v2.14.0

v2.13.8

Choose a tag to compare

@github-actions github-actions released this 12 May 14:57

Changelog

  • [feat] 新增--ff 参数用来动态追加指纹, 支持文件和url gogo -i baidu.com --ff finger1.yaml --ff finger2.yaml --ff http://host/finger3.yaml
  • [improve] port-config 支持从url加载
  • [improve] -p - 会自动追加icmp,oxid, #114

Full Changelog: v2.13.7...v2.13.8

v2.13.7

Choose a tag to compare

@github-actions github-actions released this 19 Feb 18:31

What's Changed

  • [fix] 修复自v2.13.4引入的workflow不生效的bug
  • [fix] remove unnecessary wg.Done by @BaiMeow in #104
  • [fix] 降级github action的golang版本为1.17
  • [fix] -O not work, #97
  • [fix] memcache 拼写错误 #87

New Contributors

Full Changelog: v2.13.6...v2.13.7

v2.13.6

Choose a tag to compare

@github-actions github-actions released this 09 Jan 08:44

Changelog

  • [feat] 支持代理链gogo --proxy socks5://1.1.1.1 --proxy http://2.2.2.2 ...
  • [feat] 支持http/https, socks5/socks4, ssh 代理
    (基于rem的附属基础设施: https://github.com/chainreactors/proxyclient)
  • [enhance] --exclude/exclude-file 全局生效
  • [fix] 修复fingers库多个bug
    • [fix] 统一指纹匹配时的转小写逻辑
    • [fix] 多个header时指纹匹配不完全的bug,例如多个Set-Cookie
    • [fix] 修复UTF8ConvertString的错误使用, 内存频繁分配,CPU大量占用的bug
    • [fix] 修复HTTP Chunk格式的body解析
  • [fix] 修复proxyclient, fingers, utils 库对v1.11兼容性

v2.13.5

Choose a tag to compare

@github-actions github-actions released this 12 Nov 06:23

Changelog

  • [fix] -n/--no 不生效的bug
  • [fix] 限制http读取的数据上限为32K
  • [enhance] 去掉了internal包限制, 允许gogo被其他golang程序当作lib调用 #101

Full Changelog: v2.13.4...v2.13.5

v2.13.4

Choose a tag to compare

@github-actions github-actions released this 24 Sep 10:59

Changelog

  • [enhance] 将各种配置从json迁移到yaml 代价可以接受, 不影响兼容性, gogo的体积会大几十KB 修复 #96
  • [enhance] 去掉了原来的json加载, 现在支持yaml加载, #93
  • [enhance] gogo 在被IoM 的execute_exe加载时挂死的bug

Tempaltes

Full Changelog: v2.13.3...v2.13.4

v2.13.3

Choose a tag to compare

@github-actions github-actions released this 29 Aug 09:27

Changed Log

  • [fix] 修复windows xp 版本无法运行的bug #89

neutron 更新

  • [enhance] neutron现在支持 req-codition 字段

templates

Full Changelog: v2.13.2...v2.13.3

v2.13.2

Choose a tag to compare

@github-actions github-actions released this 16 Jul 06:21

Changelog

  • [feature] 支持加载端口配置文件, -P/--port-config, 需要注意只支持json格式, 如果是yaml请转json #78
  • [enhance] 在主动指纹识别时会使用random user-agent
  • [enhance] 更新chainreactor相关依赖, 大量代码被重写
  • [enhance] 优化-o/-O参数的help
  • [enhance] 优化潜在的conn泄露问题 @XiaoliChan

fingers update

  • [fix] 修复fingers引擎解析default port失效的bug
  • [fix] 修复socket body字段匹配时大小写转换导致的bug chainreactors/zombie#21
  • [fix] 修复socket 指纹识别中, md5/mmh3/body失效的bug

neutron update

目前绝大部分nuclei的poc都不需要修改就能在neutron上运行

  • [fix] 修复一个重大bug, 该bug导致每个template只能被使用一次。chainreactors/neutron#4 #82
  • [feature] 实现解析annotation, 使得存在annotation的yaml也不会报错, 实现了timeout annotation
  • [enhance] 更优雅的实现randstr与randnum
  • [feature] 支持DN相关变量 @XiaoliChan
  • [feature] 实现yaml反序列化保留map顺序, 可以通过编译tag json兼容go1.11
  • [feature] dsl新增generate_shiro_gadget @XiaoliChan
  • [ehance] 解决潜在的conn泄露问题 @XiaoliChan

templates update

  • 修复springboot可能导致的误报bug

Full Changelog: v2.13.1...v2.13.2