#!/bin/sh # sds - subdomain scanner via Certificate Transparency logs (crt.sh) # Usage: sds [ -z "$1" ] && echo "Usage: sds " && exit 1 domain="$(echo "$1" | sed 's|^https\?://||;s|/.*||' | tr '[:upper:]' '[:lower:]')" printf "Scanning CT logs for *.%s ...\n\n" "$domain" curl -sf "https://crt.sh/?q=%25.${domain}&output=json" | jq -r '.[].common_name, .[].name_value' 2>/dev/null | tr '\n' '\n' | sed 's/\r//g' | tr '[:upper:]' '[:lower:]' | grep -v "^${domain}$" | grep "\.${domain}$\|^\*\.${domain}$" | sort -u | awk -v dom="$domain" ' /^\*\./ { wild[NR] = $0; next } { reg[NR] = $0 } END { n = 0 for (i in reg) n++ for (i in wild) n++ printf "%d subdomains found for %s\n\n", n, dom printf "%-4s %s\n", "#", "SUBDOMAIN" printf "%-4s %s\n", "---", "---" c = 0 for (i in reg) { c++; printf "%-4d %s\n", c, reg[i] } for (i in wild) { c++; printf "%-4d %s\n", c, wild[i] } } '