1
0

ultrahost 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #!/bin/bash
  2. subdom () {
  3. SUBDOM="$1"
  4. [[ "$SUBDOM" = "" ]] && return
  5. randomize="$RANDOM"
  6. for sites in `cat $log`; do
  7. [[ $(echo ${DNS[@]}|grep $sites) = "" ]] && DNS+=($sites)
  8. [[ $(echo ${DNS[@]}|grep $sites) != "" ]] && cat $log|grep -v "$sites" > $log
  9. done
  10. while true; do
  11. [[ "$(pidof lynx | wc -w)" -lt "20" ]] && break
  12. done
  13. (
  14. HOST[$randomize]="$SUBDOM"
  15. curl -sSL "${HOST[$randomize]}"|grep -Eoi '<a [^>]+>'|grep -Eo 'href="[^\"]+"'|grep -Eo '(http|https)://[a-zA-Z0-9./*]+'|sort -u|awk -F "://" '{print $2}' >> $log
  16. ) > /dev/null 2>&1 &
  17. }
  18. iniciar () {
  19. SUB_DOM=$1
  20. limite=$2
  21. [[ ${SUB_DOM} = "" ]] && read -p "Site Alvo: " SUB_DOM
  22. [[ ${limite} = "" ]] && limite="300"
  23. #CRIA LOG
  24. log="./loog" && touch $log
  25. #INICIA PRIMEIRA BUSCA
  26. _DOM=$(curl -sSL "$SUB_DOM"|grep -Eoi '<a [^>]+>'|grep -Eo 'href="[^\"]+"'|grep -Eo '(http|https)://[a-zA-Z0-9./*]+'|sort -u|awk -F "://" '{print $2}')
  27. for _DOMS in `echo $_DOM`; do
  28. [[ $(echo ${DNS[@]}|grep ${_DOMS}) = "" ]] && DNS+=(${_DOMS})
  29. done
  30. #INICIA THREADS
  31. i=0
  32. while true; do
  33. DOMAIN=$(echo "${DNS[$i]}")
  34. [[ $DOMAIN = "" ]] && break
  35. if [[ $(echo -e "${PESQ[@]}"|grep "$DOMAIN") = "" ]]; then
  36. subdom "$DOMAIN"
  37. echo -e "\033[1;31m(Scan\033[1;32m $((${#PESQ[@]}+1))\033[1;31m de \033[1;32m${#DNS[@]}\033[1;31m) - Escaneando ---> \033[1;36mhttp://$DOMAIN\033[1;37m"
  38. PESQ+=($DOMAIN)
  39. fi
  40. [[ "$(echo ${#DNS[@]})" -gt "$limite" ]] && break
  41. i=$(($i+1))
  42. sleep 1s
  43. done
  44. rm $log
  45. echo -e "\033[1;31m====================================\n\033[1;32mScan Finalizado!, Iniciando Coleta de IPs\033[1;31m\n====================================\033[0m"
  46. [[ -e $HOME/subresult ]] && rm $HOME/subresult
  47. [[ ! -e $HOME/subresult ]] && touch $HOME/subresult
  48. for result in $(echo "${DNS[@]}"); do
  49. (
  50. rand="$RANDOM"
  51. dns[rand]="$result"
  52. scan[rand]=$(echo ${result}|cut -d'/' -f1)
  53. IP[rand]=$(nslookup "${scan[rand]}"|grep -Eo 'Address: [0-9.]+'|grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'|tail -1) > /dev/null 2>&1
  54. echo -e "====================================\nDNS: ${dns[rand]}\nIP: ${IP[rand]}\n====================================" >> $HOME/subresult
  55. unset IP
  56. ) &
  57. done
  58. while true; do
  59. [[ $(pidof nslookup|wc -w) -lt "1" ]] && break
  60. done
  61. RSLT=$(($(cat $HOME/subresult|wc -l)/4)) && echo -e "\033[1;31m====================================\n\033[1;32m$RSLT Hosts Capturados\n\033[1;31m====================================\033[0m"
  62. echo -ne "Desea Imprimir los Resultados? [S/N]: "; read yn
  63. [[ $yn = @(s|S|y|Y) ]] && {
  64. echo -ne "\033[1;32m"
  65. cat $HOME/subresult|grep -v =
  66. echo -e "\033[1;31m====================================\033[0m"
  67. }
  68. return 0
  69. }
  70. #INICIA SCRIPT
  71. echo -e "\033[1;31m====================================\033[0m"
  72. echo -e "\033[1;33m INICIALIZANDO PROCEDIMENTOS (SCAN)"
  73. echo -e "\033[1;31m====================================\033[0m"
  74. iniciar $1 $2
  75. [[ $? = "0" ]] &&
  76. echo -e "\033[1;32mRegistro Generado en : $HOME/subresult\033[0m" &&
  77. echo -e "\033[1;31m====================================\033[0m"