Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature: adicionar suporte e parametrização para UDP #1

Open
gutobrutus opened this issue Dec 7, 2023 · 1 comment
Open

feature: adicionar suporte e parametrização para UDP #1

gutobrutus opened this issue Dec 7, 2023 · 1 comment

Comments

@gutobrutus
Copy link
Owner

Adicionar suporte para UDP com a devida parametrização para informar se as portas são UDP ou TCP.

@n1ckrc
Copy link

n1ckrc commented Dec 7, 2023

#!/bin/env bash

RED='\033[0;31m'
DARK_GRAY='\033[1;30m'
YELLOW='\033[1;33m'
GREEN='\033[0;32m'
LIGHT_RED='\033[1;31m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m' # no color

echo ""
echo -e "${YELLOW}                      _/_/_/                          _/      "
echo "                     _/    _/    _/_/    _/  _/_/  _/_/_/_/   "
echo "                    _/_/_/    _/    _/  _/_/        _/        "
echo "                   _/        _/    _/  _/          _/         "
echo "                  _/          _/_/    _/            _/_/      "
echo "                                                              "
echo "                                                              "
echo "                                                                               "
echo "     _/    _/                                _/        _/                      "
echo "    _/  _/    _/_/_/      _/_/      _/_/_/  _/  _/        _/_/_/      _/_/_/   "
echo "   _/_/      _/    _/  _/    _/  _/        _/_/      _/  _/    _/  _/    _/    "
echo "  _/  _/    _/    _/  _/    _/  _/        _/  _/    _/  _/    _/  _/    _/     "
echo " _/    _/  _/    _/    _/_/      _/_/_/  _/    _/  _/  _/    _/    _/_/_/      "
echo "                                                                      _/       "
echo -e "                                                                 _/_/  ${NC}"
echo -e "${DARK_GREY}                                                                     v0.3.0 ${NC}"
echo -e "${GREEN}         docs/source: https://github.com/gutobrutus/port-knocking    ${NC}"
echo ""


if [ "$EUID" -ne 0 ]; then
    echo -e "${RED}ERRO:${NC} ${GREEN}Este script precisa ser executado com privilégios de superusuário (sudo)${NC}"
    exit 1
fi


HELP="${CYAN}Modo de uso:${NC}
    ${GREEN}$0 <host> <porta1> <protocolo1> <porta2> <protocolo2> [<porta3> <protocolo3> <porta4> <protocolo4> ...]${NC}
${CYAN}Opções${NC}:
    ${GREEN}- host: Host alvo
    - porta<n>: número da porta
    - protocolo<n>: tcp ou udp.${NC}
${CYAN}Exemplo:${NC} 
    ${GREEN}$0 192.168.0.10 2300 tcp 3252 udp 2525 tcp${NC}
"
HEADER="${BLUE}|=========================== Iniciando a execução ============================|${NC}"

valida_porta() {
    local porta="$1"

    if ! [[ "$porta" =~ ^[0-9]+$ ]]; then
        # A porta não é um número
        return 1
    elif ((porta < 1 || porta > 65535)); then
        # A porta está fora do intervalo permitido
        return 1
    fi

    # A porta é válida
    return 0
}

if [ "$#" -lt 3 ]; then
    echo -e "${HEADER}"
    echo -e "${RED}ERRO:${NC} ${GREEN}Faltam parâmetros${NC}"
    echo ""
    echo -e "${HELP}"
    echo ""
    exit 1
fi

host="$1"
shift  # Remove o primeiro parâmetro (host) da lista de parâmetros

portas=()
protocolos=()

delay=2  # Defina o valor padrão para o tempo de espera em segundos

while [ $# -gt 0 ]; do
    portas+=("$1")
    protocolos+=("$2")
    shift 2
done

if [ "${#portas[@]}" -lt 2 ]; then 
    echo -e "${HEADER}"
    echo -e "${RED}ERRO:${NC} ${GREEN}Faltam portas ou protocolos${NC}"
    echo ""
    echo -e "${HELP}"
    echo ""
    exit 1
fi

echo -e "${HEADER}"
for ((i=0; i<${#portas[@]}; i++)); do
    porta="${portas[$i]}"
    protocolo="${protocolos[$i]}"

    if ! valida_porta "$porta"; then
        echo -e "${HEADER}"
        echo -e "${RED}ERRO:${NC} ${GREEN}A porta informada $porta é inválida!${NC}"
        echo ""
        echo -e "${HELP}"
        echo ""
        exit 1
    fi

    if [ "$protocolo" != "tcp" ] && [ "$protocolo" != "udp" ]; then
        echo -e "${HEADER}"
        echo -e "${RED}ERRO:${NC} ${GREEN}O protocolo para a porta $porta deve ser 'tcp' ou 'udp'${NC}"
        echo ""
        echo -e "${HELP}"
        echo ""
        exit 1
    fi

    if [ "$protocolo" == "tcp" ]; then
        echo "Enviando pacote TCP com flag SYN para $host:$porta"
        hping3 -S --fast -c 1 -p "$porta" "$host" 2>&1 | grep -v "hping statistic" > /dev/null
    elif [ "$protocolo" == "udp" ]; then
        echo "Enviando pacote UDP com flag SYN para $host:$porta"
        hping3 --udp -c 1 -p "$porta" "$host" 2>&1 | grep -v "hping statistic" > /dev/null
    fi
done

echo "Envio de pacotes TCP/UDP com flag SYN finalizado"

echo -e "${BLUE}|============================== Fim da execução ==============================|${NC}"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants