Skip to content

Shards

Satori's shards command allows you to deterministically divide massive input datasets (IPs, domains, or URLs) into smaller chunks for distributed processing. It supports IPv4 address ranges, domains, and HTTP/S URLs, and offers high-performance filtering using multiprocessing and vectorized exclusion logic.

Parameters

  • --shard X/Y (required)
    Shard index X out of Y total shards.

  • --input PATH (required)
    Input file path or direct IP/CIDR/range/domain/URL
    (e.g., 192.168.1.0/24, 10.0.0.1-10.0.0.255, example.com, https://example.com).

  • --seed N (optional, default: 1)
    Seed for deterministic pseudorandom distribution.

  • --exclude PATH or ENTRY
    Exclusion file path or direct IP/CIDR/range/domain/URL to exclude
    (e.g., 192.168.1.0/24, 10.0.0.1-10.0.0.255, example.com, https://example.com).

  • --results PATH
    Output file path (writes to stdout if omitted).

Input Methods

The shards command accepts input in two ways:

Direct input

  • CIDR notation: 192.168.1.0/24, 0.0.0.0/0
  • IP ranges: 192.168.1.1-192.168.1.255
  • Single IP: 192.168.1.1
  • Domains/URLs: example.com, https://example.com

File-based input

  • Text files --input file.txt containing IP addresses, CIDR ranges, domains, or URLs (one per line)

Exclusion Methods

The --exclude flag also supports both file-based and direct input:

  • Direct exclusion: CIDR ranges, IP ranges, single IPs, domains, URLs.

  • Files: Text files --exclude file.txt with IP addresses, CIDR or IP ranges, domains, or URLs to exclude (one per line).

Usage Examples

Basic usage with files

sh
satori shards --shard 1/10 --input input.txt --exclude exclude.txt --results output.txt

Direct CIDR input

sh
satori shards --shard 1/10 --input 0.0.0.0/24 --exclude 192.168.0.0/16 --results output.txt

IP range processing

sh
satori shards --shard 1/10 --input 10.0.0.1-10.0.0.255 --exclude 10.0.0.1 --results output.txt

Scan entire IPv4 range in seconds

To divide the entire IPv4 range (4.3 billion addresses) into 500 parts and process only the first slice while excluding private networks:

sh
satori shards --shard 1/500 --input 0.0.0.0/0 --exclude 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 --results output.txt