bash program shows no data output

Asked

Viewed 75 times

1

Good afternoon,

I program in C and it’s the first time I’m programming in Bash (shell-script).

I did some functions in bash, learned to call and created an interactive menu with the user, my program does "basically" reading a Wordlist and search files/folders within a certain location.

What happens "or better it doesn’t happen" is, there is no error message from the program, and it does not execute the identification code

The menu opens, runs, however when selecting the options it simply returns the menu. The program is very simple. Could someone point out the possible problems? PS: Taking out the entire interactive menu, taking out the functions and letting only what is inside the function the program runs.

many thanks to those who can help me, att.

    #!/bin/bash

    banner(){
    clear
    echo "------------------------------------------" 
    echo "|     RECON DE DIRETORIOS E ARQUIVOS     |"
    echo "------------------------------------------"
    echo "|  Uso: $0 <local>     |"
    echo "------------------------------------------"
    }

    menu(){
    clear
    echo ""
    echo "------------------------------------------"
    echo "|     RECON DE DIRETORIOS E ARQUIVOS     |"
    echo "------------------------------------------"
    echo "|  [1] - Consultar Diretorios            |"
    echo "|  [2] - Consultar Arquivos              |"
    echo "|  [3] - Consultar Arquivos/Diretorios   |"
    echo "|  [4] - Sair                            |"
    echo "------------------------------------------"
    echo -n "| Escolha uma opcao: "
    read OPT

    case $OPT in
    1) buscadir ;;
    2) buscaarq ;;
    3) buscadir;buscaarq ;;
    4) exit ;;
    *) echo "Opcao Invalida" ; echo ; menu ;
    esac
    }

    buscadir(){
    for palavra in $(cat lista2.txt)
    do
    resp=$(curl -s -o /dev/null -w "%{http_code}" $1/$palavra/)
    if [ $resp == "200" ]
    then
    echo "Diretorio encontrado --> $palavra"
    fi
    done
    }

    buscaarq(){
    for palavra in $(cat lista2.txt)
    do
    resp=$(curl -s -o /dev/null -w "%{http_code}" $1/$palavra)
    if [ $resp == "200" ]
    then
    echo "Arquivo encontrado --> $palavra"
    fi
    done
    }

    if [ "$1" == "" ]
    then
    banner
    else
    menu
    fi

1 answer

1

This is Mhenrique12, all right?

I tested it in a way that worked here, but I was left with some doubts...

Question 01: How would the contents of the file Lista2.txt ?

Question 02: Could you explain that Curl line, I don’t know much ;-p

Changes I made to work using the directory as a base /etc.

OBS: The Lista2.txt file had the following content:

cat lista2.txt 
vim 
passwd
ssh
profile

Whereas vim and ssh are directories and passwd and shadow files

Example 01:

MHenrique12_recon.sh /etc

------------------------------------------
|     RECON DE DIRETORIOS E ARQUIVOS     |
------------------------------------------
|  [1] - Consultar Diretorios            |
|  [2] - Consultar Arquivos              |
|  [3] - Consultar Arquivos/Diretorios   |
|  [4] - Sair                            |
------------------------------------------
| Escolha uma opcao: 1

Diretorio encontrado --> vim
Diretorio encontrado --> ssh

Example 02:

MHenrique12_recon.sh /etc
------------------------------------------
|     RECON DE DIRETORIOS E ARQUIVOS     |
------------------------------------------
|  [1] - Consultar Diretorios            |
|  [2] - Consultar Arquivos              |
|  [3] - Consultar Arquivos/Diretorios   |
|  [4] - Sair                            |
------------------------------------------
| Escolha uma opcao: 2

Arquivo encontrado --> passwd
Arquivo encontrado --> shadow

The changes made were the following:

Function to search:

buscadir(){
    echo

    # Verifica se o arquivo existe, caso nao exista o programa encerra.
    [ ! -f "lista2.txt" ] && echo "Arquivo lista2.txt nao existe." && return 1


    for palavra in $(cat lista2.txt)
    do
        # 01 - Lista os arquivos no diretorio que foi passado por argumento
        # 02 - O primeiro grep seleciona somente os diretorios
        # 03 - O segundo pega a palavra atual do laco

        ls -la $DIR | grep ^d | grep -E ${palavra}$ > /dev/null

        # Se tudo ocorrer bem, mostre a mensagem...
        if [ $? == 0 ]
        then
            echo "Diretorio encontrado --> $palavra"
        fi
    done
    }

Function search:

 buscaarq(){
    echo

    # Verifica se o arquivo existe, caso nao exista o programa encerra.
    [ ! -f "lista2.txt" ] && echo "Arquivo lista2.txt nao existe." && return 1
    for palavra in $(cat lista2.txt)
    do
        # 01 - Lista os arquivos no diretorio que foi passado por argumento
        # 02 - O primeiro grep seleciona o que nao for diretorio
        # 03 - O segundo pega a palavra atual do laco

        ls -la $DIR | grep ^[^d] | grep -E ${palavra}$ > /dev/null 

        # Se tudo ocorrer bem, mostre a mensagem...
        if [ $? == 0 ]
        then
            echo "Arquivo encontrado --> $palavra"
        fi
    done
    }

Start of the program where the arguments are checked

# Guarda o valor passado por argumento
DIR=$1

if [ "$1" == "" ]
then
banner
else
menu
fi

I hope I’ve helped, I’ll be available if you need me ;-)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.