fix: 修复3个实测发现的问题

1. -pwd 支持逗号分隔多个密码
   之前 -pwd "123,456,root" 被当作单个密码,SSH root:123 无法匹配
   现在逗号分隔为独立密码,空格保留(可能是密码的一部分)

2. -nobr 禁用爆破时仍检测 Redis 未授权访问
   未授权访问是服务探测不是爆破,不应被 -nobr 跳过
   将未授权检测移到 DisableBrute 判断之前

3. 指定端口时跳过 UDP 插件调度
   -p 80 只扫 HTTP 时不需要 SNMP/BACnet/DNS 等 UDP 探测
   仅在默认端口扫描时才分发 UDP 插件
   效果: -p 80 从 9 秒降到 3 秒
This commit is contained in:
ZacharyZcR
2026-06-14 22:23:51 +08:00
parent a52e93e84c
commit 626d8f79bb
4 changed files with 20 additions and 11 deletions
+7 -2
View File
@@ -129,9 +129,14 @@ func parseUsernames(fv *FlagVars) ([]string, error) {
func parsePasswords(fv *FlagVars) ([]string, error) {
var passwords []string
// 命令行密码
// 命令行密码(支持逗号分隔多个值,保留空格作为密码的一部分)
if fv.Password != "" {
passwords = append(passwords, fv.Password)
for _, p := range strings.Split(fv.Password, ",") {
p = strings.TrimSpace(p)
if p != "" {
passwords = append(passwords, p)
}
}
}
// 从文件读取
+3 -2
View File
@@ -9,7 +9,7 @@ import (
func TestParsePasswordsKeepsPrimaryPasswordLiteral(t *testing.T) {
fv := &FlagVars{
Password: "root admin",
Password: "root admin,pass0",
AddPasswords: "pass1 pass2,pass3\tpass4",
}
@@ -17,7 +17,8 @@ func TestParsePasswordsKeepsPrimaryPasswordLiteral(t *testing.T) {
if err != nil {
t.Fatalf("parsePasswords error = %v", err)
}
want := []string{"root admin", "pass1", "pass2", "pass3", "pass4"}
// -pwd 逗号分隔,空格保留;-pwda 逗号/空格/tab 分隔
want := []string{"root admin", "pass0", "pass1", "pass2", "pass3", "pass4"}
if !reflect.DeepEqual(got, want) {
t.Fatalf("parsePasswords() = %#v, want %#v", got, want)
}