ZacharyZcR
15a7670ba2
Harden scan robustness and tests
2026-06-13 07:55:37 +08:00
ZacharyZcR
1595c92aed
feat: 统一服务缓存 + 指纹驱动插件匹配
...
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
将 webServiceCache 扩展为通用 serviceCache,所有指纹识别结果
统一缓存,插件匹配时端口不命中则回退到服务名称匹配。
删除多余的 service_cache.go,复用已有的 ServiceInfo 体系。
补充 nil 防御、Explicit 标记、大量单元/集成/回归测试。
2026-06-12 19:49:07 +08:00
ZacharyZcR
517133f72f
fix: 非标准端口的服务无法匹配对应插件 #588
...
端口扫描识别到 8881 上运行 SSH,但 SSH 插件只注册了 [22,2222,2200,22222],
端口不匹配导致插件不执行。
新增服务名称缓存:端口扫描阶段记录 host:port → serviceName,
插件匹配时端口不命中则回退到服务名称匹配。
2026-06-12 19:31:56 +08:00
ZacharyZcR
0918eb38a6
fix: 移除误导性的"无可用插件"日志 #588
...
扫描开始前的插件预检基于端口列表静态匹配,不代表实际扫描中插件
不会执行。移除"无可用插件"提示,避免用户误以为插件未工作。
2026-06-12 16:36:27 +08:00
ZacharyZcR
5b7e72e56e
Fix credential cleanup and explicit tuning flags
2026-06-12 15:30:44 +08:00
ZacharyZcR
52f872b8d1
fix: webtitle HTTP 请求失败时重试,修复批量扫描 POC 缺失 #587
...
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
批量扫描(-hf)时并发压力导致 HTTP 请求瞬时失败,getWebTitle
直接返回 error,跳过指纹识别和 POC 触发。
加入指数退避重试(200ms→400ms),最多 3 次,复用 config.MaxRetries。
2026-06-12 12:23:54 +08:00
ZacharyZcR
66b175d623
ci: 升级 CI Go 版本到 1.25
2026-06-12 11:41:49 +08:00
ZacharyZcR
6b5bc191ca
fix: 降级 modernc.org/sqlite 到 v1.39.0 适配 CI
2026-06-12 10:11:34 +08:00
ZacharyZcR
f883944b2b
feat: 自适应并发调度 — 网络探测 + AIMD + 参数智能推导
...
扫描前自动探测网络环境(RTT、丢包率、fd limit),基于探测数据
推导 6 个关键参数,替代硬编码默认值:
- Timeout: median_RTT + 4σ(覆盖 99.9% 正常连接)
- ModuleThreadNum: target_concurrency / 30
- MaxRetries: ceil(log(0.01)/log(loss_rate))(全失败概率 <1%)
- ICMPRate: 环境基准 × fd 系数
- PocNum: 跟随 ModuleThreadNum
- DisablePing: 已有 ICMP 权限降级机制
线程池从单信号(资源耗尽率)升级为 AIMD + 慢启动:
- 慢启动:target/4 起步,500ms 翻倍
- 稳态 AIMD:健康 +5%,拥塞 ×0.5
- 双信号:资源耗尽率 + RTT 趋势(双 EMA)
用户 -t 显式指定时作为 ceiling,探测仍调整其他参数。
测试:单元 + 边界 + 集成 + 真实网络,core 包 580+ 用例全通过。
2026-06-12 09:46:02 +08:00
ZacharyZcR
683707fcd4
feat: Web 版独立入口 + SQLite 持久化存储
...
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
- 拆分 main.go 为 main_cli.go 和 main_web.go,Web 版不再包含 CLI 参数解析
- Web 版直接启动 HTTP 服务,通过 -port/-lang 控制,无需 -web flag
- 结果存储从内存 map 替换为 SQLite(modernc.org/sqlite,纯 Go 零 CGO)
- 数据库文件 ~/.fscan/results.db,进程重启后结果不丢失
- 修复结果分布面板跟随 tab 筛选联动的问题
2026-06-12 05:17:26 +08:00
ZacharyZcR
b94e8bc4ca
fix: 修复 SSH 扫描 goroutine 泄漏
...
ssh.NewClientConn 不接受 context,context 取消后底层 TCP 连接未关闭,
导致 readLoop goroutine 永久阻塞在 conn.Read 上。大规模扫描时泄漏数万
goroutine。
- doSSHAuth 新增 goroutine 监听 context 取消并关闭底层连接
- TestSingleCredential 移除 5 秒超时放弃逻辑,改为持续等待清理
2026-06-12 03:59:02 +08:00
ZacharyZcR
4198c1abc8
修复默认扫描 POC 结果缺失 #586
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
2026-06-04 14:41:49 +08:00
ZacharyZcR
68f990d20b
显示 Web 服务识别 URL
2026-06-04 14:26:20 +08:00
ZacharyZcR
72042111c6
Merge pull request #580 from shadow1ng/dev
...
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
v2.2.0-rc Release
v2.2.0-rc
2026-06-01 08:54:24 +08:00
ZacharyZcR
08a87b3128
ci: 完善发版流程
...
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
- release workflow 自动读取 .github/release-notes/<tag>.md 覆盖 body
- 移除手动 prerelease input(goreleaser auto 模式根据 tag 后缀判断)
- 新增 RELEASE.md 发版流程文档
2026-06-01 08:42:17 +08:00
ZacharyZcR
cc1af631f0
fix: CI 测试排除路径 mylib → libs
2026-06-01 08:40:14 +08:00
ZacharyZcR
5078fbc975
fix: 更新 lint 排除路径 mylib → libs
2026-06-01 08:39:49 +08:00
ZacharyZcR
354ad2e24b
chore: 移除 fscan-lite (C 版本)
...
功能过于单一(仅 TCP 端口扫描),与 fscan 品牌定位不符。
fscan-nolocal 已是精简版的正确方案。
- 删除 fscan-lite 源码和构建脚本
- goreleaser 移除 lite 构建步骤
- CI 不再安装 mingw 交叉编译工具
2026-06-01 08:37:04 +08:00
ZacharyZcR
942f0fa6c3
fix: web API 版本号改为动态获取,不再硬编码
2026-06-01 08:34:42 +08:00
ZacharyZcR
37b77f9c86
docs: 添加 v2.2.0-rc Release Notes 草稿
...
用于发版时 gh release create --notes-file 引用。
2026-06-01 08:28:59 +08:00
ZacharyZcR
a02eed0518
refactor: mylib 重命名为 libs
...
更清晰的目录命名,libs/ 存放内嵌的独立协议实现库。
2026-06-01 08:22:13 +08:00
ZacharyZcR
019d13c9d4
chore: 版本号更新为 2.2.0-rc
...
- README/README_EN 版本标记更新
- globals.go version 常量更新
- 移除 Issue 模板中不可用的安全报告链接
2026-06-01 08:20:01 +08:00
ZacharyZcR
c43982f834
chore: 更新 Issue 模板
...
- 版本号更新至 2.2.0-rc / 2.1.3 / 2.1.2
- 移除 placeholder 预填充内容,避免用户不删不改直接提交
- 新增 SDK、代理、mips 等选项
- macOS/Ubuntu 版本更新
- 新增安全漏洞报告入口指引
- 模板顶部增加"未填写有效信息会被关闭"提示
2026-06-01 08:17:00 +08:00
ZacharyZcR
d6d323854a
refactor: 完成全局状态到 session 的完整迁移
...
将 plugins/services、plugins/local、plugins/web、webscan 层的日志输出、
漏洞结果保存和 TCP 计数器从全局 common.Log*/GetGlobalState() 迁移到
session 实例方法,确保 SDK 并发扫描时各实例完全隔离。
- 50 个文件,所有插件日志走 session.Log*
- DoRequest 加入 session 参数,计数器走 session.State
- POC 执行器通过 POCContext.Session 传递
- 仅保留 init() 和 CEL runtime 等无 session 场景的全局回退
2026-06-01 08:13:23 +08:00
ZacharyZcR
569d21a8bc
fix: harden address parsing edge cases
2026-06-01 04:03:46 +08:00
ZacharyZcR
8ec96bfe6d
fix: harden scan edge cases
2026-06-01 03:32:13 +08:00
ZacharyZcR
8b558b4f12
fix: align atomic counters on arm
2026-06-01 03:03:40 +08:00
ZacharyZcR
3e4e2db722
feat: stream large host scans
2026-06-01 02:55:28 +08:00
ZacharyZcR
ac755a9b4a
test: avoid expanding massive CIDRs
2026-06-01 02:33:10 +08:00
ZacharyZcR
ea17b5b1bc
feat: allow multiple added passwords
...
Fixes #584
2026-06-01 02:06:15 +08:00
ZacharyZcR
bfc0e0fb52
fix: support SOCKS5 proxy auth
...
Fixes #585
2026-06-01 01:59:08 +08:00
ZacharyZcR
40b0eee654
Remove SimpleMaxHosts limit to fix large CIDR scanning
...
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
Closes #583
2026-05-27 16:16:42 +08:00
ZacharyZcR
8d30ee334c
Add native protocol service plugins
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
2026-05-23 15:51:50 +08:00
ZacharyZcR
73cbe803c4
Expand i18n coverage
2026-05-23 15:18:40 +08:00
ZacharyZcR
9ed6cc95b6
replace string builder sprintf with fprintf
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
2026-05-23 07:53:28 +08:00
ZacharyZcR
a0f0379c6c
silence ci warnings and staticcheck suggestions
2026-05-23 07:50:49 +08:00
ZacharyZcR
3c7823355d
tighten scan session and HTTP paths
2026-05-23 07:46:53 +08:00
ZacharyZcR
1a714f6a0c
reduce scanner client fingerprints
2026-05-23 07:20:24 +08:00
ZacharyZcR
0046817c2e
fix mssql login client metadata
2026-05-23 07:17:55 +08:00
ZacharyZcR
e0080555b4
fix: 跳过snmp社区字符串暴力破解中的冗余public探测
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
2026-05-19 21:00:47 +08:00
ZacharyZcR
bc2a8f653a
fix: 修复新服务扫描插件的健壮性问题
...
- ipmi: 删除未使用的 encoding/binary 导入
- rmi: TCP读取改用 io.ReadFull 避免分片导致的解析错误
- jdwp: handshake响应读取改用 io.ReadFull 避免分片误判
- nfs: v4协议回退时使用新连接避免残留数据污染
- snmp: 修正timeout计算与其他插件保持一致
2026-05-19 20:46:22 +08:00
ZacharyZcR
a92df59dfe
fix: NFS plugin RPC probe + UDP dispatch in auto mode
...
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
NFS: use RPC NULL call to detect NFS service before MOUNT EXPORT
UDP dispatch: query plugin registry directly in auto mode instead of
GetPlugins which excludes UDP from FilterService
2026-05-19 00:37:35 +08:00
ZacharyZcR
0a28db7371
feat: add NFS, RMI and IPMI plugins
...
NFS (2049/TCP): Sun RPC EXPORT call, lists shared directories
RMI (1099/TCP): Java RMI handshake, detects exposed JMX/RMI endpoints
IPMI (623/UDP): RMCP ping + channel auth capabilities probe
All pure stdlib, zero new dependencies.
2026-05-19 00:01:58 +08:00
ZacharyZcR
778ba019d5
feat: add IMAP and POP3 plugins for mail server detection
...
IMAP (143/993): banner grab + LOGIN brute force
POP3 (110/995): banner grab + USER/PASS brute force
Both registered as safe default plugins with auth-check capability.
2026-05-18 23:29:52 +08:00
ZacharyZcR
f43e3e3d0a
feat: add JDWP plugin for Java debug port detection
...
Detects exposed JDWP (Java Debug Wire Protocol) services on ports
5005/8000/8787/5050. Performs protocol handshake and reports as VULN
since an exposed debug port allows remote code execution.
2026-05-18 23:22:15 +08:00
ZacharyZcR
a1588a321f
feat: SDK agent integration + UDP plugin framework + SNMP plugin
...
SDK enhancements for endpoint agent embedding:
- ScanWithController for pause/resume and live stats
- OnProgress callback for periodic progress reporting
- TaskID injection into every scan result
- ScanController with goroutine-safe pause/resume/stats
- Multi-target stats aggregation (race-free)
UDP plugin infrastructure:
- PluginTypeUDP registry with dedicated dispatch path
- DialUDP on ScanSession with rate limiting and packet counting
- UDP plugins bypass TCP port scan, probe targets directly
- FilterService excludes UDP plugins from TCP port matching
SNMP plugin (first UDP plugin):
- SNMPv2c GetRequest probe for sysDescr detection
- Community string brute force (public/private/community/etc)
- Pure stdlib implementation (encoding/asn1)
- Registered as safe default plugin on port 161/UDP
Tests: 95.7% SDK coverage, race-free, 50+ new test cases
2026-05-18 23:11:39 +08:00
ZacharyZcR
eb4fa38fea
merge sdk architecture polish
2026-05-18 21:41:01 +08:00
ZacharyZcR
c15aa3488b
polish embedded scanner SDK contracts
2026-05-18 21:40:52 +08:00
ZacharyZcR
218811c38d
Merge pull request #582 from shadow1ng/feature/sdk-library
...
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
Add embeddable scanner SDK
2026-05-18 18:03:12 +08:00
ZacharyZcR
5a884ca6ad
fix lint issues before merge
2026-05-18 17:59:00 +08:00