mirror of
https://github.com/shadow1ng/fscan.git
synced 2026-09-26 05:01:53 +08:00
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秒完成
This commit is contained in:
@@ -95,13 +95,12 @@ func TestSNMPBuildersAndCommunityList(t *testing.T) {
|
||||
}
|
||||
|
||||
cfg := common.NewConfig()
|
||||
cfg.Credentials.Passwords = []string{"private", "custom", "public"}
|
||||
communities := NewSNMPPlugin().buildCommunityList(cfg)
|
||||
if !containsString(communities, "public") || !containsString(communities, "private") || !containsString(communities, "custom") {
|
||||
if !containsString(communities, "public") || !containsString(communities, "private") {
|
||||
t.Fatalf("community list missing expected entries: %v", communities)
|
||||
}
|
||||
if countString(communities, "public") != 1 || countString(communities, "private") != 1 {
|
||||
t.Fatalf("community list should deduplicate entries: %v", communities)
|
||||
if len(communities) != 8 {
|
||||
t.Fatalf("community list should have 8 entries, got %d: %v", len(communities), communities)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user