shadow1ng/fscan · error
service_auth_failed
Error message
service_auth_failed
What it means
Guard at the end of RDPPlugin.Scan: every credential pair was tried and none authenticated successfully (no 'dial err' among failures), so the scan concludes with the shared auth-failed sentinel for the RDP service.
Source
Thrown at plugins/services/rdp.go:156
}
}
// 记录失败(仅调试时)
if err != nil && strings.Contains(err.Error(), "dial err") {
// 端口未开放,直接返回
return &ScanResult{
Success: false,
Service: "rdp",
Error: fmt.Errorf("%s", i18n.GetText("rdp_port_closed")),
}
}
}
// 所有凭据都失败
return &ScanResult{
Success: false,
Service: "rdp",
Error: fmt.Errorf("%s", i18n.GetText("service_auth_failed")),
}
}
// rdpCrack 使用NLA认证验证凭据,不建立完整会话,不会挤掉已登录用户
func (p *RDPPlugin) rdpCrack(host, domain, user, password string, config *common.Config, state *common.State) (bool, error) {
timeout := int64(config.ModuleTimeout().Seconds())
// 使用NLA仅验证模式:只验证凭据,不建立RDP会话
// 这样不会挤掉目标机器上已登录的用户
success, err := login.NlaAuth(host, domain, user, password, timeout)
if success {
state.IncrementTCPSuccessPacketCount()
return true, nil
}
if err != nil && strings.Contains(err.Error(), "dial err") {
state.IncrementTCPFailedPacketCount()
return false, errView on GitHub (pinned to 95cc12e753)
Solutions
- Expand the credential dictionary
- Verify NLA/domain settings match the target environment
- Check whether account lockout policy is now blocking logons
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at plugins/services/rdp.go:156 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of shadow1ng/fscan@95cc12e753 (2026-09-06).
Data as JSON: /api/errors/dfd2a4f262157138.
Report an issue: GitHub.