#Автоматизированный инструмент подсчета поддоменов
Не удалось прогрузить медиа
Что такое SubDomz?
SubDomz — это инструмент автоматизации для пассивного поиска поддоменов заданной цели (или целей). Он использует несколько инструментов и различных онлайн-поисковых систем и сервисов параллельно для эффективного поиска поддоменов, их сортировки и сохранения в упорядоченном виде.https://github.com/0xPugal/SubDomz/tree/master
Обновление версии
INSTALL:
Bash:
#!/bin/bash
# Installing tools
sudo apt-get install -y parallel jq python3 python3-pip unzip
pip3 install --break-system-packages shodan censys
# Installing go
wget https://go.dev/dl/go1.23.5.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.23.5.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
go version
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
# Install tools using Go
GO111MODULE=on go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
GO111MODULE=on go install -v github.com/owasp-amass/amass/v3/...@master
GO111MODULE=on go install github.com/tomnomnom/assetfinder@latest
GO111MODULE=on go install -v github.com/projectdiscovery/chaos-client/cmd/chaos@latest
GO111MODULE=on go install -v github.com/hakluke/haktrails@latest
GO111MODULE=on go install github.com/lc/gau/v2/cmd/gau@latest
GO111MODULE=on go install github.com/gwen001/github-subdomains@latest
GO111MODULE=on go install github.com/gwen001/gitlab-subdomains@latest
GO111MODULE=on go install -v github.com/glebarez/cero@latest
GO111MODULE=on go install github.com/incogbyte/shosubgo@latest
GO111MODULE=on go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
GO111MODULE=on go install -v github.com/tomnomnom/anew@latest
GO111MODULE=on go install github.com/tomnomnom/unfurl@latest
git clone https://github.com/blechschmidt/massdns.git && cd massdns && make && sudo make install
GO111MODULE=on go install github.com/d3mondev/puredns/v2@latest
GO111MODULE=on go install -v github.com/projectdiscovery/dnsx/cmd/dnsx@latest
# Downloading Resolvers
git clone https://github.com/trickest/resolvers
# Downloading wordlist
wget -O best-dns-wordlist.txt https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt
# Downloading .gau.toml for gau
wget https://raw.githubusercontent.com/lc/gau/master/.gau.toml
# Installing findomain
wget https://github.com/Findomain/Findomain/releases/download/8.2.1/findomain-linux.zip && unzip findomain-linux.zip && rm findomain-linux.zip && chmod +x findomain && sudo mv findomain /usr/bin/
файлы конфигурации и ключи API
Code:
# configuration files and API keys
# feed with your api keys and tokens to subfinder and amass config files for moreee subdomains
export SUBFINDER_CONFIG=~/.config/subfinder/provider-config.yaml
export AMASS_CONFIG=~/.config/amass/config.ini
export HAKTRAILS_CONFIG=~/.config/haktools/haktrails-config.yml
export GITHUB_TOKEN="TOKEN_HERE"
export GITLAB_TOKEN="TOKEN_HERE"
export SHODAN_API_KEY="API_KEY_HERE"
export CHAOS_API_KEY="API_KEY_HERE"
export VIRUSTOTAL_API_KEY="API_KEY_HERE"
export RESOLVERS="resolvers/resolvers.txt"
export WORDLISTS="best-dbs-wordlist.txt"
#SubDomz.sh
Bash:
#!/bin/bash
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
go version
sleep 1
#colours
BOLD="\e[1m"
UNDERLINE="\e[4m"
RED="\e[31m"
GREEN="\e[32m"
BLUE="\e[34"
CYAN="\e[36m"
NC="\e[0m"
VERSION="3.0"
PRG=${0##*/}
source config.txt
Usage() {
while read -r line; do
printf "%b\n" "$line"
done <<-EOF
\r# ${BOLD}${GREEN}Options:${NC}
\r -d, --domain - Domain to enumerate
\r -l, --list - List of root domains to enumerate
\r -u, --use - Specify which tools to be used (Ex: subfinder, amass, crt,...)
\r -e, --exclude - Specify which tools to be excluded (Ex: findomain, wayback, gau,...)
\r -o, --output - Output file to save final results ( Default: <target>-Date-Time.txt)
\r -s, --silent - Show only subdomains in output
\r -hp, --http-probe - probe for working http/https servers
\r -k, --keep - keep the temporary files ( output from each tools)
\r -p, --parallel - Run parallely for faster results. Doesn't Work With -e/--exclude or -u/--use.
\r -h, --help - Display this help message and exit
\r -v, --version - Display the version and exit
\r -ls, --list-sources - Display all available sources/tools
EOF
exit 1
}
ListSources() {
echo -e "${BOLD}${CYAN}Available Sources/Tools:${NC}"
echo "wayback"
echo "Subfinder"
echo "Amass"
echo "Assetfinder"
echo "Chaos"
echo "Findomain"
echo "Haktrails"
echo "Gau"
echo "Github-subdomains"
echo "Gitlab-subdomains"
echo "Cero"
echo "Shosubgo"
echo "Censys"
echo "Crtsh"
echo "JLDC-anubis"
echo "Alienvault"
echo "Subdomain-center"
echo "Certspotter"
echo "VirusTotal"
echo "Puredns"
exit 1
}
spinner() {
processing="${1}"
while true;
do
dots=( "/" "-" "\\" "|" )
for dot in ${dots[@]};
do
printf "[${dot}] ${processing} \U1F50E"
printf " \r"
sleep 0.2
done
done
}
wayback() {
[ "$silent" == True ] && curl -sk "http://web.archive.org/cdx/search/cdx?url=*.$domain&output=txt&fl=original&collapse=urlkey&page=" | awk -F/ '{gsub(/:.*/, "", $3); print $3}' | sort -u | anew subenum-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${bold}WayBackMachine${end}" &
PID="$!"
}
curl -sk "http://web.archive.org/cdx/search/cdx?url=*.$domain&output=txt&fl=original&collapse=urlkey&page=" | awk -F/ '{gsub(/:.*/, "", $3); print $3}' | sort -u > tmp-wayback-$domain
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$bold[*] WayBackMachine$end: $(wc -l < tmp-wayback-$domain)"
}
}
Subfinder() {
[ "$silent" == True ] && subfinder -all -silent -d $domain -pc $SUBFINDER_CONFIG 2>/dev/null | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}Subfinder${NC}" &
PID="$!"
}
subfinder -all -silent -d $domain -pc $SUBFINDER_CONFIG 1> tmp-subfinder-$domain 2>/dev/null
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] Subfinder$NC: $(wc -l < tmp-subfinder-$domain)"
}
}
Amass() {
[ "$silent" == True ] && amass enum -passive -norecursive -noalts -d $domain 2>/dev/null | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}Amass${NC}" &
PID="$!"
}
amass enum -passive -norecursive -noalts -d $domain 1> tmp-amass-$domain 2>/dev/null
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] Amass$NC: $(wc -l < tmp-amass-$domain)"
}
}
Assetfinder() {
[ "$silent" == True ] && assetfinder --subs-only $domain | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}Assetfinder${NC}" &
PID="$!"
}
assetfinder --subs-only $domain > tmp-assetfinder-$domain
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] Assetfinder$NC: $(wc -l < tmp-assetfinder-$domain)"
}
}
Chaos() {
[ "$silent" == True ] && chaos -silent -key dd72c086-7b4e-4841-ac38-341a38cbb1a0 -d $domain | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}Chaos${NC}" &
PID="$!"
}
chaos -silent -key dd72c086-7b4e-4841-ac38-341a38cbb1a0 -d $domain > tmp-chaos-$domain
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] Chaos$NC: $(wc -l < tmp-chaos-$domain)"
}
}
Findomain() {
[ "$silent" == True ] && findomain -t $domain -q | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}Findomain${NC}" &
PID="$!"
}
findomain -t $domain -q > tmp-findomain-$domain
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] Findomain$NC: $(wc -l tmp-findomain-$domain)"
}
}
Haktrails() {
[ "$silent" == True ] && echo "$domain" | haktrails subdomains 2>/dev/null | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}Haktrails${NC}" &
PID="$!"
}
echo "$domain" | haktrails subdomains 1> tmp-haktrails-$domain 2>/dev/null
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] Haktrails$NC: $(wc -l tmp-haktrails-$domain)"
}
}
Gau() {
[ "$silent" == True ] && gau --threads 10 --subs $domain | unfurl -u domains | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}Gau${NC}" &
PID="$!"
}
gau --threads 10 --subs $domain | unfurl -u domains > tmp-gau-$domain
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] Gau$NC: $( wc -l < tmp-gau-$domain)"
}
}
Github-subdomains() {
[ "$silent" == True ] && github-subdomains -d $domain -t $GITHUB_TOKEN -raw 2>/dev/null | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}Github-Subdomains${NC}" &
PID="$!"
}
github-subdomains -d $domain -t $GITHUB_TOKEN -raw 1> tmp-github-subdomains-$domain 2>/dev/null
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] Github-Subdomains$NC: $( wc -l < tmp-github-subdomains-$domain)"
}
}
Gitlab-subdomains() {
[ "$silent" == True ] && gitlab-subdomains -d $domain -t $GITLAB_TOKEN 2>/dev/null | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}Gitlab-Subdomains${NC}" &
PID="$!"
}
gitlab-subdomains -d $domain -t $GITLAB_TOKEN 1> tmp-gitlab-subdomains-$domain 2>/dev/null
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] Github-Subdomains$NC: $( wc -l < tmp-gitlab-subdomains-$domain)"
}
}
Cero() {
[ "$silent" == True ] && cero $domain 2>/dev/null | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}Cero${NC}" &
PID="$!"
}
cero $domain 1> tmp-cero-$domain 2>/dev/null
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] Cero$NC: $( wc -l < tmp-cero-$domain)"
}
}
Shosubgo() {
echo "[-]Shodan api"
[ "$silent" == True ] && shosubgo -d $domain -s $SHODAN_API_KEY 2>/dev/null | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}Shosubgo${NC}" &
PID="$!"
}
shosubgo -d $domain -s $SHODAN_API_KEY 1> tmp-shosubgo-$domain 2>/dev/null
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] Shosubgo$NC: $( wc -l < tmp-shosubgo-$domain)"
}
}
Censys() {
echo "[-]You do not have access to the Censys API."
return 1
[ "$silent" == True ] && censys subdomains $domain | sed 's/^[ \t]*-//; s/-//g' 2>/dev/null | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}Censys${NC}" &
PID="$!"
}
censys subdomains $domain | sed 's/^[ \t]*-//; s/-//g' 1> tmp-censys-$domain 2>/dev/null
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] Censys$NC: $( wc -l < tmp-censys-$domain)"
}
}
Crtsh() {
[ "$silent" == True ] && curl -sk "https://crt.sh/?q=%.$domain&output=json" | tr ',' '\n' | awk -F'"' '/name_value/ {gsub(/\*\./, "", $4); gsub(/\\n/,"\n",$4);print $4}' | grep -w "$domain\$" | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}Crtsh${NC}" &
PID="$!"
}
curl -sk "https://crt.sh/?q=%.$domain&output=json" | tr ',' '\n' | awk -F'"' '/name_value/ {gsub(/\*\./, "", $4); gsub(/\\n/,"\n",$4);print $4}' | grep -w "$domain\$" | sort -u > tmp-crt-$domain
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] Crtsh$NC: $( wc -l < tmp-crt-$domain)"
}
}
JLDC() {
[ "$silent" == True ] && curl -sk "https://jldc.me/anubis/subdomains/$domain" | grep -Po "((http|https):\/\/)?(([\w.-]*)\.([\w]*)\.([A-z]))\w+" | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}JLDC${NC}" &
PID="$!"
}
curl -sk "https://jldc.me/anubis/subdomains/$domain" | grep -Po "((http|https):\/\/)?(([\w.-]*)\.([\w]*)\.([A-z]))\w+" | sort -u > tmp-jldc-$domain
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] JLDC$NC: $( wc -l < tmp-jldc-$domain)"
}
}
Alienvault() {
[ "$silent" == True ] && curl -s "https://otx.alienvault.com/api/v1/indicators/domain/$domain/url_list?limit=1000&page=100" | grep -o '"hostname": *"[^"]*' | sed 's/"hostname": "//' | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}Alienvault${NC}" &
PID="$!"
}
curl -s "https://otx.alienvault.com/api/v1/indicators/domain/$domain/url_list?limit=1000&page=100" | grep -o '"hostname": *"[^"]*' | sed 's/"hostname": "//' | sort -u > tmp-alienvault-$domain
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] Alienvault$NC: $( wc -l < tmp-alienvault-$domain)"
}
}
Subdomain-center() {
[ "$silent" == True ] && curl "https://api.subdomain.center/?domain=$domain" -s | jq -r '.[]' | sort -u | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}Subdomain center${NC}" &
PID="$!"
}
curl "https://api.subdomain.center/?domain=$domain" -s | jq -r '.[]' | sort -u > tmp-subdomaincenter-$domain
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] Subdomain center$NC: $( wc -l < tmp-subdomaincenter-$domain)"
}
}
Certspotter() {
[ "$silent" == True ] && curl -sk "https://api.certspotter.com/v1/issuances?domain=$domain&include_subdomains=true&expand=dns_names" | jq -r '.[].dns_names[]' | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}CertSpotter${NC}" &
PID="$!"
}
curl -sk "https://api.certspotter.com/v1/issuances?domain=$domain&include_subdomains=true&expand=dns_names" | jq -r '.[].dns_names[]' | sort -u > tmp-certspotter-$domain
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] CertSpotter$NC: $( wc -l < tmp-certspotter-$domain && echo)"
}
}
VirusTotal_v3() {
[ "$silent" == True ] && curl -s "https://www.virustotal.com/vtapi/v2/domain/report?apikey=$VIRUSTOTAL_API_KEY&domain=$domain" | jq | egrep -v "http|Alexa domain info" | grep "$domain" | sed 's/[",]//g' | sed 's/^[[:space:]]*//' | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}VirusTotal${NC}" &
PID="$!"
}
#echo "$VIRUSTOTAL_API_KEY"
curl -s "https://www.virustotal.com/api/v3/domains/$domain/subdomains?limit=1000" -H "X-Apikey: e305e03c513907696b384796434cd3051266d467851dc41381426615e623486d" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36" | jq -r '.data[].id' | sort -u > tmp-virustotal-$domain
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] VirusTotal$NC: $( wc -l < tmp-virustotal-$domain && echo)"
}
}
Puredns() {
[ "$silent" == True ] && puredns bruteforce $WORDLISTS $DOMAIN --resolvers $RESOLVERS | anew subdomz-$domain.txt || {
[[ ${PARALLEL} == True ]] || { spinner "${BOLD}Puredns${NC}" &
PID="$!"
}
puredns bruteforce best-dns-wordlist.txt $domain --resolvers resolvers/resolvers.txt --rate-limit 2000 --wildcard-batch 1000000 > tmp-puredns-$domain
[[ ${PARALLEL} == True ]] || kill ${PID} 2>/dev/null
echo -e "$BOLD[*] Puredns$NC: $( wc -l < tmp-puredns-$domain && echo)"
}
}
Use() {
for i in $lu;
do
$i
done
[[ $out != False ]] && Out $out || Out
}
Exclude() {
for i in ${list[@]};
do
if [[ " ${le[@]} " =~ " ${i} " ]]; then
continue
else
$i
fi
done
[[ $out != False ]] && Out $out || Out
}
Out() {
[ "$silent" == False ] && {
[ -n "$1" ] && output="$1" || output="$domain.txt"
result=$(sort -u tmp-* | wc -l)
sort -u tmp-* >> $output
echo -e $GREEN"[+] The Final subdomains:$NC ${result}"
[ $httprobe == True ] && Alive "$output" "$domain"
[ $delete == True ] && rm tmp-*
}
}
Alive() {
[ "$silent" == False ] && printf "$BOLD[+] HTTP probing... $NC"
printf " \r"
cat $1 | httpx -silent > "alive-$2.txt"
[ "$silent" == False ] && echo -e $GREEN"[+] Alive Subdomains:$NC $(wc -l < alive-$2.txt)"
}
List() {
lines=$(wc -l < $hosts)
count=1
while read domain; do
[ "$silent" == False ] && echo -e "\n${UNDERLINE}${BOLD}${CYAN}[+] Domain ($count/$lines):${NC} ${domain}"
[ $prv == "a" ] && {
[[ ${PARALLEL} == True ]] && {
spinner "Enumerating" &
PID="$!"
export -f Subfinder Amass Assetfinder Chaos Findomain Haktrails Gau Github-subdomains Gitlab-subdomains Cero Shosubgo Censys Crtsh JLDC Alienvault Subdomain-center Certspotter VirusTotal Puredns spinner
export domain silent BOLD NC
parallel -j18 ::: Subfinder Amass Assetfinder Chaos Findomain Haktrails Gau Github-subdomains Gitlab-subdomains Cero Shosubgo Censys Crtsh JLDC Alienvault Subdomain-center Certspotter VirusTotal_v3 Puredns
kill ${PID}
[[ $out != False ]] && Out $out || Out
} || {
wayback
Subfinder
Amass
Assetfinder
Chaos
Findomain
Haktrails
Gau
Github-subdomains
Gitlab-subdomains
Cero
Shosubgo
Censys
Crtsh
JLDC
Alienvault
Subdomain-center
Certspotter
VirusTotal_v3
Puredns
[[ $out != False ]] && Out $out || Out
}
}
[ $prv == "e" ] && Exclude
[ $prv == "u" ] && Use
let count+=1
done < $hosts
}
Main() {
[ $domain == False ] && [ $hosts == False ]
[ $use != False ] && [ $exclude != False ] && { echo -e $UNDERLINE$RED"[!] You can use only one option: -e/--exclude or -u/--use"$NC; Usage; }
[ $domain != False ] && {
[ $use == False ] && [ $exclude == False ] && {
[[ ${PARALLEL} == True ]] && {
spinner "Enumerating" &
PID="$!"
export -f wayback Subfinder Amass Assetfinder Chaos Findomain Haktrails Gau Github-subdomains Gitlab-subdomains Cero Shosubgo Censys Crtsh JLDC Alienvault Subdomain-center Certspotter VirusTotal Puredns spinner
export domain silent BOLD NC
parallel -j18 ::: wayback Subfinder Amass Assetfinder Chaos Findomain Haktrails Gau Github-subdomains Gitlab-subdomains Cero Shosubgo Censys Crtsh JLDC Alienvault Subdomain-center Certspotter VirusTotal_v3 Puredns
kill ${PID}
} || {
wayback
Subfinder
Amass
Assetfinder
Chaos
Findomain
Haktrails
Gau
Cero
Shosubgo
Censys
Crtsh
JLDC
Alienvault
Subdomain-center
Certspotter
VirusTotal_v3
Puredns
}
[ $out == False ] && Out || Out $out
} || {
[ $use != False ] && Use
[ $exclude != False ] && Exclude
}
}
[ "$hosts" != False ] && {
[ $use != False ] && prv=u
[ $exclude != False ] && prv=e
[ $use == False ] && [ $exclude == False ] && prv=a
List
}
}
domain=False
hosts=False
use=False
exclude=False
silent=False
delete=True
out=False
httprobe=False
PARALLEL=False
list=(
)
while [ -n "$1" ]; do
case $1 in
-d|--domain)
domain=$2
shift ;;
-l|--list)
hosts=$2
shift ;;
-u|--use)
use=$2
lu=${use//,/ }
for i in $lu; do
if [[ ! " ${list[@]} " =~ " ${i} " ]]; then
echo -e $RED$UNDERLINE"[-] Unknown Function: $i"$NC
Usage
fi
done
shift ;;
-e|--exclude)
exclude=$2
le=${exclude//,/ }
for i in $le; do
if [[ ! " ${list[@]} " =~ " ${i} " ]]; then
echo -e $RED$UNDERLINE"[-] Unknown Function: $i"$NC
Usage
fi
done
shift ;;
-o|--output)
out=$2
shift ;;
-s|--silent)
silent=True ;;
-k|--keep)
delete=False ;;
-hp|--http-probe)
httprobe=True ;;
-h|--help)
Usage;;
-p|--parallel)
PARALLEL=True ;;
-v|--version)
echo -e "${BOLD} SubDomz $VERSION $NC"
exit 0 ;;
-ls|--list-sources)
ListSources
;;
*)
echo "[-] Unknown Option: $1"
Usage ;;
esac
shift
done
[ "$silent" == False ] && echo -e $CYAN"""
Subdomain Enumeration Tool
"""$NC
clear
Main
#Поддомен в поддоменах :)
./Puredns_to_Puredns.sh xss.is.txt
ASP.net:
#!/bin/bash
# Check if the user provided a file argument
if [ -z "$1" ]; then
echo "Usage: $0 <domains_file>"
exit 1
fi
# The input file containing the domains (passed as a command-line argument)
input_file="$1"
# Loop through each line (domain) in the file
while IFS= read -r domain
do
# Run PureDNS for each domain
puredns bruteforce 2m-subdomains.txt "$domain" --resolvers resolvers/resolvers.txt>> "tmp-puredns2puredns.txt"
done < "$input_file"
👍61
🔥7
😁8
👏11
💯19
LIMB