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

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:

  1. Entry Point: The doom command calls doom.__main__.run() in src/doom/__main__.py
  2. Application Initialization: Creates DoomApp with global bindings (Ctrl+Q to quit)
  3. Login Phase: LoginScreen collects connection parameters and builds a login_data dictionary
  4. Enumeration Phase: LoadingScreen (from src/doom/screens/loading_screen.py) initiates LDAP discovery via src/doom/protocols/ldap.py and runs enumerate_templates() from src/doom/modules/enumerate_templates.py
  5. Display Phase: Results are rendered in MainScreen using parsing logic from src/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/doom for the most reliable setup
  • The entry point doom executes src/doom/__main__.py, launching a Textual TUI
  • Core functionality depends on ldap3 for 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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →