How to Install Doom: A Complete Guide to the AD Certificate Template Viewer
Install Doom using pipx with pipx install git+https://github.com/000pp/doom to obtain the doom command-line tool, which launches a Textual TUI for enumerating Active Directory certificate templates.
Doom is a Python-based Text User Interface (TUI) built on the Textual framework that connects to Active Directory servers to discover AD Certificate Services (ADCS) hosts and enumerate available certificate templates. Learning how to install Doom from the 000pp/doom repository provides security professionals with a streamlined tool for certificate template analysis. The installation process is straightforward and requires only Python and the pipx package manager to get started.
Prerequisites
Before you install Doom, ensure your system meets the following requirements:
- Python 3.8 or higher installed on your system
- pipx (recommended) or pip for package installation
- Git to clone the repository if installing from source
Installation Methods
Install Doom with pipx (Recommended)
The cleanest way to install Doom is using pipx, which isolates the application and its dependencies (Textual, ldap3, and Certipy parsing libraries) in a dedicated virtual environment.
On Linux distributions:
sudo apt install pipx git
pipx ensurepath
pipx install git+https://github.com/000pp/doom
On macOS:
brew install pipx
pipx ensurepath
pipx install git+https://github.com/000pp/doom
Install Doom with pip
If you prefer using pip directly:
pip install git+https://github.com/000pp/doom
Install from Source
For development or customization, clone the repository and install in editable mode:
git clone https://github.com/000pp/doom.git
cd doom
pip install -e .
Running Doom After Installation
Once installed, the doom console script becomes available in your system PATH. This entry point executes the run() function in src/doom/__main__.py, which creates a DoomApp instance (a Textual App) and starts the event loop.
doom
Executing this command launches the TUI and immediately displays the LoginScreen defined in src/doom/screens/login_screen.py. This screen prompts you for the target IP address, domain name, and credentials required to bind to the Active Directory LDAP server.
What Happens When You Run Doom
Understanding the execution flow helps verify that your installation worked correctly:
- Entry Point: The
doomcommand callsdoom.__main__.run()insrc/doom/__main__.py - Application Initialization: Creates
DoomAppwith global bindings (Ctrl+Q to quit) - Login Phase:
LoginScreencollects connection parameters and builds alogin_datadictionary - Enumeration Phase:
LoadingScreen(fromsrc/doom/screens/loading_screen.py) initiates LDAP discovery viasrc/doom/protocols/ldap.pyand runsenumerate_templates()fromsrc/doom/modules/enumerate_templates.py - Display Phase: Results are rendered in
MainScreenusing parsing logic fromsrc/doom/parsers/certipy/structs.py
Advanced: Programmatic Usage
After you install Doom, you can also import its modules directly for automation scripts:
from doom.modules.enumerate_templates import enumerate_templates
from doom.protocols.ldap import LDAPConnection
conn = LDAPConnection(
ip="192.168.1.10",
domain="corp.local",
username="administrator",
password="SecurePass123"
)
templates = enumerate_templates(conn)
for template in templates:
print(f"Template: {template['name']}")
Summary
- Install Doom using
pipx install git+https://github.com/000pp/doomfor the most reliable setup - The entry point
doomexecutessrc/doom/__main__.py, launching a Textual TUI - Core functionality depends on
ldap3for Active Directory connectivity and Certipy parsers for template decoding - The modular architecture separates UI screens (
src/doom/screens/), LDAP protocols (src/doom/protocols/), and business logic (src/doom/modules/) - Supports both interactive TUI usage and programmatic import of
enumerate_templates
Frequently Asked Questions
What Python version is required to install Doom?
Doom requires Python 3.8 or higher. The application depends on Textual for the TUI and ldap3 for Active Directory connectivity, both of which require modern Python 3 versions.
Can I install Doom without pipx?
Yes, you can use standard pip with pip install git+https://github.com/000pp/doom. However, pipx is recommended because it installs Doom in an isolated virtual environment, preventing dependency conflicts with system Python packages.
Where is the entry point defined when I run the doom command?
The console script entry point is configured in the package metadata and calls doom.__main__.run(). This function is implemented in src/doom/__main__.py and instantiates the DoomApp class, which manages the Textual application lifecycle and screen navigation.
How do I verify that Doom installed correctly?
Run the doom command in your terminal. If the installation succeeded, the Textual TUI will launch and display the login interface from src/doom/screens/login_screen.py, prompting for Active Directory connection details. Press Ctrl+Q to exit.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →