Visual para tcpdump com dialog

Publicado por Jonatam Ribeiro dos Santos (última atualização em 30/07/2012)

[ Hits: 5.204 ]

Download scaner.sh




Salve salve galera, bom vou estar postando o script ae para vocês que fiz para quem esta começando com GNU/Linux e mexendo com shell script, fiz um visualzinho para usar o tcpdump para captura e analise de dados, o script esta em dialog para poder ser executado também em servidores com conexão ssh que não possuem o X em breve posto ele na versão kdialog, bom abaixo segue o script.

  



Esconder código-fonte

# !/bin/bash
# by Jonatan / Baguio Loko
# jonatam.ribeiro@hotmail.com
# http://www.homedesenvolvimento.com
# visual para tcpdump
# V 1.0


# função ver as interfaces
ver()
{
hosts=$(tcpdump -D)

# JOGA AS INTERFACES UMA ABAIXO DA OUTRA E EXIBE NA TELA
echo $hosts | while read LINHA; do
set - $LINHA

dialog --title 'INTERFACES' --msgbox "INTERFACES ENCONTRADOS\n\n${1}\n${2}\n${3}${4} ${5} ${6} ${7}\n${8}${9}${10}${11}${12}\n${13}${14} ${15} ${16} ${17} ${18} ${19}\n${20}" 0 0
done
   
   }
   
   
## função de snifar a rede   
snifar()
{
   #FUNCÃO SNIFAR REDE ETH0
   snifar_eth0()
   {      
      
         pact=$( dialog --stdout --inputbox 'Digite a quantidade de pacotes a ser filtrada:' 0 0 "50000")
         string="tcpdump -i eth0"
         t1=-n
         t2=-nn
         t3=host
         t4=src
         t5=dst
         t6="and port"
         t7=not
         t8=-p
         pacotes="-c$pact"



      while : ; do

      respostaeth0=$(
      dialog --stdout               \
             --title 'Menu'  \
             --menu 'Escolha:' \
            0 0 0                   \
            1 'filtrar apenas por determinado host' \
            2 'Mais Opções' )

      [ $? -ne 0 ] && break 
      break


      #Inicia a estrutura de condição case
      case "$respostaeth0" in
 
 
      #FUNÇÕES
      1)   host=$( dialog --stdout --inputbox 'Digite o HOST:' 0 0 )   
         nome1=$( dialog --stdout --inputbox 'Digite o nome do arquivo a ser salvo:' 0 0 "nome.pcap")
         string="$string $pacotes $t3 $host -w $nome1"
         dialog --title 'INTERFACES' --msgbox "$string" 0 0
   
      $string
      ;;
      2) string="$string $pacotes"
      dialog --yesno 'Não exibir o nome da porta mas sim o numero' 0 0
      if [ $? = 0 ]; then
         string="$string $t2"
         dialog --title 'INTERFACES' --msgbox "$string" 0 0
      else
         echo 'ok'
      fi
      
      dialog --yesno 'Não colocar a placa em promiscue mode' 0 0
      if [ $? = 0 ]; then
         string="$string $t8"
         dialog --title 'INTERFACES' --msgbox "$string" 0 0
      else
         echo 'ok'
      fi
      
      dialog --yesno 'Não resolver nome DNS e mostrar apenas o IP' 0 0
      if [ $? = 0 ]; then
         string="$string $t1"
         dialog --title 'INTERFACES' --msgbox "$string" 0 0
      else
         echo 'ok'
      fi

      dialog --yesno 'Deseja filtra por pacotes recebidos pelo host' 0 0
      if [ $? = 0 ]; then
         hostr=$( dialog --stdout --inputbox 'Digite o HOST:' 0 0 )
         string="$string $t5 $t3 $hostr"
         dialog --title 'INTERFACES' --msgbox "$string" 0 0
      else
         echo 'ok'
      fi

      dialog --yesno 'Deseja filtra por pacotes enviados pelo host' 0 0
      if [ $? = 0 ]; then
         hoste=$( dialog --stdout --inputbox 'Digite o HOST:' 0 0 )
         string="$string and $t4 $t3 $hoste"
         dialog --title 'INTERFACES' --msgbox "$string" 0 0
      else
         echo 'ok'
      fi
   


      dialog --yesno 'não filtra nada relacionado ao host' 0 0
      if [ $? = 0 ]; then
         hostn=$( dialog --stdout --inputbox 'Digite o HOST:' 0 0 )
         string="$string and $t7 $t3 $hostn"
         dialog --title 'INTERFACES' --msgbox "$string" 0 0
      else
         echo 'ok'
      fi

      dialog --yesno 'Deseja filtra por determinada porta' 0 0
      if [ $? = 0 ]; then
         porta1=$( dialog --stdout --inputbox 'Digite a Porta:' 0 0 )
         string="$string $t6 $porta1"
         dialog --title 'INTERFACES' --msgbox "$string" 0 0
      else
         echo 'ok'
      fi
         nome1=$( dialog --stdout --inputbox 'Digite o nome do arquivo a ser salvo:' 0 0 "nome.pcap")
         string="$string -w $nome1"
      $string
      ;;
      esac
      done
      }
   
   
   
   
   
# INICIO DO MENU DE REDES  
while : ; do
 
    # Mostra o menu na tela, com as ações disponíveis
    resposta2=$(
      dialog --stdout               \
             --title 'Menu'  \
             --menu 'Escolha:' \
            0 0 0                   \
            1 'eth0' \
            0 'Voltar')
           
# Ela apertou CANCELAR ou ESC, então vamos sair e limpar a Tela
[ $? -ne 0 ] && break


#Inicia a estrutura de condição case
case "$resposta2" in
 
 
#FUNÇÕES DE REDES
 1)snifar_eth0
 ;;
 0)break
 clear
 ;;
esac
done


}

ajuda()
{
   dialog --title "================================= Desenvovlvedor =================================" \
        --msgbox "\n http://www.homedesenvolvimento.com\n jonatam[dot]ribeiro[at]hotmail[dot]com\n 2012" 0 0
   }
   
   
analize()
{
   #pega o nome do arquivo a ser analizado
   nome1=$( dialog --stdout --inputbox 'Digite o nome do arquivo a ser analizado:' 0 0 "nome.pcap")
   #verifica se o usuario deseja ver o cabeçalho e conteudo do pacote
   dialog --yesno 'deseja ver o cabeçalho e conteudo do pacote' 0 0
      if [ $? = 0 ]; then
         tcpdump -r $nome1 -xx >>log.txt
      else
         tcpdump -r $nome1 >>log.txt
      fi
# mostra o conteudo do arquivo log.txt
dialog                                         \
   --title 'Monitorando Mensagens do Sistema'  \
   --textbox log.txt                               \
   0 0
   rm log.txt # remove o arquivo log.txt
}
   
   
################################################################################################ 
# INICIO DO MENU PRINCIPAL 
while : ; do
 
    # Mostra o menu na tela, com as ações disponíveis
    resposta=$(
      dialog --stdout               \
             --title 'Menu'  \
             --menu 'Escolha:' \
            0 0 0                   \
            1 'Ver Interfaces' \
            2 'Snifar'  \
            3 'Ajuda'   \
            4 'Analizar dados'   \
            0 'sair')
           
# Ela apertou CANCELAR ou ESC, então vamos sair e limpar a Tela
[ $? -ne 0 ] && break
clear
 
#Inicia a estrutura de condição case
case "$resposta" in
 
 
#FUNÇÕES DO MENU PRINCIPAL
 1)ver
 
 ;;
 2) snifar
 ;;
 
 3) ajuda
 ;;
 
 4) analize
 ;;
 
 0)break
 clear
 ;;
esac
done

Scripts recomendados

Correção do arquivo status

Script Para desligar o Debian

Firewall simples, com opções de redirecionamento

Testa se há conexão com a internet (Funciona)

rc.firewall


  

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