vDNS

Publicado por Percio Andrade Castelo Branco (última atualização em 12/06/2017)

[ Hits: 6.740 ]

Homepage: null

Download vdns

Download 1431748206.vdns (versão 2)

Download 1495570501.vdns (versão 3)




Olá pessoal, o vDNS é um script que consiste em auxiliar na verificação de DNS, ele consegue capturar de forma rápida e precisa valores como MX/TXT/A/NS entre outros e comparar se estão corretos diretamente do servidor de hospedagem e dos rootservers de domínios, entre outras opções.

Atenção: Script ainda não finalizado, no entanto suas funções estão funcionando corretamente.

Utilização do script:

vdns [-a] [-n] [-d] [-w] [-p] [-m] [-r] [-f] [-k] [-s] [-b] [-i] [domain] | [ -u update ] | [ -h --help ]

Opções:

-a : Consulta completa de DNS
-n : Retorna somente os servidores NS
-d : Retorna somente os servidores NSR
-w : Retorna somente o valor do WWW
-p : Retorna o teste de ping ao WWW
-m : Retorna somente o MX
-r : Retorna somente o reverso
-f : Retorna somente o SPF
-k : Retorna somente o DKIM
-b : Retorna somente a situação de registro do domínio na registro.br
-i : Retorna somente a situação de registro do domínio na nic.com
-u : Verifica se existe alguma atualização.
-s : Salva a consulta em um arquivo de texto.
-h : Exibe as opções disponíveis.

Exemplos:

$ vdns -a domain.com
$ vdns -k domain.com
$ vdns -s domain.com

  



Versões atualizadas deste script

Versão 2 - Enviado por Percio Andrade Castelo Branco em 16/05/2015

Changelog: - Adicionada busca para domínios .es.
- Diversas correções efetuadas.
- Melhorias no layout.
- Busca de registros Office.
- Adição de verificação de bloqueios na registro.br.

Download 1431748206.vdns


Versão 3 - Enviado por Percio Andrade Castelo Branco em 23/05/2017

Changelog: 1.5 -
* - Change query in registro.br due to client removal 'isavail'
* - Fixed domain check .es
* - Fixed domain verify input (.com/.br etc)
* - Added check if packages perl-libwww and perl-IO-Sockets is installed #Thanks for Alessandro Maia for report
* - Added update url check for vDNS ( now is working :D )
* - Added registro.br variable for url consult $REG_BR_WHOIS
* - Change of query of the domain situation in the registro.br due to the removal of the protocol 'isavailble'
* - Changes in help layout function
* - Added propagation function check for domain
* - Added option show in bind format
* - Added option fast consult in Google Servers
* - And a lot of bugs corrected

Download 1495570501.vdns


Esconder código-fonte

#!/bin/bash
##################################################################
# Author  : Percio Andrade
# Email   : percio.andrade@hotmail.com.br
# Info    : Shell script to consult dns and register from domain
# Version : 1.3 ( beta )
##################################################################

# If you find any bug please, make contact.

## INITIAL CONFIG
VERSION="1.3"
DATE=`date`
DOMAIN=$2

## DOCUMENTATION
RFC2181="http://tools.ietf.org/html/rfc2181"
vDNS="https://raw.github.com/percioandrade/vdns/master/vdns"

## INDICATORS
BAR="-- DOMAIN -------------- TTL --------- TYPE ---------- VALUE ------"
MXBAR="-- DOMAIN -------------- TTL --------- TYPE --- PTY --- VALUE ------"

## BASHCSS
pret='\E[0;30m'   # Black
verm='\E[0;31m'   # Red
verd='\E[0;32m'   # Green
amar='\E[0;33m'   # Yellow
azul='\E[0;34m'   # Blue
mage='\E[0;35m'   # Magenta
cian='\E[0;36m'   # Ciano
bran='\E[0;37m'   # White
rese=$(tput sgr0) # No color.
OK="${verd}[OK]${rese}";
ATT="${amar}[!]${rese}";
FAIL="${verm}[!]${rese}";

## HELP INFO
function SHOW_HELP(){
  echo "
  usage: vdns [-a] [-n] [-d] [-w] [-p] [-m] [-r] [-f] [-k] [-s] [-b] [-i] [domain] | [ -u update ] | [ -h --help ]

  Options:

        -a    |   --all         : Full DNS lookup
        -n    |   --ns          : Only return servers NS
        -d    |   --dns         : Only return servers NSR
        -w    |   --www         : Only return WWW
        -p    |   --ping        : Only return ping check on WWW
        -m    |   --mx          : Only return MX
        -r    |   --reverse     : Only return reverse
        -f    |   --spf         : Only return SPF
        -k    |   --dkim        : Only return DKIM
        -b    |   --br          : Consult domain on registro.br
        -i    |   --int         : Consults domain o nic.com
        -u    |   --update      : Verify if exist update
        -s    |   --save        : Save Query on txt file
        -h    |   --help        : Shows available functions
  eg:

  vdns -a domain.com
  vdns -k domain.com
  vdns -s domain.com
       "
  exit
}

## CHECK DEPENDECIES -
if [ ! -f '/usr/bin/dig' ];then
echo -e "
  ${FAIL} - The application ${amar}dig${rese} is not installed on your computer, please install in order to run this script:

  - RedHat: yum install dig
  - Debian: apt-get install dig
  - Arch: pacman -S dnsutils
        "
 exit

  elif [ ! -f '/usr/bin/curl' ];then

echo -e "
  ${FAIL} - The application ${amar}curl${rese} is not not installed on your computer, please install in order to run this script:

  - RedHat: yum install curl
  - Debian: apt-get install curl
  - Arch: pacman -S curl
        "
 exit
fi

## CHECK VERSION
function SHOW_VERSION(){
vCURL=$(curl -s ${vDNS} | grep -m1 "VERSION=" | cut -d '"' -f2)
 if [ "$3" != "${vCURL}" ];then
    echo -e "\n${ATT} - Is there a new update for vdns. Version ${verm}$vCURL${rese}, please update on ${vDNS} \n"
  else
    echo -e "\n${OK} - Your vdns version is up to date ${verd}$VERSION${rese}\n"
 fi
}

## ARGUMENT CHECK
if [ -z "$1" ];then
  echo "No arguments parsed, use -h for help information."
   exit
 elif [ "$1" = "-u" ];then
     SHOW_VERSION
   exit
 elif [ "$1" = "-h" ];then
     SHOW_HELP
   exit
 elif [ "$1" = "-" ];then
   echo "Incorrect argument, please use -h for hel information."
   exit
fi

## DOMAIN CHECK
if [ -z "$2" ];then
    echo "Please inform a domain, use -h for help information."
  exit
fi

## INIT QUERIES

echo -ne '\nPlease Wait...\n'

echo -e "
###########################################
- DNS info for: ${DOMAIN}
###########################################
"

function WHOIS_REGISTRO_BR(){
CURLWHOISBR=$(curl -s https://registro.br/cgi-bin/whois/?qr=${DOMAIN}|grep -o 'negada')
  if [ "$CURLWHOISBR" = "negada" ];then
   echo "http://www.webproxy.net/view?q=https://registro.br/cgi-bin/whois/?qr=${DOMAIN}"
  else
   echo "https://registro.br/cgi-bin/whois/?qr=${DOMAIN}"
 fi
}

function REGISTRO_BR(){
# rSEARCH=$(curl -H "charset=iso-8859-1" -s --data "qr=${DOMAIN}&botao=PESQUISAR" https://registro.br/cgi-bin/avail/|egrep -o 'disponível|já|início|similar|inválido'); # OLD 1.0

rSEARCH=$(curl -s https://registro.br/cgi-bin/avail/?qr=${DOMAIN}|egrep -o "disponível|já|início|similar|inválida");
if [ "${rSEARCH}" = "já" ];then

rBR=$(echo -e "\n${OK} - ${DOMAIN} was registered on registro.br. [ Whois: `WHOIS_REGISTRO_BR` ].\n")

elif [ "${rSEARCH}" = "disponível" ];then
  echo -e "\n${ATT} - ${DOMAIN} avaible for registration on registro.br.\n"
exit

elif [ "${rSEARCH}" = "início" ];then
  echo -e "\n${ATT} - ${DOMAIN} is waiting for liberation on registro.br.\n"
exit

elif [ "${rSEARCH}" = "similar" ];then
  echo -e "\n${ATT} - ${DOMAIN} is already registered under similar syntax.\n"
exit

elif [ "${rSEARCH}" = "negada" ];then
  echo -e "\n${FAIL} - Your IP was blocked on registro.br, cannot retrieve whois information. You can browser manualy in `WHOIS_REGISTRO_BR` .\n"

elif [ "${rSEARCH}" = "inválida" ];then
   echo -e "\n${FAIL} - This domain ${DOMAIN} is invalid.\n"
exit

else
  echo -e "\n${FAIL} - Cannot retrieve whois information. You can browser manualy in `WHOIS_REGISTRO_BR` .\n"
 exit
fi
}

function INTERNATION_DOMAIN(){
rINTER=$(curl -s http://nic.com/whois?domain=${DOMAIN}|grep -o "is not in the whois database")
 if [ "${rINTER}" == "is not in the whois database" ]; then
    echo -e "\n${ATT} - ${DOMAIN} not registered, exiting.\n"; exit;
  else
    rINT=$(echo -e "\n${OK} - ${DOMAIN} registered. [ Whois: http://www.whois.com/whois/$DOMAIN ]")
 fi
}


## TDL CHECK

cDOMAIN=$(echo ${DOMAIN} | grep . | cut -d. -f1)
if [ "${DOMAIN}" = "${cDOMAIN}.com.br" ];then
        REGISTRO_BR
elif [ "${DOMAIN}" = "${cDOMAIN}.es" ]; then
        echo "Spanish Domain doens't have Whois database."
else
        INTERNATION_DOMAIN
fi

echo -ne '\nRNS -   ####                (10%)\r'

## GET ROOT SERVER
ROOTS=$(dig DS +additional $DOMAIN | grep SOA | awk '{print $5}' | sort -dbf)

## GET FIST NAMESERVER
SRV=$(dig CNAME +noadditional +noquestion +nocomments +nocmd +nostats +norec $DOMAIN. @$ROOTS | grep -m1 NS | awk '{print $5}' | sort -dbf)

## GET IP FROM ROOTSERVER
IPNS=$(dig A +noquestion +nocomments +nocmd +nostats +norec $DOMAIN. @$ROOTS | sort -dbf | grep A | awk '{print $5}')

echo -ne 'NSR -   #######               (20%)\r'

## CHECK ROOTSERVER
NAMESERVER=$(dig CNAME +noadditional +noquestion +nocomments +nocmd +nostats +norec $DOMAIN. @$ROOTS | grep -v SOA | sort -dbf)

echo -ne 'DNS -   ##########            (30%)\r'

## GET IP FROM WEBHOST
IPDNS=$(dig NS +noquestion +nocomments +nocmd +nostats +norec $DOMAIN. @$SRV | sort -dbf | grep A | awk '{print $5}')

## CHECK DNS
NS=$(dig NS +noadditional +noquestion +nocomments +nocmd +nostats +norec $DOMAIN @$SRV | sort -dbf)

## If NS fail from query "NS" we get directly from domain
FAILNS=$(dig NS +nostats +nocmd +nocomments +noquestion $DOMAIN | grep NS)

echo -ne 'WWW -   ############          (40%)\r'

## CHECK WWW FROM DOMAIN
A=$(dig WWW +short $DOMAIN @$SRV | sort -dbf)

echo -ne 'MX -    ###############       (50%)\r'

## CHECK MX
MX=$(dig -t MX +noall +answer $DOMAIN @$SRV | sort -dbf)

echo -ne 'RVS -   #################     (60%)\r'

## CHECK REVERSE
REVERSE=$(dig -x $A +additional +short +norec)

echo -ne 'SPF -   ###################   (70%)\r'

## CHECK SPF
SPF=$(dig TXT +short $DOMAIN @$SRV | sort -dbf)

echo -ne 'DKIM -  ####################  (80%)\r'

## CHECK DKIM DEFAULT
DKIM=$(dig -ttxt default._domainkey.$DOMAIN @$SRV +short | grep -v spf1)

echo -ne 'PING -  ######################(90%)\r'

## CHECK PING
vPING=$(ping -q -c 1 $DOMAIN >/dev/null)

echo -ne "${OK} - ######################(100%)\n"



        ###########################
        ### DO NOT MODIFY BELOW ###
        ###########################



## NS QUERY
function SHOW_NS(){
echo "
-------------------------------------------|
                              --=== NS ===--
-------------------------------------------|
"
 if [ "${NAMESERVER}" = "no" ]; then # nic.br
    echo -e "${ATT} - Your IP has been blocked on registro.br, please try query  again within 15 minutes.\n"
  elif [ "${NAMESERVER}" = "${ROOTS}" ] || [ -z "${NAMESERVER}" ]; then
    echo -e "${FAIL} - Unable to obtain DNS servers of your domain. Verify that the domain exists and/or is configured correctly.\n"
  else
    echo -e "${OK} - NS received from your nameservers listed as parents servers on root server ${verd}${ROOTS}${rese} are:\n\n$BAR\n\n";
      paste  <(echo "$NAMESERVER") <(echo "$IPNS");
    echo -e "\n\n${OK}: The parent server ${verd}${ROOTS}${rese} has your nameservers listed. This is a must if you want to be found as anyone that does not know your DNS servers will first ask the parent nameservers."
 fi
}

## NSR QUERY
function SHOW_DNS(){
echo "
-------------------------------------------|
                             --=== NSR ===--
-------------------------------------------|
"
 if [ -z "${NS}" ] || [ -z "${FAILNS}" ];then
    echo -e "${FAIL} - Unable to get the nameservers directly from the server hosting.\n\n"
  elif [ "${NS}" = "${NAMESERVER}" ] || [ ! "${FAILNS}" ]; then
    echo -e "${OK} - NS records got from your nameservers listed at the parent NS are:\n\n$BAR\n\n"
      paste <(echo "$NS") <(echo "$IPDNS");
  else
    echo -e "${ATT} - Unable to get the nameservers directly from the hosting server, the following query is for NS directly on domain:\n\n$BAR\n\n"
      paste <(echo "$FAILNS") <(echo "$FAILIP");
    echo -e "${FAIL} The following nameservers are listed at your nameservers as nameservers for your domain ${DOMAIN}, but are not listed at the parent nameservers at ${ROOTS} (see $RFC2181 ). You need to make sure that these nameservers are working. If they are not working ok, you may have problems!"
 fi
}

## WWW QUERY
function SHOW_WWW(){
echo "
-------------------------------------------|
                             --=== WWW ===--
-------------------------------------------|
"
 if [ -z "${A}" ];then
    echo -e "${FAIL} - WWW value from does not seem to point to an IP.\n"
  else
    echo -e "${OK} - Domain points the value WWW for:\n\n${A}\n"
 fi
}

## PING QUERY
function SHOW_PING(){
 if ! ${vPING};then
    echo -e "${FAIL} - Domain did not answer to ping.\n"
  elif [ "${vPING}" = "${A}" ]; then
    echo -e "${OK} - Domain is getting a return ping which answers to the same DNS server.\n"
  else
   echo -e "${OK} - Domain had response from ping to the IP:\n\n${A}"
 fi
}

## MX QUERY
function SHOW_MX(){
echo "
-------------------------------------------|
                              --=== MX ===--
-------------------------------------------|
"
 if [ -z "${MX}" ];then
    echo -e "${ATT} - Domain has no MX entry registered.\n"
  else
    echo -e "${OK} - Domain points the MX to:\n\n$MXBAR\n\n${MX}\n"
 fi
}

## REVERSE QUERY
function SHOW_REVERSE(){
 if [ -z "${REVERSE}" ];then
    echo -e "${ATT} - No reverse DNS (PTR) entries for ${A}. You should contact your ISP and ask him to add a PTR record for your ips.\n"
  else
    echo -e "${OK} - Reverse DNS (PTR) found for: \n\n${A} -> ${REVERSE}\n"
 fi
}

## SPF QUERY
function SHOW_SPF(){
 if [ -z "${SPF}" ] || [ "${SPF}" = "'TXT'" ]; then
    echo -e "${FAIL} - There are no registered SPF values.\n"
  else
    echo -e "${OK} - The SPF registered is:\n\n${SPF}"
 fi
}

## DKIM QUERY
function SHOW_DKIM()
{
echo "
-------------------------------------------|
                            --=== DKIM ===--
-------------------------------------------|
"
 if [ -z "${DKIM}" ];then
    echo -e "${ATT} - Default DKIM is not registered.\n"
  else
    echo -e "${OK} - Default DKIM registered for domain is:\n\n${DKIM}\n\m"
 fi
}

while getopts "handwpmrkfsbi" opt; do
  case ${opt} in
    h)
      SHOW_HELP
      ;;
     a)
      echo $rBR
      echo $rINT
      SHOW_NS
      SHOW_DNS
      SHOW_WWW
      SHOW_PING
      SHOW_MX
      SHOW_REVERSE
      SHOW_SPF
      SHOW_DKIM
      ;;
    n) SHOW_NS
      ;;
    d) SHOW_DNS
      ;;
    w) SHOW_WWW
      ;;
    p) SHOW_PING
      ;;
    m) SHOW_MX
      ;;
    r) SHOW_REVERSE
      ;;
    f) SHOW_SPF
      ;;
    k) SHOW_DKIM
      ;;
    b) echo $rBR
     ;;
    i) echo $rINT
     ;;
    h) SHOW_HELP
     ;;
     s) echo "Query on $DATE for $DOMAIN" >> $DOMAIN.txt && for SAVE in SHOW_NS SHOW_DNS SHOW_WWW SHOW_PING SHOW_MX SHOW_REVERSE SHOW_SPF SHOW_DKIM; do ${SAVE} >> ${DOMAIN}.txt;done ; echo -e "Your file was saved on `pwd`/$DOMAIN.txt\n";
     ;;
        \? ) echo "Invalid option: - $opt" >&2 ;;
        :  ) echo "Missing argument - $opt" >&2; exit 1;;
        *  ) echo "Option not implemented: - $opt" >&2; exit 1;;
  esac
done

shift $(($OPTIND - 1))

exit

Scripts recomendados

DownloadVideo

Script para configuracao rapida da eth0

Backup da base de dados PostgreSQL

Pendetect

tagman - Editor de tags


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts