Skip to main content

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

Metadata

Release files for onvifscout 0.2.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for onvifscout 0.2.4
File Size Uploaded
onvifscout-0.2.4.tar.gz 41.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for onvifscout 0.2.4
File Interpreter ABI Platform
onvifscout-0.2.4-py3-none-any.whl Python 3 none any Details

Total release size: 83.2 kB

Release files / onvifscout-0.2.4.tar.gz

Download URL onvifscout-0.2.4.tar.gz
Size 41.5 kB
Tags Source
SHA-256 checksum
How to use checksums
e35a8c3248de4accb6f17a9f19375e662062aef8e2dc7edfcd76745d104d33b4
BLAKE2b-256 checksum
How to use checksums
f98e23d7a0786af6b7823b03b3ea37d600c3557143b6670b3b059046042ce37a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.18

Release files / onvifscout-0.2.4-py3-none-any.whl

Download URL onvifscout-0.2.4-py3-none-any.whl
Size 41.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7fd9b839171d321304a080e616f49f0010c11fac57d3119883094556ea231ac8
BLAKE2b-256 checksum
How to use checksums
0ef00673494e28c0b4c308ead882d18673801e784452ec205df6827f50e830f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.18

Release history Release notifications | RSS feed

This release

0.2.4 This release

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page