Pdtm by Project Discovery

Project Discovery is an open-source software company that builds tools for cybersecurity.
They are under nuclei, subfinder, httpx, katana or naabu.

Recently they have published pdtm.
Pdtm is a simple and easy-to-use golang based tool for managing open-source projects from ProjectDiscovery.

Install

go1.19 is required to install successfully pdtm.

$ go install -v github.com/projectdiscovery/pdtm/cmd/pdtm@latest

go: downloading github.com/projectdiscovery/pdtm v0.0.4
go: downloading github.com/projectdiscovery/gologger v1.1.8
go: downloading github.com/logrusorgru/aurora/v4 v4.0.0
go: downloading github.com/projectdiscovery/goflags v0.1.8-0.20230227110143-6fd5a0dc706b
go: downloading github.com/projectdiscovery/utils v0.0.13
...

Usage

$ pdtm --help

pdtm is a simple and easy-to-use golang based tool for managing open source projects from ProjectDiscovery

Usage:
  pdtm [flags]

Flags:
CONFIG:
   -config string            cli flag configuration file (default "/home/ruben/.config/pdtm/config.yaml")
   -bp, -binary-path string  custom location to download project binary (default "/home/ruben/.pdtm/go/bin")
   -nsp, -no-set-path        disable adding path to environment variables

INSTALL:
   -i, -install string[]  install single or multiple project by name (comma separated)
   -ia, -install-all      install all the projects

UPDATE:
   -u, -update string[]  update single or multiple project by name (comma separated)
   -ua, -update-all      update all the projects

REMOVE:
   -r, -remove string[]  remove single or multiple project by name (comma separated)
   -ra, -remove-all      remove all the projects

DEBUG:
   -sp, -show-path  show the current binary path then exit
   -version         show version of the project
   -v, -verbose     show verbose output
   -nc, -no-color   disable output content coloring (ANSI escape codes)

$ pdtm

                ____          
     ____  ____/ / /_____ ___ 
    / __ \/ __  / __/ __ __  \
   / /_/ / /_/ / /_/ / / / / /
  / .___/\__,_/\__/_/ /_/ /_/ 
 /_/                          v0.0.4

                projectdiscovery.io

[WRN] Run `source ~/.zshrc` to add $PATH (/home/ruben/.pdtm/go/bin)
[INF] [OS: LINUX] [ARCH: ARM64] [GO: 1.19.4]
[INF] Path to download project binary: /home/ruben/.pdtm/go/bin

1. subfinder (outdated) (2.3.8) ➡ (2.5.6)
2. dnsx (not installed)
3. naabu (not supported)
4. httpx version not found
5. nuclei (outdated) (2.8.8) ➡ (2.8.9)
6. uncover (not installed)
7. cloudlist (not installed)
8. proxify (not installed)
9. tlsx (not installed)
10. notify (not installed)
11. chaos-client (not installed)
12. shuffledns (not installed)
13. mapcidr (not installed)
14. interactsh-client (not installed)
15. katana (outdated) (0.0.2) ➡ (0.0.3)

if needed add your bin go path to the config file located in: ~/.config/pdtm/config.yaml

...
# custom location to download project binary
binary-path: /home/ruben/go/bin
...

Update all installed applications

$ pdtm -ua

                ____          
     ____  ____/ / /_____ ___ 
    / __ \/ __  / __/ __ __  \
   / /_/ / /_/ / /_/ / / / / /
  / .___/\__,_/\__/_/ /_/ /_/ 
 /_/                          v0.0.4

                projectdiscovery.io

[INF] subfinder: not found in path /home/ruben/go/bin/subfinder
[ERR] error while updating subfinder: tool subfinder not found in path /home/ruben/go/bin/subfinder: skipping
[INF] dnsx: not found in path /home/ruben/go/bin/dnsx
[ERR] error while updating dnsx: tool dnsx not found in path /home/ruben/go/bin/dnsx: skipping
...
[INF] updating nuclei...
[INF] updated nuclei to 2.8.9(latest)
...
[INF] updating katana...
[INF] updated katana to 0.0.3(latest)

Note:
Here subfinder wasn’t installed with their go install command in the past, so pdtm doesn’t find it in the same folder.

$ whereis subfinder

subfinder: /usr/bin/subfinder

In this case the fix would be unistalling subfinder and using go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest

$ sudo apt purge subfinder
$ whereis subfinder

subfinder:

$ pdtm

                ____          
     ____  ____/ / /_____ ___ 
    / __ \/ __  / __/ __ __  \
   / /_/ / /_/ / /_/ / / / / /
  / .___/\__,_/\__/_/ /_/ /_/ 
 /_/                          v0.0.4

                projectdiscovery.io

[INF] [OS: LINUX] [ARCH: ARM64] [GO: 1.19.4]
[INF] Path to download project binary: /home/ruben/.pdtm/go/bin

1. subfinder (not installed)
2. dnsx (not installed)
3. naabu (not supported)
4. httpx version not found
5. nuclei (latest) (2.8.9)
6. uncover (not installed)
7. cloudlist (not installed)
8. proxify (not installed)
9. tlsx (not installed)
10. notify (not installed)
11. chaos-client (not installed)
12. shuffledns (not installed)
13. mapcidr (not installed)
14. interactsh-client (not installed)
15. katana (latest) (0.0.3)

Install an application

$ pdtm -i subfinder

                ____          
     ____  ____/ / /_____ ___ 
    / __ \/ __  / __/ __ __  \
   / /_/ / /_/ / /_/ / / / / /
  / .___/\__,_/\__/_/ /_/ /_/ 
 /_/                          v0.0.4

                projectdiscovery.io

[INF] installing subfinder...
[INF] installed subfinder 2.5.6(latest)

$ pdtm

                ____          
     ____  ____/ / /_____ ___ 
    / __ \/ __  / __/ __ __  \
   / /_/ / /_/ / /_/ / / / / /
  / .___/\__,_/\__/_/ /_/ /_/ 
 /_/                          v0.0.4

                projectdiscovery.io

[INF] [OS: LINUX] [ARCH: ARM64] [GO: 1.19.4]
[INF] Path to download project binary: /home/ruben/.pdtm/go/bin

1. subfinder (latest) (2.5.6)
2. dnsx (not installed)
3. naabu (not supported)
4. httpx version not found
5. nuclei (latest) (2.8.9)
6. uncover (not installed)
7. cloudlist (not installed)
8. proxify (not installed)
9. tlsx (not installed)
10. notify (not installed)
11. chaos-client (not installed)
12. shuffledns (not installed)
13. mapcidr (not installed)
14. interactsh-client (not installed)
15. katana (latest) (0.0.3)

$ subfinder -version

[INF] Current Version: v2.5.6