shadow1ng/fscan · error
service_not_identified
Error message
service_not_identified
What it means
Guard in PostgreSQL identifyService: the error text from the connection/login probe contained none of the PostgreSQL keywords (postgres, authentication, password, role, user, pq:), so the port cannot be confirmed as PostgreSQL and identification fails with this shared sentinel.
Source
Thrown at plugins/services/postgresql.go:263
state.IncrementTCPSuccessPacketCount()
}
var banner string
if err != nil {
errMsg := strings.ToLower(err.Error())
if strings.Contains(errMsg, "postgres") ||
strings.Contains(errMsg, "authentication") ||
strings.Contains(errMsg, "database") ||
strings.Contains(errMsg, "password") ||
strings.Contains(errMsg, "role") ||
strings.Contains(errMsg, "user") ||
strings.Contains(errMsg, "pq:") {
banner = "PostgreSQL"
} else {
return &ScanResult{
Success: false,
Service: "postgresql",
Error: fmt.Errorf("%s", i18n.Tr("service_not_identified", "PostgreSQL")),
}
}
} else {
banner = "PostgreSQL"
}
session.LogSuccess(i18n.Tr("postgresql_service", target, banner))
return &ScanResult{
Type: plugins.ResultTypeService,
Success: true,
Service: "postgresql",
Banner: banner,
}
}
func init() {
RegisterPluginWithPorts("postgresql", func() Plugin {View on GitHub (pinned to 95cc12e753)
Solutions
- Confirm the port actually runs PostgreSQL
- Expand the keyword list used for banner matching
- Inspect the raw error message to see what service answered
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at plugins/services/postgresql.go:263 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/9698e9b5de39be6e.
Report an issue: GitHub.