ultrahost 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. scan_funtion () {
  19. #INICIA SCRIPT
  20. clear
  21. echo -e "\033[1;32mINICIALIZANDO PROCEDIMENTOS (SCAN) \033[0m"
  22. echo ""
  23. #INICIA SCRIPT
  24. unset hostcaptura
  25. while [[ ${hostcaptura} = "" ]]; do
  26. echo -ne "\033[1;37m Digite o dominio: " && read hostcaptura
  27. tput cuu1 && tput dl1
  28. done
  29. unset limitecaptura
  30. while [[ ${limitecaptura} != +([0-9]) ]]; do
  31. echo -ne "\033[1;37m Limite de captura: " && read limitecaptura
  32. tput cuu1 && tput dl1
  33. done
  34. SUB_DOM=$hostcaptura
  35. limite=$limitecaptura
  36. [[ ${limite} -gt "500" ]] && limite="500"
  37. #CRIA LOG
  38. log="./loog" && touch $log
  39. #INICIA PRIMEIRA BUSCA
  40. _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}')
  41. for _DOMS in `echo $_DOM`; do
  42. [[ $(echo ${DNS[@]}|grep ${_DOMS}) = "" ]] && DNS+=(${_DOMS})
  43. done
  44. #INICIA THREADS
  45. i=0
  46. while true; do
  47. DOMAIN=$(echo "${DNS[$i]}")
  48. [[ $DOMAIN = "" ]] && break
  49. if [[ $(echo -e "${PESQ[@]}"|grep "$DOMAIN") = "" ]]; then
  50. subdom "$DOMAIN"
  51. 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"
  52. PESQ+=($DOMAIN)
  53. fi
  54. [[ "$(echo ${#DNS[@]})" -gt "$limite" ]] && break
  55. i=$(($i+1))
  56. sleep 1s
  57. done
  58. rm $log
  59. echo -e "\n\033[1;32mScan Finalizado!, Iniciando Coleta de IPs"
  60. [[ -e $HOME/subresult ]] && rm $HOME/subresult
  61. [[ ! -e $HOME/subresult ]] && touch $HOME/subresult
  62. [[ -e $HOME/result_tmp ]] && rm $HOME/result_tmp
  63. [[ ! -e $HOME/result_tmp ]] && touch $HOME/result_tmp
  64. for result in $(echo "${DNS[@]}"); do
  65. (
  66. rand="$RANDOM"
  67. dns[rand]="$result"
  68. scan[rand]=$(echo ${result}|cut -d'/' -f1)
  69. 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
  70. echo " DNS: ${dns[rand]} -> IP: ${IP[rand]}" >> $HOME/subresult
  71. echo -e "\033[1;31mDNS: \033[1;36m${dns[rand]} \033[1;31m--> \033[1;31mIP: \033[1;33m${IP[rand]}" >> $HOME/result_tmp
  72. unset IP
  73. ) &
  74. done
  75. while true; do
  76. [[ $(pidof nslookup|wc -w) -lt "1" ]] && break
  77. done
  78. RSLT=$(($(cat $HOME/subresult|wc -l)/4)) && echo -e "\n\033[1;32m$RSLT Hosts Capturados\n \033[0m"
  79. if [ $RSLT = 0 ];then
  80. return 0
  81. fi
  82. echo -ne " \033[1;33mDeseja Imprimir os Resultados? \033[1;37m[S/N]: "; read yn
  83. [[ $yn = @(s|S|y|Y) ]] && {
  84. tput cuu1 && tput dl1
  85. cat $HOME/result_tmp|grep -v =
  86. [[ -e $HOME/result_tmp ]] && rm -rf $HOME/result_tmp
  87. echo -e "\033[0m"
  88. echo -e "\033[1;32mLog Gerado no Arquivo \033[1;33m$HOME/subresult"
  89. echo -e "\033[0m"
  90. return 0
  91. }
  92. tput cuu1 && tput dl1
  93. return 0
  94. }
  95. scan_funtion