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.2.4.tar.gz (41.5 kB view details)

Uploaded Source

Built Distribution

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

onvifscout-0.2.4-py3-none-any.whl (41.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: onvifscout-0.2.4.tar.gz
  • Upload date:
  • Size: 41.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.18

File hashes

Hashes for onvifscout-0.2.4.tar.gz
Algorithm Hash digest
SHA256 e35a8c3248de4accb6f17a9f19375e662062aef8e2dc7edfcd76745d104d33b4
MD5 776bacd08aeea77ae55f458d16d80246
BLAKE2b-256 f98e23d7a0786af6b7823b03b3ea37d600c3557143b6670b3b059046042ce37a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: onvifscout-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 41.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.18

File hashes

Hashes for onvifscout-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 7fd9b839171d321304a080e616f49f0010c11fac57d3119883094556ea231ac8
MD5 b080594f0066e4279095e14e7d027253
BLAKE2b-256 0ef00673494e28c0b4c308ead882d18673801e784452ec205df6827f50e830f4

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