Skip to main content

A comprehensive ONVIF device discovery and analysis tool for network cameras and devices

Project description

ONVIF Scout

A comprehensive ONVIF device discovery and analysis tool that helps you find, authenticate, and examine ONVIF-compatible devices on your network. ONVIF Scout provides robust device detection, credential testing, and detailed capability analysis with an intuitive command-line interface.

๐ŸŒŸ Features

Device Discovery

  • Uses WS-Discovery protocol for device detection
  • Supports multiple network interfaces
  • Configurable timeout and retry settings
  • Automatic response parsing and validation

Authentication Probe

  • Concurrent credential testing with configurable workers
  • Support for both Basic and Digest authentication
  • Automatic auth type detection
  • Built-in retry mechanism for reliability
  • Progress tracking for long operations

Feature Detection

  • Comprehensive capability analysis
  • Service enumeration
  • Device information retrieval
  • PTZ capabilities detection
  • Media profile inspection
  • Analytics support detection

User Interface

  • Color-coded console output
  • Progress bars for long operations
  • Detailed debug logging option
  • Clean, organized results display
  • Support for quiet mode

๐Ÿ“‹ Requirements

  • Python 3.8 or higher
  • Network access to ONVIF devices
  • Required packages:
    • colorama >= 0.4.6
    • requests >= 2.32.3

๐Ÿš€ Installation

Using pip (Recommended)

pip install onvifscout

From Source

# Clone the repository
git clone https://github.com/chrissmartin/onvifscout.git
cd onvifscout

# Create virtual environment (recommended)
python -m venv venv

# Activate virtual environment
# On Linux/MacOS:
source venv/bin/activate
# On Windows:
venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Install the package
pip install -e .

๐Ÿ› ๏ธ Usage

Basic Command

onvifscout

Command-Line Options

Optional arguments:
  -h, --help            Show this help message
  --timeout SECS        Discovery timeout in seconds (default: 3)
  --max-workers NUM     Maximum concurrent authentication attempts (default: 5)
  --usernames LIST      Comma-separated list of usernames to try
  --passwords LIST      Comma-separated list of passwords to try
  --skip-auth          Skip authentication probe
  --skip-features      Skip feature detection
  --no-color           Disable colored output
  --quiet              Suppress non-essential output
  --debug              Enable debug logging

Example Commands

# Extended discovery timeout and more concurrent workers
onvifscout --timeout 5 --max-workers 10

# Custom credential lists
onvifscout --usernames admin,root,operator --passwords admin,12345,password123

# Quick discovery only (skip auth and feature detection)
onvifscout --skip-auth --skip-features

# Debug mode with extended timeout
onvifscout --debug --timeout 10

# Quiet mode with custom credentials
onvifscout --quiet --usernames admin --passwords admin,12345

Default Credentials

The tool tests the following default credentials unless otherwise specified:

  • Usernames: admin, root, service
  • Passwords: admin, 12345, password

๐Ÿ“ Project Structure

onvifscout/
โ”œโ”€โ”€ onvifscout/
โ”‚   โ”œโ”€โ”€ __init__.py        # Package initialization
โ”‚   โ”œโ”€โ”€ main.py            # CLI entry point
โ”‚   โ”œโ”€โ”€ auth.py            # Authentication handling
โ”‚   โ”œโ”€โ”€ discovery.py       # Device discovery
โ”‚   โ”œโ”€โ”€ features.py        # Feature detection
โ”‚   โ”œโ”€โ”€ models.py          # Data models
โ”‚   โ”œโ”€โ”€ utils.py           # Utilities and logging
โ”‚   โ””โ”€โ”€ help_formatter.py  # Help message formatting
โ”œโ”€โ”€ setup.py               # Package configuration
โ”œโ”€โ”€ requirements.txt       # Dependencies
โ””โ”€โ”€ README.md             # Documentation

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit pull requests, create issues, or suggest improvements.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

๐Ÿ“œ License

Distributed under the MIT License. See LICENSE for more information.

โœ‰๏ธ Contact

Project Link: https://github.com/chrissmartin/onvifscout

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

onvifscout-0.1.0.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

onvifscout-0.1.0-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file onvifscout-0.1.0.tar.gz.

File metadata

  • Download URL: onvifscout-0.1.0.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for onvifscout-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cb67501a5cc7a25db9fec5c0cd50fc9c8ea26aa37a68d6f19dbc78808939b0b1
MD5 ca211963b702300934350b00aa645889
BLAKE2b-256 9c1a3e73b835a099167b4bb35729b016ef467f5eef4cd013a029705f50528737

See more details on using hashes here.

File details

Details for the file onvifscout-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: onvifscout-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for onvifscout-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 54c9aee0ba8e6d04dba6a23b32bcc3723bf7c431c9473668807c988609e95080
MD5 7027cc704e9525bcc2a4f339f2240bc2
BLAKE2b-256 20fc00fb471858838c595fa2e43e6943950420ba1381b88438dc3d16509c20df

See more details on using hashes here.

Supported by

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