Console web directory and subdomain scanner for security research and asset discovery
Project description
OWASP WEB Directory Scanner 
| Python | Linux | OSX |
|---|---|---|
| 3.12 | ||
| 3.13 | ||
| 3.14 |
OpenDoor OWASP is console multifunctional website's scanner.
This application finds all possible ways to login, index of/ directories, web shells, restricted access points, subdomains, hidden data and large backups.
The scanning is performed by the built-in dictionary and external dictionaries as well. Anonymity and speed are provided by means of using proxy servers.
Software is written for informational purposes and is open source product under the GPL license.
- Current 5.0.0 (2026)
- Directories: 83012
- Subdomains: 255359
Changelog (last changes)
v5.0.0 (2026)
- Added:
pyproject.tomlfor modern Python packaging workflow - Added: source and wheel build support through
python -m build - Added: refreshed
MANIFEST.infor correct source distribution contents - Added:
AGENTS.mdfor contributor and agent workflow guidance - Added:
Ruffbaseline for lightweight Python linting - Changed: Python support baseline updated to
3.12,3.13,3.14 - Changed: package build/install flow modernized for current Python ecosystem
- Changed: CLI update/version behavior refreshed for modern environments
- Changed: help text and install flow documentation clarified
- Changed: test suite refreshed for modern Python runtime and standard library mocks
- Changed: development dependencies refreshed to current maintained versions
- Fixed: build issues for source and wheel distribution generation
- Fixed: packaging metadata and install paths for modern setuptools/pip workflows
- Fixed: tests depending on external shell and network behavior
- Fixed: CLI banner rendering and package installation checks
- Planned next: deeper refactoring, additional tests, warnings cleanup and internal code improvements
Testing of the software on the live commercial systems and organizations is prohibited!
- ✅ directories scanner
- ✅ subdomains scanner
- ✅ multithreading control
- ✅ scan's reports
- ✅ HTTP(S) (PORT) support
- ✅ Keep-alive long pooling
- ✅ Invalid certificates scan
- ✅ HTTP(S)/SOCKS proxies
- ✅ dynamic request header
- ✅ custom wordlists prefixes
- ✅ custom wordlists, proxies, ignore lists
- ✅ debug levels (1-3)
- ✅ extensions filter
- ✅ custom reports directory
- ✅ custom config wizard (use random techniques)
- ✅ analyze techniques:
- detect redirects
- detect index of/ Apache
- detect large files
- skip 200 OK redirects
- skip empty pages
- heuristic detect invalid pages
- blank success page filter
- certificate required pages
- ✅ randomization techniques:
- random user-agent per request
- random proxy per request
- wordlists shuffling
- wordlists filters
Install PIP
python3 -m ensurepip --upgrade
python3 -m pip install --upgrade pip
Local installation and run
Use this mode if you want to run OpenDoor directly from the repository without installing it globally.
git clone https://github.com/stanislav-web/OpenDoor.git
cd OpenDoor/
python3 -m pip install -r requirements.txt
chmod +x opendoor.py
python3 opendoor.py --host http://www.example.com
Local development installation
Use this mode if you are developing, testing, or changing the project locally.
git clone https://github.com/stanislav-web/OpenDoor.git
cd OpenDoor/
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip setuptools wheel
python -m pip install -r requirements-dev.txt
python -m pip install -e .
opendoor --host http://www.example.com
Global installation from PyPI
Use this if you want the package available as a normal Python CLI tool.
python3 -m pip install --upgrade opendoor
opendoor --host http://www.example.com
Global installation with pipx (recommended for end users)
macOS / Homebrew
brew install pipx
pipx ensurepath
pipx install opendoor
opendoor --host http://www.example.com
Linux / generic environments
Install pipx with your system package manager or preferred Python tooling, then:
pipx ensurepath
pipx install opendoor
opendoor --host http://www.example.com
pipx is the preferred option when you want an isolated CLI installation without managing a project virtual environment manually.
Installation from source for OS distributions / maintainers
This flow is intended for Linux distributions, package maintainers, and release pipelines.
git clone https://github.com/stanislav-web/OpenDoor.git
cd OpenDoor/
python3 -m pip install --upgrade build
python3 -m build
Generated artifacts:
dist/opendoor-5.0.0.tar.gz
dist/opendoor-5.0.0-py3-none-any.whl
This flow is preferable for Linux distributions and package maintainers because:
- source package and wheel are generated through the standard Python build backend
- installation can be managed by the distribution package manager
- updates can be delivered together with OS package updates
- no legacy
setup.py installflow is required
The package is already present in BlackArch Linux, and this build layout is intended to make packaging for other Linux distributions easier as well.
Manual installation from built wheel
python3 -m pip install dist/opendoor-5.0.0-py3-none-any.whl
opendoor --host http://www.example.com
Updates
PyPI installation
python3 -m pip install --upgrade opendoor
pipx installation
pipx upgrade opendoor
Source checkout
git pull
python3 -m pip install -e .
Help
usage: opendoor.py [-h] [--host HOST] [-p PORT] [-m METHOD] [-t THREADS]
[-d DELAY] [--timeout TIMEOUT] [-r RETRIES]
[--keep-alive] [--accept-cookies] [--debug DEBUG] [--tor]
[--torlist TORLIST] [--proxy PROXY] [-s SCAN] [-w WORDLIST]
[--reports REPORTS] [--reports-dir REPORTS_DIR]
[--random-agent] [--random-list] [--prefix PREFIX]
[-e EXTENSIONS] [-i IGNORE_EXTENSIONS] [--sniff SNIFF]
[--update] [--version] [--examples] [--docs]
[--wizard [WIZARD]]
optional arguments:
-h, --help show this help message and exit
required named options:
--host HOST Target host; example: --host http://example.com
Application tools:
--update Show package update instructions
--version Show current version
--examples Show usage examples
--docs Open documentation
--wizard [WIZARD] Run scanner wizard from your config
Debug tools:
--debug DEBUG Debug level -1 (silent), 1 - 3
Reports tools:
--reports REPORTS Scan reports (json,std,txt,html)
--reports-dir REPORTS_DIR
Path to custom reports directory
Request tools:
-p PORT, --port PORT Custom port (default 80)
-m METHOD, --method METHOD
Request method (HEAD by default)
-d DELAY, --delay DELAY
Delay between threaded requests
--timeout TIMEOUT Request timeout (30 sec default)
-r RETRIES, --retries RETRIES
Maximum reconnect retries (default 3)
--keep-alive Use keep-alive connection
--accept-cookies Accept and route cookies from responses
--tor Use built-in proxy list
--torlist TORLIST Path to custom proxy list
--proxy PROXY Custom permanent proxy server
--random-agent Randomize user-agent per request
Sniff tools:
--sniff SNIFF Response sniff plugins
(indexof,collation,file,skipempty,skipsizes=NUM:NUM...)
Stream tools:
-t THREADS, --threads THREADS
Allowed threads
Wordlist tools:
-s SCAN, --scan SCAN Scan type: directories or subdomains
-w WORDLIST, --wordlist WORDLIST
Path to custom wordlist
--random-list Shuffle scan list
--prefix PREFIX Append path prefix to scan host
-e EXTENSIONS, --extensions EXTENSIONS
Force selected extensions for scan session, e.g. php,json
-i IGNORE_EXTENSIONS, --ignore-extensions IGNORE_EXTENSIONS
Ignore selected extensions for scan session, e.g. aspx,jsp
Maintainers
- @stanislav-web https://github.com/stanislav-web (Developer)
Tests
python3 -m pip install -r requirements-dev.txt
python3 -m unittest
Build
python3 -m pip install -r requirements-dev.txt
python3 -m build
Lint
python3 -m pip install -r requirements-dev.txt
ruff check .
Contributors
If you like to contribute to the development of the project, in that case, pull requests are open for you.
Also, you can suggest ideas and create a task in my track list.
Documentation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file opendoor-5.0.0.tar.gz.
File metadata
- Download URL: opendoor-5.0.0.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
078e35d588f8c32870c3b8fe6fddfdda2dd1c38f8c03365c2a05754150a10bc2
|
|
| MD5 |
73ed41c4ccd5b6aa626cf04177559cd0
|
|
| BLAKE2b-256 |
50156e08a011b7d23d608210c359fff6d8f97d6e4b5c96b695098ebbdd2b1c45
|
File details
Details for the file opendoor-5.0.0-py3-none-any.whl.
File metadata
- Download URL: opendoor-5.0.0-py3-none-any.whl
- Upload date:
- Size: 1.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
702e422726462edeecc561c75643a9ffd4a1a6f3e32b98c9c608f51758e1303f
|
|
| MD5 |
ba3a12ffe742bc35fcd35abe6afdeb44
|
|
| BLAKE2b-256 |
1cfc89eac13149a3003d6d5b6b0bf556e7f6cb3f9f13b1ae8bb1478de4ddd49d
|