Skip to main content

High-speed network discovery and drift analysis engine

Project description

NetPulse Discovery Logo

NetPulse Discovery

Python Rust Build Status

NetPulse Discovery is a high-performance, asynchronous network mapping and drift-analysis engine. By offloading packet-level networking to a compiled Rust core, it achieves near wire-speed execution while maintaining a flexible, developer-friendly Python API.

🚀 Key Features

  • Blazing Fast Scans: Leverages libpcap and raw sockets in Rust to execute ARP and ICMP sweeps orders of magnitude faster than standard Python libraries.
  • Asynchronous Port Scanning: Native asyncio TCP connect scanner that can check hundreds of ports across multiple devices concurrently.
  • Drift Detection: Built-in intelligence to compare historical scans and calculate exact topological drift (e.g., "Host 192.168.1.5 went offline").
  • MAC Vendor Resolution: Automatically translates hardware MAC addresses into human-readable manufacturer names.
  • Standalone API & CLI: Usable as a Python library, a Typer-powered CLI, or a FastAPI REST microservice.

📦 Installation

NetPulse Discovery is distributed as a pre-compiled binary wheel. It is entirely self-sufficient and requires no Rust compiler or external dependencies to install!

pip install netpulse-discovery

⚡ Quickstart

As a CLI Tool

The standalone CLI returns structured JSON output perfect for piping into jq or other tools. You can also export directly to files!

[!IMPORTANT] Multiplatform Execution: Low-level network scanning requires elevated privileges.

  • Linux / macOS: Prefix your commands with sudo
  • Windows: Open an Administrator Command Prompt or PowerShell session to execute.
# Scan a network
sudo netpulse-discovery scan 192.168.1.0/24 --timeout 500

# Export results directly to a file
sudo netpulse-discovery scan 192.168.1.0/24 --output results.json
sudo netpulse-discovery scan 192.168.1.0/24 --output results.yaml
sudo netpulse-discovery scan 192.168.1.0/24 --output results.txt

# Calculate Network Drift from two exported JSON files (No sudo required)
netpulse-discovery drift old_results.json results.json --output drift_report.yaml

As a Standalone REST API

You can spin up a dedicated, hyper-fast FastAPI server instantly:

netpulse-discovery serve --port 8000

Then send requests to http://localhost:8000/discovery/scan or http://localhost:8000/discovery/drift/compare.

As a Python Library

Embed the high-performance engine directly into your own applications:

import asyncio
from netpulse.discovery.services.discovery import DiscoveryService
from netpulse.discovery.models.discovery import DiscoveryMethod

async def main():
    service = DiscoveryService()
    # Scans the network using ARP resolution
    result = await service.discover_network(
        "10.0.0.0/24", 
        methods=[DiscoveryMethod.ARP]
    )
    
    for device in result.devices:
        print(f"[{device.ip}] {device.mac} - {device.vendor}")

asyncio.run(main())

📚 Documentation

For more detailed guides, check out the docs/ folder:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

netpulse_discovery-0.1.3.tar.gz (22.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

netpulse_discovery-0.1.3-cp38-abi3-win_amd64.whl (169.1 kB view details)

Uploaded CPython 3.8+Windows x86-64

netpulse_discovery-0.1.3-cp38-abi3-manylinux_2_34_x86_64.whl (313.0 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.34+ x86-64

netpulse_discovery-0.1.3-cp38-abi3-macosx_11_0_arm64.whl (275.0 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

File details

Details for the file netpulse_discovery-0.1.3.tar.gz.

File metadata

  • Download URL: netpulse_discovery-0.1.3.tar.gz
  • Upload date:
  • Size: 22.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for netpulse_discovery-0.1.3.tar.gz
Algorithm Hash digest
SHA256 cb1e186abc7c2357dda00b0f0f8266c7ab50c15d62fc62c3bdf1fc30a271af42
MD5 1e5b430e025d4420868723ed950bc206
BLAKE2b-256 7dc19ab918a22f6fe287e4d89ef97d8b320dbc7941d72730e50c88f988215983

See more details on using hashes here.

File details

Details for the file netpulse_discovery-0.1.3-cp38-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for netpulse_discovery-0.1.3-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 d98a8ac1954dc2cd613cb2c34528e1cc6c42038dae216901113d2e90f699152b
MD5 77ed328cb9782cc04d2ee1cb0516535e
BLAKE2b-256 8ff78b9ff5276ff48c240b6bff9fed14587426421486b520db89d2b7e997754a

See more details on using hashes here.

File details

Details for the file netpulse_discovery-0.1.3-cp38-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for netpulse_discovery-0.1.3-cp38-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0bb296791495a8e4821252e9c702c18ebec3ae4abe8938564a853e39d64e1604
MD5 26f12efb7a67e9ce17c6515e2dd422cf
BLAKE2b-256 8071973427103865eb325285668d111db314dfed4c22818eeb4e02872fbee2b4

See more details on using hashes here.

File details

Details for the file netpulse_discovery-0.1.3-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for netpulse_discovery-0.1.3-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fbba3340083f2c27fea9716264fa30fda4be1620a473cc1be336814837480d81
MD5 9a7dc695cee160dc1b86fa6ad028a125
BLAKE2b-256 e7889e719e486554cd2204fe86ac84b7eccf569b55a58b70a3c2580b40114606

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page