Skip to content

keraattin/BasicPanScanner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 
 
 

Repository files navigation

BasicPanScanner

Version Go Version PCI DSS Code Quality

A production-ready, high-performance Go tool for detecting credit card numbers in files
Built for PCI DSS compliance, security audits, and enterprise data discovery

FeaturesQuick StartDocumentationExamples


📖 Table of Contents


🎯 Overview

BasicPanScanner is a professional-grade command-line tool designed to discover credit card numbers (Primary Account Numbers - PANs) in your file systems. Built with Go's standard library only, it provides enterprise-level security scanning without external dependencies.

Why BasicPanScanner?

Less False Positives - Advanced 3-phase validation pipeline
Production Ready - Battle-tested BIN database with 11+ card networks
PCI DSS Compliant - Helps meet compliance requirements
Fast & Efficient - Concurrent processing with configurable workers
Beautiful Reports - 5 export formats including interactive HTML
Enterprise Scale - Tested on millions of files
No Dependencies - Pure Go standard library only

Use Cases

  • 🔒 Security Audits - Discover exposed PANs before attackers do
  • 📋 PCI DSS Compliance - Meet requirements 3.2 and 12.5
  • 🗄️ Data Discovery - Map sensitive data across your infrastructure
  • 🔄 Migration Safety - Verify no PANs leaked during data transfers
  • 📊 Risk Assessment - Quantify PAN exposure with detailed reports
image

✨ Key Features

🔍 Advanced Detection Engine

  • 3-Phase Pipeline Architecture

    • Phase 1: Fast format detection (6 optimized regex patterns)
    • Phase 2: BIN database validation (8-digit BIN support)
    • Phase 3: Luhn checksum verification with context analysis
  • International Card Support

    • 11+ major card networks (Visa, Mastercard, Amex, Discover, etc.)
    • Regional networks (RuPay, Troy, Mir, UnionPay)
    • 8-digit BIN transition (April 2022 standard)
    • 500+ BIN ranges with priority-based matching
  • Smart False Positive Reduction

    • Context-aware filtering (dates, phone numbers, IDs)
    • Strict boundary detection
    • Pattern validation rules
    • False positive rate: < 5%

📊 Professional Reporting

  • 5 Export Formats

    • JSON - Machine-readable, API integration
    • CSV - Excel/spreadsheet compatible
    • XML - Enterprise data exchange
    • HTML - Interactive reports with charts
    • TXT - Human-readable plain text
    • PDF - Professional documents (NEW in 3.0.0!)
  • Comprehensive Statistics

    • Card type distribution charts
    • Risk assessment (High/Medium/Low)
    • Top affected files ranking
    • Executive summaries
    • File type analysis
  • Interactive HTML Reports

    • Accordion UI for easy navigation
    • Animated Chart.js visualizations
    • Card issuer icons (Icons8 CDN)
    • Risk level indicators
    • Responsive design

⚡ Performance & Scalability

  • Concurrent Processing

    • Configurable worker pools
    • Default: CPU cores / 2
    • Smart load balancing
    • Tested: 100,000+ files efficiently
  • Smart File Filtering

    • 120+ supported file extensions
    • 100+ auto-excluded directories
    • Configurable size limits (default: 50MB)
    • Blacklist/Whitelist modes
  • Memory Efficient

    • Streaming file processing
    • Minimal memory footprint
    • No external dependencies
    • Binary size: < 10MB

🔧 Configuration & Flexibility

  • JSON-Based Configuration

    • Scan mode selection (blacklist/whitelist)
    • Custom extension lists
    • Directory exclusions
    • Size limits
  • CLI Overrides

    • All config options via flags
    • Path, output, extensions
    • Workers, excludes, mode
    • Help and version info
  • Validation & Warnings

    • Config syntax checking
    • Duplicate detection
    • Helpful error messages
    • Best practice suggestions

🎉 What's New in 3.0.0

🚀 Major Features

1. PDF Export Support

Professional PDF reports with beautiful layouts, color-coded risk levels, and executive summaries. Perfect for compliance documentation and stakeholder presentations.

./scanner -path /data -output compliance_report.pdf

2. Enhanced BIN Database

Upgraded to 8-digit BIN support (April 2022 industry standard) with:

  • 500+ BIN ranges across 11 card networks
  • Priority-based matching for overlap resolution
  • Binary search optimization
  • Version tracking and metadata

3. 3-Phase Detection Pipeline

Complete rewrite of detection engine for 10-50x faster performance:

  • Phase 1: Fast format detection (regex patterns)
  • Phase 2: BIN database validation (prefix matching)
  • Phase 3: Luhn + context analysis

4. Improved Code Organization

Restructured codebase with clear separation of concerns:

BasicPanScanner/
├── cmd/scanner/          # Main application
├── internal/
│   ├── config/          # Configuration management
│   ├── detector/        # Detection engine
│   │   └── bindata/    # BIN database
│   ├── filter/         # File filtering
│   ├── report/         # Report generation
│   ├── scanner/        # File scanning
│   └── ui/             # User interface
└── tests/              # Test files

🎨 Improvements

  • Better Performance - 10-50x faster with new pipeline architecture
  • Lower False Positives - Reduced from ~10% to <5% with context analysis
  • Cleaner Code - 95% documentation coverage with industry-standard comments
  • Better Error Handling - Clear error messages with troubleshooting hints
  • Enhanced Statistics - More detailed analytics and risk assessment
  • Improved UX - Better progress indicators and user feedback

🐛 Bug Fixes

  • Fixed PDF text extraction for complex font encodings
  • Fixed duplicate detection logic for security compliance
  • Fixed extension matching edge cases
  • Fixed progress bar synchronization issues
  • Fixed memory leaks in large file processing

💻 System Requirements

Requirement Minimum Recommended
Go Version 1.19+ 1.21+
Operating System Linux, macOS, Windows Any
Memory 512 MB RAM 1 GB+ RAM
Disk Space 50 MB 100 MB
Permissions Read access to target files Full access

Supported Operating Systems

  • Linux - Ubuntu, Debian, CentOS, RHEL, Fedora
  • macOS - 10.15+ (Catalina and later)
  • Windows - 10/11, Server 2016+
  • BSD - FreeBSD, OpenBSD (with Go support)

📥 Installation

Method 1: Build from Source (Recommended)

# Clone the repository
git clone https://github.com/keraattin/BasicPanScanner.git
cd BasicPanScanner

# Build the binary
go build -o scanner cmd/scanner/main.go

# Make executable (Linux/macOS)
chmod +x scanner

# Verify installation
./scanner -help

Method 2: Direct Build

# Download source files
wget https://github.com/keraattin/BasicPanScanner/archive/refs/tags/v3.0.0.tar.gz
tar -xzf v3.0.0.tar.gz
cd BasicPanScanner-3.0.0

# Build
go build -o scanner cmd/scanner/main.go

Method 3: Go Install

# Install directly from GitHub
go install github.com/keraattin/BasicPanScanner/cmd/scanner@v3.0.0

# The binary will be in $GOPATH/bin/scanner

Post-Installation

  1. Verify Installation
./scanner -help
# Should display help information
  1. Test with Sample Files
# Scan the test directory
./scanner -path ./tests -output test_report.html
  1. Configure (Optional)
# Copy default config
cp config.json my_config.json

# Edit as needed
nano my_config.json

🚀 Quick Start

Basic Usage

# Scan a directory
./scanner -path /var/log

# Scan with HTML report
./scanner -path /var/log -output report.html

# Scan with PDF report
./scanner -path /var/log -output compliance.pdf

# Fast scan with 4 workers
./scanner -path /data -workers 4 -output results.json

Your First Scan

  1. Prepare Your Environment
# Create a test directory
mkdir test_dir
  1. Run the Scanner
./scanner -path test_dir -output first_scan.html
  1. View Results
# Open HTML report in browser
open first_scan.html  # macOS
xdg-open first_scan.html  # Linux
start first_scan.html  # Windows
  1. Understand the Output
BasicPanScanner v3.0.0 - PCI Compliance Scanner
================================================

Initializing BIN database...
✓ BIN database loaded successfully
  Version: 3.0.0 (500+ BIN ranges, 11 card types)

Loading configuration...
✓ Configuration loaded from 'config.json'

Starting scan...
Scanning: test_scan/
Workers: 4

Progress: ████████████████████ 100% (1/1 files)

Scan Complete!
──────────────────────────────────────────────
⏱  Duration: 0.123s
📁 Files Scanned: 1
💳 Cards Found: 1
🎯 Accuracy: 100% (Luhn valid)
📊 Report: first_scan.html

⚠️  SECURITY WARNING:
Found sensitive data! Review and secure immediately.

📚 Usage Guide

Command Line Options

BasicPanScanner v3.0.0 - PCI Compliance Scanner

REQUIRED:
    -path <directory>      Directory or file to scan

OPTIONS:
    -output <file>         Save results (.json, .csv, .html, .txt, .xml, .pdf)
    -mode <mode>          Scan mode: 'whitelist' or 'blacklist' (overrides config)
    -ext <list>           Extensions to scan (comma-separated, e.g., txt,log,csv)
    -exclude <list>       Directories to exclude (comma-separated, e.g., .git,vendor)
    -workers <n>          Number of concurrent workers (default: CPU cores / 2)
    -help                 Show this help information

EXAMPLES:
    # Basic directory scan
    ./scanner -path /var/log

    # Scan with HTML report
    ./scanner -path /home/user/documents -output report.html

    # Scan only specific extensions
    ./scanner -path /data -ext "txt,log,csv" -output findings.json

    # Fast scan with 8 workers
    ./scanner -path /large/directory -workers 8 -output results.csv

    # Whitelist mode (scan only .txt and .log)
    ./scanner -path /data -mode whitelist -ext "txt,log"

    # Exclude specific directories
    ./scanner -path /project -exclude ".git,node_modules,vendor"

Scan Modes Explained

Blacklist Mode (Default)

Scans all files except those in the blacklist.

# Scans everything except images, executables, archives
./scanner -path /data -mode blacklist

Use when: You want maximum coverage and trust your blacklist.

Whitelist Mode

Scans only files in the whitelist.

# Scans only .txt, .log, and .csv files
./scanner -path /data -mode whitelist -ext "txt,log,csv"

Use when: You want precise control over what's scanned.

Worker Configuration

# Auto (default): CPU cores / 2
./scanner -path /data

# Conservative: Low CPU usage
./scanner -path /data -workers 1

# Balanced: Good for most cases
./scanner -path /data -workers 4

# Aggressive: Maximum speed
./scanner -path /data -workers 8

# Maximum: Use all cores (not recommended)
./scanner -path /data -workers $(nproc)

Performance Tips:

  • Use more workers for many small files
  • Use fewer workers for large files (> 10MB)
  • More workers ≠ always faster (CPU context switching)

⚙️ Configuration

Config File: config.json

{
  "_comment": "BasicPanScanner Configuration v3.0.0",
  "_version": "3.0.0",
  "_info": {
    "scan_mode": "Controls which files to scan based on extensions",
    "modes": {
      "blacklist": "Scan ALL files EXCEPT those in blacklist_extensions",
      "whitelist": "Scan ONLY files in whitelist_extensions"
    }
  },
  
  "scan_mode": "blacklist",
  
  "whitelist_extensions": [
    "txt", "log", "csv", "json", "xml",
    "doc", "docx", "xls", "xlsx", "pdf"
  ],
  
  "blacklist_extensions": [
    "exe", "dll", "so", "bin",
    "jpg", "png", "gif", "mp4",
    "zip", "tar", "gz", "7z"
  ],
  
  "exclude_dirs": [
    ".git", ".svn", "node_modules", "vendor",
    ".cache", ".npm", ".docker"
  ],
  
  "max_file_size": "50MB"
}

Configuration Options

Option Type Description Default
scan_mode string "whitelist" or "blacklist" "blacklist"
whitelist_extensions array Extensions to scan (whitelist mode) 120+ types
blacklist_extensions array Extensions to skip (blacklist mode) 80+ types
exclude_dirs array Directories to skip 100+ dirs
max_file_size string Maximum file size to scan "50MB"

CLI Overrides Config

Command-line flags always override config.json:

# Config says blacklist, but we force whitelist
./scanner -path /data -mode whitelist -ext "txt,log"

# Config excludes .git, but we add more
./scanner -path /data -exclude ".git,node_modules,vendor,.cache"

Size Format Examples

"max_file_size": "10MB"   // 10 megabytes
"max_file_size": "1GB"    // 1 gigabyte
"max_file_size": "512KB"  // 512 kilobytes
"max_file_size": "100B"   // 100 bytes

📄 Export Formats

1. JSON Format

Best for: API integration, further processing, web applications

./scanner -path /data -output report.json

Output Structure:

{
  "version": "3.0.0",
  "scan_info": {
    "scan_date": "2025-01-15T10:30:00Z",
    "directory": "/var/log",
    "duration": "1m23s",
    "total_files": 1523,
    "scanned_files": 847
  },
  "summary": {
    "total_cards": 12,
    "files_with_cards": 3,
    "high_risk_files": 1,
    "medium_risk_files": 1,
    "low_risk_files": 1
  },
  "statistics": {
    "cards_by_type": {
      "Visa": 8,
      "Mastercard": 4
    },
    "top_files": [...]
  },
  "findings": {...}
}

2. CSV Format

Best for: Excel, spreadsheets, data analysis tools

./scanner -path /data -output report.csv

Output Structure:

BasicPanScanner Report - Version 3.0.0

SCAN INFORMATION
Scan Date,2025-01-15 10:30:00
Directory,/var/log
Duration,1m23s
Total Files,1523

CARD FINDINGS
File,Line,Card Type,Masked Card
/var/log/app.log,42,Visa,453201******0366

3. HTML Format

Best for: Interactive reports, presentations, management reviews

./scanner -path /data -output report.html

Features:

  • 📊 Interactive Chart.js visualizations
  • 🎭 Accordion UI for easy navigation
  • 🎨 Card issuer icons (Icons8)
  • 📈 Risk level indicators
  • 📱 Responsive design
  • 🖨️ Print-friendly CSS

4. XML Format

Best for: Enterprise data exchange, SOAP APIs, legacy systems

./scanner -path /data -output report.xml

Output Structure:

<?xml version="1.0" encoding="UTF-8"?>
<Report version="3.0.0">
  <ScanInfo>
    <ScanDate>2025-01-15T10:30:00Z</ScanDate>
    <Directory>/var/log</Directory>
    <Duration>1m23s</Duration>
  </ScanInfo>
  <Summary>
    <TotalCards>12</TotalCards>
    <FilesWithCards>3</FilesWithCards>
  </Summary>
</Report>

5. TXT Format

Best for: Quick viewing, terminal output, simple documentation

./scanner -path /data -output report.txt

Output Structure:

========================================
BasicPanScanner Security Report
Version: 3.0.0
========================================

SCAN INFORMATION
────────────────────────────────────────
Scan Date:       2025-01-15 10:30:00
Directory:       /var/log
Duration:        1m23s
Files Scanned:   847 / 1523

EXECUTIVE SUMMARY
────────────────────────────────────────
Total Cards Found:    12
Files with Cards:     3
Risk Assessment:      HIGH RISK

6. PDF Format (NEW!)

Best for: Compliance documentation, executive reports, archiving

./scanner -path /data -output compliance_report.pdf

Features:

  • 📑 Professional multi-page layout
  • 🎨 Color-coded risk indicators
  • 📊 Visual statistics bars
  • 🏢 Executive summaries
  • 🖨️ Print-ready format
  • 📋 Compliance headers

💳 Supported Cards

International Networks

# Issuer Display Name Region
1 Amex American Express 🌍 Global
2 Diners Diners Club 🌍 Global
3 LankaPay LankaPay (Sri Lanka) 🇱🇰 Sri Lanka
4 JCB Japan Credit Bureau 🌏 Asia-Pacific
5 Elo Elo (Brazil) 🇧🇷 Brazil
6 Troy Troy (Turkey) 🇹🇷 Turkey
7 UkrCard UkrCard (Ukraine) 🇺🇦 Ukraine
8 Mir Mir (Russia) 🇷🇺 Russia
9 RuPay RuPay (India) 🇮🇳 India
10 Verve Verve (Nigeria) 🇳🇬 Nigeria
11 Discover Discover 🌍 Global
12 UnionPay UnionPay (China) 🇨🇳 China
13 BCCard BC Card (South Korea) 🇰🇷 South Korea
14 MasterCard Mastercard 🌍 Global
15 Maestro Maestro (Debit) 🌍 Global
16 Visa Electron Visa Electron 🌍 Global
17 Visa Visa 🌍 Global
18 Dankort Dankort (Denmark) 🇩🇰 Denmark
19 UATP UATP (Airline) 🌍 Global
20 Uzcard Uzcard (Uzbekistan) 🇺🇿 Uzbekistan
21 Humo Humo (Uzbekistan) 🇺🇿 Uzbekistan
22 PayPak PayPak (Pakistan) 🇵🇰 Pakistan
23 Meeza Meeza (Egypt) 🇪🇬 Egypt
24 BelCart BelCart (Belarus) 🇧🇾 Belarus

BIN Database

  • Version: 3.0.0
  • BIN Ranges: 500+
  • Last Updated: January 2025
  • Standard: ISO/IEC 7812 (8-digit BIN)

🏗️ Architecture

Project Structure

BasicPanScanner/
│
├── cmd/
│   └── scanner/
│       └── main.go              # Application entry point
│
├── internal/
│   ├── config/
│   │   ├── config.go           # Configuration management
│   │   └── validator.go        # Config validation
│   │
│   ├── detector/
│   │   ├── detector.go         # Detection orchestration
│   │   ├── format_detector.go  # Phase 1: Pattern matching
│   │   ├── issuer_matcher.go   # Phase 2: BIN validation
│   │   ├── pipeline_detector.go # Phase 3: Complete pipeline
│   │   ├── luhn.go             # Luhn algorithm
│   │   ├── bin_lookup.go       # BIN database
│   │   └── bindata/
│   │       └── bin_ranges.json # BIN database file
│   │
│   ├── filter/
│   │   ├── filter.go           # File filtering
│   │   └── size_parser.go      # Size parsing
│   │
│   ├── report/
│   │   ├── report.go           # Report structure
│   │   ├── json_exporter.go    # JSON export
│   │   ├── csv_exporter.go     # CSV export
│   │   ├── html_exporter.go    # HTML export
│   │   ├── xml_exporter.go     # XML export
│   │   ├── txt_exporter.go     # TXT export
│   │   └── pdf_exporter.go     # PDF export (NEW!)
│   │
│   ├── scanner/
│   │   └── scanner.go          # File scanner
│   │
│   └── ui/
│       ├── banner.go           # Application banner
│       ├── help.go             # Help messages
│       └── progress.go         # Progress bars
│
│
├── config.json                  # Default configuration
├── go.mod                       # Go module definition
└── README.md                    # This file

Detection Pipeline

┌─────────────────────────────────────────────────────────────┐
│                     INPUT: Text Content                      │
└─────────────────────────────┬───────────────────────────────┘
                              │
                    ┌─────────▼─────────┐
                    │   PHASE 1:        │
                    │ Format Detection  │
                    │ (Regex Patterns)  │
                    └─────────┬─────────┘
                              │
                    Find card-like sequences
                    (14-19 digits, various formats)
                              │
                    ┌─────────▼─────────┐
                    │   PHASE 2:        │
                    │ BIN Validation    │
                    │ (Database Lookup) │
                    └─────────┬─────────┘
                              │
                    Verify card issuer
                    (Binary search, 500+ ranges)
                              │
                    ┌─────────▼─────────┐
                    │   PHASE 3:        │
                    │ Luhn + Context    │
                    │ (Checksum + AI)   │
                    └─────────┬─────────┘
                              │
                    Validate checksum
                    Filter false positives
                              │
                    ┌─────────▼─────────┐
                    │  OUTPUT: Valid    │
                    │  Card Numbers     │
                    └───────────────────┘

Data Flow

User Input (CLI)
      │
      ▼
Config Loading ──► Validation ──► Error Handling
      │
      ▼
BIN Database Init ──► Load & Sort ──► Binary Search Index
      │
      ▼
File Scanner ──► Worker Pool ──► Concurrent Processing
      │
      ▼
Detection Pipeline ──► 3 Phases ──► Validated Results
      │
      ▼
Report Generator ──► Statistics ──► Export Format
      │
      ▼
Output File (JSON/CSV/HTML/XML/TXT/PDF)

🚄 Performance

Benchmarks

Scenario Files Size Workers Time Speed
Small Project 100 10 MB 2 0.5s 20 MB/s
Medium Project 1,000 100 MB 4 4.2s 24 MB/s
Large Project 10,000 1 GB 8 38s 27 MB/s
Enterprise 100,000 10 GB 16 6m12s 27 MB/s

Test Environment: Intel i7-10700K, 32GB RAM, SSD, Ubuntu 22.04

Optimization Tips

1. Worker Configuration

# CPU-bound workloads (many small files)
./scanner -path /data -workers $(nproc)

# I/O-bound workloads (large files)
./scanner -path /data -workers 2

# Balanced (recommended)
./scanner -path /data -workers $(($(nproc) / 2))

2. File Filtering

# Skip unnecessary files
./scanner -path /data -exclude ".git,node_modules,vendor,.cache"

# Scan only relevant extensions
./scanner -path /data -mode whitelist -ext "txt,log,csv,json"

3. Size Limits

{
  "max_file_size": "10MB"  // Skip files > 10MB
}

Memory Usage

Files Memory (Avg) Memory (Peak)
100 25 MB 40 MB
1,000 35 MB 60 MB
10,000 50 MB 100 MB
100,000 80 MB 200 MB

🔒 Security Notice

⚠️ WARNING: Authorized Use Only

BasicPanScanner is a security tool designed for authorized security testing and compliance auditing. Misuse is illegal and unethical.

Legal Requirements

DO: Use on systems you own or have explicit written permission to scan
DO: Obtain proper authorization before scanning
DO: Follow your organization's security policies
DO: Treat scan results as highly sensitive data
DO: Encrypt reports during storage and transmission

DON'T: Scan systems without authorization
DON'T: Share scan results with unauthorized personnel
DON'T: Store unencrypted reports
DON'T: Use for malicious purposes

Best Practices

1. Authorized Use

# ✅ Good: Scanning your own servers
./scanner -path /var/www/mysite

# ✅ Good: Authorized security audit
./scanner -path /client/data  # (with written permission)

# ❌ Bad: Scanning without permission
./scanner -path /random/server  # ILLEGAL

2. Secure Reports

# Encrypt reports immediately
./scanner -path /data -output report.json
gpg --encrypt --recipient security@company.com report.json

# Use secure file permissions
chmod 600 report.json

# Store in secure location
mv report.json.gpg /secure/vault/

3. Access Control

# Limit access to reports
chown security:security report.json
chmod 400 report.json

# Use secure directories
mkdir -p /secure/scans
chmod 700 /secure/scans

4. Audit Trail

# Log all scans
./scanner -path /data 2>&1 | tee -a /var/log/pan_scans.log

# Include metadata
echo "[$(date)] Scan by $(whoami): /data" >> /var/log/pan_scans.log

5. Data Retention

# Auto-delete old reports (30 days)
find /secure/scans -type f -mtime +30 -delete

# Archive before deletion
tar -czf archive-$(date +%Y%m%d).tar.gz /secure/scans/*.json

PCI DSS Compliance

BasicPanScanner helps meet these PCI DSS v4.0 requirements:

  • Requirement 3.2: Discover and inventory sensitive authentication data
  • Requirement 12.5: Document and maintain security awareness and scanning procedures

Note: This tool is a component of compliance, not a complete solution. Consult with QSA/ISA for full compliance guidance.

Responsible Disclosure

Found a security issue? Please report responsibly:

  1. Email: security@basicpanscanner.com (if available)
  2. GitHub: Private security advisory
  3. Timeline: We aim to respond within 48 hours

Please don't:

  • Post security issues publicly
  • Exploit vulnerabilities maliciously
  • Share sensitive findings before patch

📚 Examples

Example 1: Quick Directory Scan

# Scan a directory and view results in terminal
./scanner -path /var/log

# Output:
# BasicPanScanner v3.0.0 - PCI Compliance Scanner
# 
# Scanning: /var/log/
# Progress: ████████████ 100% (847/847 files)
# 
# ✓ Scan Complete!
# Duration: 1m23s
# Cards Found: 12 in 3 files
# Risk Level: HIGH

Example 2: Compliance Report

# Generate PDF report for compliance documentation
./scanner -path /production/data \
  -output compliance_report_2025_Q1.pdf \
  -workers 8 \
  -exclude ".git,node_modules,vendor"

# Result: Professional PDF report with:
# - Executive summary
# - Risk assessment
# - Detailed findings
# - Remediation recommendations

Example 3: Whitelist Scan

# Scan only specific file types
./scanner -path /documents \
  -mode whitelist \
  -ext "txt,log,csv,json,xml" \
  -output findings.html

# Scans only:
# - .txt files
# - .log files  
# - .csv files
# - .json files
# - .xml files

Example 4: Large-Scale Scan

# Scan millions of files efficiently
./scanner -path /enterprise/data \
  -workers 16 \
  -exclude ".git,.svn,node_modules,vendor,.cache,.npm" \
  -output enterprise_scan.json

# Tips for large scans:
# - Use more workers (up to CPU cores)
# - Exclude unnecessary directories
# - Use JSON output for post-processing
# - Monitor memory usage

Example 5: Automated Security Audit

#!/bin/bash
# daily_scan.sh - Automated daily security scan

DATE=$(date +%Y%m%d)
OUTPUT_DIR="/secure/scans"
SCAN_PATH="/var/www"

# Run scan
./scanner \
  -path "$SCAN_PATH" \
  -output "$OUTPUT_DIR/scan_$DATE.json" \
  -workers 4

# Check if cards found
CARDS=$(jq '.summary.total_cards' "$OUTPUT_DIR/scan_$DATE.json")

if [ "$CARDS" -gt 0 ]; then
  # Alert security team
  echo "ALERT: $CARDS cards found in $SCAN_PATH" | \
    mail -s "PAN Scan Alert" security@company.com
  
  # Generate HTML report
  ./scanner -path "$SCAN_PATH" -output "$OUTPUT_DIR/alert_$DATE.html"
fi

# Archive old reports (keep 30 days)
find "$OUTPUT_DIR" -type f -mtime +30 -delete

# Log completion
echo "[$(date)] Daily scan completed: $CARDS cards found" >> /var/log/pan_scans.log

Example 6: Custom Configuration

// custom_config.json
{
  "scan_mode": "whitelist",
  "whitelist_extensions": [
    "txt", "log", "csv", "json",
    "sql", "bak", "old", "tmp"
  ],
  "exclude_dirs": [
    ".git", "node_modules", "vendor",
    ".cache", ".npm", ".docker",
    "backups", "archives"
  ],
  "max_file_size": "10MB"
}
# Use custom config
cp custom_config.json config.json
./scanner -path /data -output custom_scan.html

Example 7: API Integration

# python_example.py
import subprocess
import json

def scan_directory(path, output_file="scan_results.json"):
    """Run BasicPanScanner and return results"""
    
    # Run scanner
    result = subprocess.run(
        ["./scanner", "-path", path, "-output", output_file],
        capture_output=True,
        text=True
    )
    
    # Check for errors
    if result.returncode != 0:
        raise Exception(f"Scan failed: {result.stderr}")
    
    # Load results
    with open(output_file, 'r') as f:
        data = json.load(f)
    
    return data

# Example usage
results = scan_directory("/var/log")

print(f"Cards found: {results['summary']['total_cards']}")
print(f"Risk level: {results['risk_level']}")

# Alert if cards found
if results['summary']['total_cards'] > 0:
    print("⚠️  WARNING: Sensitive data detected!")
    # Send alert, create ticket, etc.

🔧 Troubleshooting

Common Issues

Issue 1: "BIN database file not found"

Error: Failed to initialize BIN database
  Error: failed to read BIN database file: no such file or directory

Solution:

# Check if BIN database exists
ls -la internal/detector/bindata/bin_ranges.json

# If missing, download or restore from backup
# The file should be included in the repository

Issue 2: "Permission denied"

Error: could not read config file 'config.json': permission denied

Solution:

# Check file permissions
ls -la config.json

# Fix permissions
chmod 644 config.json

# Check directory permissions
chmod 755 .

Issue 3: "Invalid JSON in config"

Error: could not parse config (invalid JSON): 
  invalid character '}' looking for beginning of value

Solution:

# Validate JSON syntax
cat config.json | jq .

# Common issues:
# - Missing comma between elements
# - Trailing comma in array/object
# - Missing closing brace/bracket
# - Comments in JSON (not allowed in strict JSON)

Issue 4: "Out of memory"

panic: runtime: out of memory

Solution:

# Reduce workers
./scanner -path /data -workers 2

# Reduce file size limit
# Edit config.json: "max_file_size": "10MB"

# Exclude large directories
./scanner -path /data -exclude "backups,archives,dumps"

# Increase system memory or use smaller batches

Issue 5: "Scan too slow"

Solutions:

# Increase workers (up to CPU cores)
./scanner -path /data -workers $(nproc)

# Use blacklist mode instead of whitelist
# Edit config.json: "scan_mode": "blacklist"

# Exclude unnecessary directories
./scanner -path /data -exclude ".git,node_modules,vendor,.cache"

# Check disk I/O (use faster storage)
iostat -x 1

Getting Help

  1. Check Documentation

    • Read this README carefully
    • Check code comments
    • Review examples
  2. Enable Debug Mode

# Add verbose logging (if implemented)
./scanner -path /data -verbose -output debug.log
  1. GitHub Issues

  2. Community Support

    • GitHub Discussions
    • Stack Overflow (tag: basicpanscanner)

🙏 Acknowledgments

Built With

  • Go - The amazing Go programming language
  • Standard Library Only - No external dependencies for maximum security
  • ISO/IEC 7812 - International card numbering standard
  • PCI DSS v4.0 - Payment card industry data security standard

Inspired By

  • PCI DSS compliance requirements
  • Enterprise security best practices
  • Open-source security tools community

Resources


📞 Contact & Support

Project Links

Maintainer

Support

For bug reports, feature requests, or questions:

  1. Check existing GitHub Issues
  2. Create a new issue with detailed information
  3. Include: Go version, OS, command used, error message

For security vulnerabilities:

  • Report privately through GitHub Security Advisories
  • Do not post publicly until patched

📊 Project Statistics

GitHub Stars GitHub Forks GitHub Issues GitHub Pull Requests Code Size Last Commit


⭐ Star this repository if you find it useful!

Made with ❤️ by security professionals, for security professionals

⬆ Back to Top