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