Output Formats

Understanding s3finder's real-time output and report formats.

Real-Time Terminal Output

During scanning, results display in real-time with color-coded status. A live progress bar at the bottom shows scanning statistics:

text
     ____  _____  __ _           _
    / ___|___ / / _(_)_ __   __| | ___ _ __
    \___ \ |_ \| |_| | '_ \ / _` |/ _ \ '__|
     ___) |__) |  _| | | | | (_| |  __/ |
    |____/____/|_| |_|_| |_|\__,_|\___|_|
                                        v1.2.4

[PUBLIC] acme-backup (objects: 1547, region: us-east-1)
         https://acme-backup.s3.amazonaws.com
[PRIVATE] acme-internal (region: eu-west-1)

[████████████████░░░░░░░░░░░░░░] 55.0% [429/780] Public:1 Private:1 Err:12 145 r/s ETA:2s [22s]

Progress Bar

The live progress bar displays:

  • Visual progress - Fill bar showing scan completion percentage
  • Scanned count - Current/total buckets scanned
  • Public/Private/Errors - Real-time discovery counts
  • RPS - Current requests per second
  • ETA - Estimated time remaining
  • Elapsed time - Total time since scan started

Status Tags

TagColorMeaning
[PUBLIC]GreenBucket is publicly readable (HTTP 200)
[PRIVATE]YellowBucket exists but access denied (HTTP 403)
[ERROR]RedRequest failed (timeout, throttled)

JSON Output Format

bash
s3finder -s acme-corp -o results.json -f json

JSON Structure

json
{
  "scan_info": {
    "seed": "acme-corp",
    "started_at": "2024-01-15T10:30:00Z",
    "completed_at": "2024-01-15T10:30:45Z",
    "duration_seconds": 45,
    "total_scanned": 780,
    "total_found": 2,
    "ai_enabled": false
  },
  "results": [
    {
      "bucket": "acme-backup",
      "status": "public",
      "region": "us-east-1",
      "url": "https://acme-backup.s3.amazonaws.com",
      "acl": "public-read",
      "object_count": 1547,
      "sample_objects": [
        "backup-2024-01-01.tar.gz",
        "config/settings.json"
      ]
    }
  ]
}

JSON Fields

FieldTypeDescription
scan_info.seedstringSeed keyword used
scan_info.duration_secondsnumberScan duration
results[].bucketstringBucket name
results[].statusstring"public" or "private"
results[].regionstringAWS region
results[].object_countnumberObject count (public only)

Plain Text Output

bash
s3finder -s acme-corp -o results.txt -f txt
text
s3finder Scan Report
====================
Seed: acme-corp
Date: 2024-01-15 10:30:00
Duration: 45s
Scanned: 780 | Found: 2

RESULTS
-------

[PUBLIC] acme-backup
  Region: us-east-1
  URL: https://acme-backup.s3.amazonaws.com
  Objects: 1547

[PRIVATE] acme-internal
  Region: eu-west-1

Processing Output

Using jq

bash
# List only public buckets
cat results.json | jq '.results[] | select(.status == "public") | .bucket'

# Get all bucket URLs
cat results.json | jq -r '.results[].url'

Piping

bash
# Disable colors for clean piping
s3finder -s acme --no-color | tee scan.log

Output Options

FlagDefaultDescription
--output, -oresults.jsonOutput file path
--format, -fjsonFormat (json, txt)
--no-colorfalseDisable colors
--verbose, -vfalseShow errors
Results are written to file only after scan completes. Real-time results always display in terminal.