shadow1ng/fscan · warning
%s
Error message
%s
What it means
The Cassandra plugin's Scan found no credentials to test: GenerateCredentials returned an empty list for the 'cassandra' service. The plugin aborts with a failed ScanResult carrying a localized 'no credentials' error instead of running the auth test loop.
Source
Thrown at plugins/services/cassandra.go:49
config := session.Config
state := session.State
target := info.Target()
if config.DisableBrute {
return p.identifyService(ctx, info, session)
}
// 先尝试无认证连接
if result := p.tryNoAuthConnection(ctx, info, session); result != nil && result.Success {
return result
}
credentials := GenerateCredentials("cassandra", config)
if len(credentials) == 0 {
return &ScanResult{
Success: false,
Service: "cassandra",
Error: fmt.Errorf("%s", i18n.GetText("service_no_credentials")),
}
}
authFn := p.createAuthFunc(info, config, state)
testConfig := DefaultConcurrentTestConfigWithTarget(config, info)
result := TestCredentialsConcurrently(ctx, credentials, authFn, "cassandra", testConfig)
if result.Success {
session.LogVuln(i18n.Tr("cassandra_credential", target, result.Username, result.Password))
}
return result
}
func (p *CassandraPlugin) createAuthFunc(info *common.HostInfo, config *common.Config, state *common.State) AuthFunc {
return func(ctx context.Context, cred Credential) *AuthResult {
return p.doCassandraAuth(ctx, info, cred, config, state)View on GitHub (pinned to 95cc12e753)
Solutions
- Supply credentials in the scan config (username/password lists or a credential source) for the cassandra service.
- Check the credential loading configuration: wordlist paths exist and are readable, and no filter excludes all entries.
- Log or inspect GenerateCredentials output for 'cassandra' to confirm what the generator produces with your config.
Example fix
// before
cfg := config // no credentials configured
// after
cfg.CredentialSources = []string{"wordlists/cassandra-default.txt"}
cfg.Usernames = []string{"cassandra"}
cfg.Passwords = []string{"cassandra"} Defensive patterns
Strategy: validation
Validate before calling
creds := GenerateCredentials("cassandra", config)
if len(creds) == 0 {
log.Fatal("no cassandra credentials configured; supply usernames/passwords in the scan config")
} Try / catch
res, err := plugin.Scan(target)
if err != nil && strings.Contains(err.Error(), "no_credentials") {
log.Printf("skipping cassandra scan: %v", err)
return
} Prevention
- Always configure at least one credential source per service in the scan config.
- Validate credential wordlist paths exist and are readable at startup.
- Unit-test GenerateCredentials for each service name to catch empty outputs from config changes.
When it happens
Trigger: Scan() calls GenerateCredentials("cassandra", config); if it yields zero entries (e.g. empty or mis-scoped credential config), Scan returns Success:false with i18n 'service_no_credentials'.
Common situations: Credential wordlists not loaded or path misconfigured; config filters exclude all cassandra credentials; running in an environment where credential sources are empty; typo in service name so the generator matches nothing.
Related errors
AI-assisted analysis of shadow1ng/fscan@95cc12e753 (2026-09-06).
Data as JSON: /api/errors/423b8a8787d65cf7.
Report an issue: GitHub.