ultrahost 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #!/bin/bash
  2. #27/06/2021
  3. clear
  4. clear
  5. declare -A cor=([0]="\033[1;37m" [1]="\033[1;34m" [2]="\033[1;31m" [3]="\033[1;33m" [4]="\033[1;32m")
  6. SCPdir="/etc/VPS-MX" && [[ ! -d ${SCPdir} ]] && exit 1
  7. SCPusr="${SCPdir}/controlador" && [[ ! -d ${SCPusr} ]] && mkdir ${SCPusr}
  8. SCPfrm="${SCPdir}/herramientas" && [[ ! -d ${SCPfrm} ]] && mkdir ${SCPfrm}
  9. SCPinst="${SCPdir}/protocolos" && [[ ! -d ${SCPfrm} ]] && mkdir ${SCPfrm}
  10. subdom() {
  11. SUBDOM="$1"
  12. [[ "$SUBDOM" = "" ]] && return
  13. randomize="$RANDOM"
  14. for sites in $(cat $log); do
  15. [[ $(echo ${DNS[@]} | grep $sites) = "" ]] && DNS+=($sites)
  16. [[ $(echo ${DNS[@]} | grep $sites) != "" ]] && cat $log | grep -v "$sites" >$log
  17. done
  18. while true; do
  19. [[ "$(pidof lynx | wc -w)" -lt "20" ]] && break
  20. done
  21. (
  22. HOST[$randomize]="$SUBDOM"
  23. 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
  24. ) >/dev/null 2>&1 &
  25. }
  26. iniciar() {
  27. while [[ -z $SUB_DOM ]]; do
  28. echo -ne "\033[1;33m$(fun_trans "Introduzca el Dominio para realizar la prueba"): " && read SUB_DOM
  29. done
  30. [[ -z $limite ]] && echo -ne "\033[1;33m$(fun_trans "Escriba el Limite de Resultados"): " && read limite
  31. [[ -z ${limite} ]] && limite="300"
  32. msg -bar
  33. #CRIA LOG
  34. log="./loog" && touch $log
  35. #INICIA PRIMEIRA BUSCA
  36. _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}')
  37. for _DOMS in $(echo $_DOM); do
  38. [[ $(echo ${DNS[@]} | grep ${_DOMS}) = "" ]] && DNS+=(${_DOMS})
  39. done
  40. #INICIA THREADS
  41. i=0
  42. while true; do
  43. DOMAIN=$(echo "${DNS[$i]}")
  44. [[ $DOMAIN = "" ]] && break
  45. if [[ $(echo -e "${PESQ[@]}" | grep "$DOMAIN") = "" ]]; then
  46. subdom "$DOMAIN"
  47. echo -e "\033[1;31m(Scan\033[1;32m $((${#PESQ[@]} + 1))\033[1;31m de \033[1;32m${#DNS[@]}\033[1;31m) - $(fun_trans "Escaneando") ---> \033[1;36mhttp://$DOMAIN\033[1;37m"
  48. PESQ+=($DOMAIN)
  49. fi
  50. [[ "$(echo ${#DNS[@]})" -gt "$limite" ]] && break
  51. i=$(($i + 1))
  52. sleep 1s
  53. done
  54. rm $log
  55. msg -bar
  56. echo -e "\033[1;32m$(fun_trans "Scan Finalizado Inicio de la colección de IPs")\033[1;31m\033[0m"
  57. [[ -e $HOME/subresult ]] && rm $HOME/subresult
  58. [[ ! -e $HOME/subresult ]] && touch $HOME/subresult
  59. for result in $(echo "${DNS[@]}"); do
  60. (
  61. rand="$RANDOM"
  62. dns[rand]="$result"
  63. scan[rand]=$(echo ${result} | cut -d'/' -f1)
  64. 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
  65. echo -e "====================================\nDNS: ${dns[rand]}\nIP: ${IP[rand]}\n====================================" >>$HOME/subresult
  66. unset IP
  67. ) &
  68. done
  69. while true; do
  70. [[ $(pidof nslookup | wc -w) -lt "1" ]] && break
  71. done
  72. msg -bar
  73. RSLT=$(($(cat $HOME/subresult | wc -l) / 4)) && echo -e "\033[1;32m$RSLT $(fun_trans "Hosts Capturados")\033[0m"
  74. msg -bar
  75. echo -ne "$(fun_trans "Desea Imprimir Resultados")? [S/N]: "
  76. read yn
  77. [[ $yn = @(s|S|y|Y) ]] && {
  78. echo -ne "\033[1;32m"
  79. cat $HOME/subresult | grep -v =
  80. echo -e "$barra\033[0m"
  81. }
  82. return 0
  83. }
  84. #INICIA SCRIPT
  85. msg -bar
  86. msg -tit
  87. echo -e "\033[1;33m $(fun_trans " SCAN DE SUNDOMINIOS")"
  88. msg -bar
  89. iniciar
  90. [[ $? = "0" ]] &&
  91. echo -e "\033[1;32m$(fun_trans "Registro generado en el archivo") $HOME/subresult\033[0m" &&
  92. msg -bar