Pequeno gerador de relatório da rede (CSV)
Publicado por Dix (última atualização em 28/11/2016)
[ Hits: 9.466 ]
Download 1477147864.Relatorio_Rede.sh (versão 2)
Estava precisando de um script para gerar uma tabela de IPs e MAC de todos os dispositivos da minha rede para aplicar no DHCP e na tabela ARP estática do firewall, mas não tive a paciência (saco) de verificar um a um, então, criei esse script, liguei tudo na rede e executei ele... PRONTO!
Aí, acrescentei o scan de portas (SYN) do Nmap também, apenas para verificar quais portas estavam abertas...
Tabela criada!!! (IP;MAC;FABRICANTE;HOSTNAME;PORTAS)
Dá para adaptar de acordo com o scan que deseja fazer. Ou retirar o scan e deixar apenas a descoberta de hosts ativos.
Montei muito rápido e ficou meio bagunçado, mas funciona...
Depois vou organizar melhor!
Versão 2 - Enviado por Dix em 22/10/2016
Changelog: Funções atualizadas e organizadas.
Linhas desnecessárias eliminadas.
Função para encontrar uma saída para a rede mundial com arping inserida.
Download 1477147864.Relatorio_Rede.sh
#!/bin/bash
#
# Pequeno Gerador de Relatório da Rede (CSV)
#
# by huddioli
# 2014-08-03
#
# testado com nmap 6.46 (Linux Debian 7)
#
# Estava precisando de um script para gerar uma tabela de IPs e MAC de todos os dispositivos da minha rede para aplicar no DHCP e na tabela ARP estática do Firewall
# Não tive a paciencia(saco) de verificar um a um, entao, criei esse Script, liguei tudo na rede e executei o script... PRONTO!
# Aí, acrescentei o Scan de portas(SYN) do Nmap também apenas para verificar quais portas estavam abertas...
#
# Tabela Criada!!! (IP;MAC;FABRICANTE;HOSTNAME;PORTAS)
#
# Da para adaptar de acordo com o Scan que deseja fazer
# Ou retirar o scan e deixar apenas a descoberta de Hosts ativos
#
# Montei muito rápido e ficou meio baguncado, mas funciona...
# Depois vou organizar melhor!
#
#
REDE="11.0.0.0/21"
NOME_BASE="rede_AP"
IFACES="$NOME_BASE""_Interfaces_ativas.txt"
MEUS_IPS="$NOME_BASE""_Meus_IPs.txt"
function EncontrarPlacas(){
ifconfig | grep eth | cut -d" " -f1 > $IFACES
ifconfig | grep wlan | cut -d" " -f1 >> $IFACES
}
function EncontrarIPs(){
if [ -e $MEUS_IPS ];
then
rm $MEUS_IPS
fi
cat $IFACES | while read PLACA;
do
ifconfig $PLACA | grep "inet addr" | cut -c 21- | cut -d" " -f1 >> $MEUS_IPS
done
}
function ScanearRede(){
echo "Scaneando os Hosts ativos da rede "$REDE
echo "Identificando Hosts ativos na Rede..."
nmap -sP "$REDE" > "$NOME_BASE"_PING.txt
}
function FiltrarDados(){
#Monta o cabeçalho do Relatorio CSV
echo "IP;MAC;FABRICANTE;HOSTNAME;PORTAS" > "$NOME_BASE"_COMPILADO.csv
echo "Coletando e filtrando informações dos Hosts..."
#Elimina os IP das placas de rede do Computador do Scan para economizar tempo devido às regras do firewall
cat $MEUS_IPS | while read linha
do
cat "$NOME_BASE"_PING.txt | grep report | cut -d" " -f5 | grep -v $linha >> "$NOME_BASE"_IP2.txt
done
#Ordena em ordem numérica crescente e elimina as entradas duplicadas
sort -n "$NOME_BASE"_IP2.txt | uniq > "$NOME_BASE"_IP.txt
#Cria a base de MACs e de FABRICANTES
cat "$NOME_BASE"_PING.txt | grep MAC | cut -d" " -f3 > "$NOME_BASE"_MAC.txt
cat "$NOME_BASE"_PING.txt | grep MAC | tr ")" "(" | cut -d"(" -f2 > "$NOME_BASE"_FABRICANTE.txt
#Gera o contador para servir de referencia para juntar as informações que estão divididas nos arquivos
NUM=`wc -l "$NOME_BASE"_IP.txt | cut -d" " -f1`
#Inicia o Loop para Realizar os Scans e montar o Relatorio
for (( x=1; x<=$NUM; x++ ))
do
if [ -e "$NOME_BASE"_PORT.txt ];
then
rm "$NOME_BASE"_PORT.txt
fi
if [ -e "$NOME_BASE"_PORTS.txt ];
then
rm "$NOME_BASE"_PORTS.txt
fi
#Montando as Variaveis do Relatorio CSV
IP=`cat "$NOME_BASE"_IP.txt | sed -n "$x p"`
MAC=`cat "$NOME_BASE"_MAC.txt | sed -n "$x p"`
FABRICANTE=`cat "$NOME_BASE"_FABRICANTE.txt | sed -n "$x p"`
NOMEDOHOST=`nmblookup -A $IP | grep 00 | sed -n "1p" | sed "{ s/\t//g; s/\ //g }" | cut -d"<" -f1` > "$NOME_BASE"_HOSTNAME.txt
#Scan de portas de cada IP
echo "Scan de portas no IP: "$IP
nmap -sS $IP | grep open | cut -d" " -f1 > "$NOME_BASE"_PORTS.txt
#Separa as portas do resultado do Scan e os coloca na mesma linha separadas por vírgula
cat "$NOME_BASE"_PORTS.txt | while read LINHA;
do
PORTA=`echo $LINHA | grep tcp | cut -d"/" -f1`
echo -n "$PORTA""," >> "$NOME_BASE"_PORT.txt
done
#O Sed elimina a última vírgula da string de portas gerada e o restante da string tratada é redirecionada para a variável PORTAS
PORTAS=`cat "$NOME_BASE"_PORT.txt 2> /dev/null | sed "{ s/,*$// }"`
echo "$IP"";""$MAC"";""$FABRICANTE"";""$NOMEDOHOST"";""$PORTAS" >> "$NOME_BASE"_COMPILADO.csv
echo "Relatorio sobre Host "$IP" adicionado a base de dados!"
done
mv "$NOME_BASE"_COMPILADO.csv Relatorio_"$NOME_BASE".csv
}
function LimparCache(){
# Essa linha evita que a funcao de erro sem comando nenhum
echo "" /dev/null
# Caso queira apagar os arquivos temporario descomente a proxima linha e a linha "#LimparCache" da function Main()
#rm "$NOME_BASE"*
}
function Main(){
echo "String base:" $NOME_BASE
EncontrarPlacas
EncontrarIPs
ScanearRede
FiltrarDados
#LimparCache
}
Main
Baixar números das várias loterias nacionais
Instalar Unreal Tourment no Linux
Compactação do relatório do Squid/Sarg
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
ERRO: LAZARUS 4.2 64 no Linux MINT não entra mais apos ajustar desktop... (0)
Pergunta: Meu teclado não está respondendo direito como e consertar? (2)
Secure boot, artigo interessante, nada técnico. (6)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (0)









