ultrahost 3.1 KB

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