epi052/feroxbuster · error

Could not find any live targets to scan

Error message

Could not find any live targets to scan

What it means

After the connectivity heuristic filters targets, wrapped_main checks whether any live targets remain. An empty list means every configured target was non-responsive, so there is nothing to scan and the tool exits deliberately with this message.

Solutions

  1. Verify each target URL manually with curl to confirm it responds
  2. Check whether a proxy or firewall is dropping the probe requests
  3. Remove dead hosts from the target list / stdin input
  4. Retry if the target was temporarily unavailable

Example fix

// before
feroxbuster -u https://dead-host.example
// after
curl -I https://dead-host.example   # confirm 200/3xx/4xx response
feroxbuster -u https://live-host.example
Defensive patterns

Strategy: validation

Validate before calling

for h in $TARGETS; do curl -sk -o /dev/null --max-time 5 "$h" || echo "dead: $h"; done

Prevention

When it happens

Trigger: HeuristicTests::connectivity(&targets) returns Ok but with an empty live-target set - i.e. all targets were probed and none responded successfully.

Common situations: Scanning hosts that are offline or refuse the probe request, targets filtered out by proxy issues, targets that return 5xx/4xx to the probe, or --connectivity-test expectations differing from the target's behavior.

Understand the failure class

Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.

Related errors


AI-assisted analysis of epi052/feroxbuster@1f595dab5c (2026-09-13). Data as JSON: /api/errors/24e9970ffb8625a5. Report an issue: GitHub.

Appendix: source

Thrown at src/main.rs:579

            let msg = format!("Couldn't start {} file handler", config.output);
            bail!(fmt_err(&msg));
        }
    }

    // discard non-responsive targets
    let live_targets = {
        let test = heuristics::HeuristicTests::new(handles.clone());
        let result = test.connectivity(&targets).await;
        if let Err(err) = result {
            clean_up(handles, tasks).await?;
            bail!(fmt_err(&err.to_string()));
        }
        result?
    };

    if live_targets.is_empty() {
        clean_up(handles, tasks).await?;
        bail!(fmt_err("Could not find any live targets to scan"));
    }

    // kick off a scan against any targets determined to be responsive
    match scan(live_targets, handles.clone()).await {
        Ok(_) => {}
        Err(e) => {
            clean_up(handles, tasks).await?;
            bail!(fmt_err(&format!("Failed while scanning: {e}")));
        }
    }

    clean_up(handles, tasks).await?;

    log::trace!("exit: wrapped_main");
    Ok(())
}

/// Single cleanup function that handles all the necessary drops/finishes etc required to gracefully

View on GitHub (pinned to 1f595dab5c)