ZacharyZcR
|
04cae2e42d
|
fix: 彻底解决UDP插件阻塞导致扫描无法结束的问题
根因分析(通过 goroutine dump 定位):
1. UDP conn.Write 在 WSL2 上可能永久阻塞(SetDeadline 对 Write 不生效)
2. SNMP community 爆破混入通用密码字典(57个),串行 × 10s超时 = 10分钟
修复:
- 提取 udpProbe() 公共函数,用 context timeout + conn.Close 双保险
超时后强制关闭连接,中断阻塞的 Write/Read
- BACnet/DNS/IPMI/TFTP 统一使用 udpProbe()
- SNMP probe 使用 goroutine + context select 保护
- SNMP community 列表不再混入通用密码字典(8个专用 community 足够)
- SNMP 后续 community 爆破用 3s 短超时 + 连续失败 3 次快速退出
效果: 同样的扫描从无限卡死 → 9秒完成
|
2026-06-14 22:23:50 +08:00 |
|
ZacharyZcR
|
4169eb6ee0
|
fix: UDP插件改用 conn.SetDeadline 替代类型断言
|
2026-06-14 22:23:50 +08:00 |
|
ZacharyZcR
|
63631d6cdf
|
fix: 所有UDP插件添加ReadDeadline防止无限阻塞
SNMP/BACnet/DNS/IPMI/TFTP 的 conn.Read() 在目标不响应时
无限阻塞(goroutine 泄漏),导致整个扫描无法结束。
在 Write 前设置 ReadDeadline 确保超时后返回。
|
2026-06-14 22:23:50 +08:00 |
|
ZacharyZcR
|
569d21a8bc
|
fix: harden address parsing edge cases
|
2026-06-01 04:03:46 +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
|
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 |
|