Skip to content

Add CIDR range support and scan scheduling #4

@stabrea

Description

@stabrea

Summary

Add support for scanning CIDR ranges (e.g., 192.168.1.0/24) and scheduled/recurring scans for continuous network monitoring.

Motivation

  • Network security assessments typically target entire subnets, not individual hosts
  • CIDR notation is the standard way to specify network ranges
  • Scheduled scans enable continuous monitoring and change detection
  • Comparing scan results over time reveals new hosts and services (network drift)

Proposed Approach

  1. CIDR range parsing:

    • Support CIDR notation (10.0.0.0/8, 192.168.1.0/24)
    • Support IP ranges (192.168.1.1-254)
    • Support comma-separated targets and target files
    • Exclude list for skipping specific IPs (--exclude, --exclude-file)
    • Use ipaddress module from Python stdlib
  2. Host discovery:

    • ICMP ping sweep before port scanning
    • ARP discovery for local network segments
    • TCP SYN ping for hosts that block ICMP
    • Configurable: skip discovery and scan all (--Pn equivalent)
  3. Scan scheduling:

    • Cron-style schedule configuration
    • Persistent scan jobs with SQLite storage
    • Delta reporting: highlight changes between scans
    • CLI commands: schedule add, schedule list, schedule remove
  4. Diff reporting:

    • Compare current scan against previous baseline
    • Report new hosts, removed hosts, changed services
    • Output as structured diff (JSON, text table)

Acceptance Criteria

  • CIDR and range parsing with exclusion support
  • Host discovery with multiple methods
  • Scan scheduling with persistent job storage
  • Diff reporting between consecutive scans

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions