Não tenho acesso netcat
ou nmap
estou tentando usar bash
e os /dev/udp/
arquivos especiais para testar as portas.
Eu poderia fazer algo como:
echo "" > /dev/udp/example.com/8000
Mas $?
é sempre 0
ao usar UDP. Estou assumindo que é porque esse é o valor de retorno do echo ""
comando correto?
Basicamente, estou tentando replicar o que sou capaz de fazer nmap
e netcat
:
nmap -sU -p 8000 example.com | grep open >/dev/null && echo 'open'
nc -z -u example.com 8000 && echo 'open'
Como eu faria isso /dev/udp
?
bash
networking
devices
Belmin Fernandez
fonte
fonte
Respostas:
Para tcp, basta verificar
$?
. Se a conexão falhar,$?
não será0
:Vai levar tempo para
bash
perceber que a conexão falhou. Você pode usar o tempo limite para dispararbash
:Testar a porta udp é mais complexo.
Estritamente falando, não há estado aberto (é claro, o udp é um protocolo sem estado ) com o udp. Existem apenas dois estados com udp, ouvindo ou não . Se o estado não for , você receberá um Destino ICMP Inacessível .
Infelizmente, o firewall ou o roteador geralmente descartam esses pacotes ICMP, para que você não tenha certeza de qual estado da porta udp.
fonte
Em geral, você não pode.
Ao contrário do TCP, o UDP não possui conexão. Você não pode detectar que uma porta está aberta simplesmente fazendo uma conexão do tipo nada como você pode com o TCP. Em vez disso, você precisa enviar dados para a porta e ver o que acontece, e os detalhes do UDP implementados no mundo real dificultam a interpretação dos resultados. Até mesmo ferramentas sofisticadas em nível de pacote, como
nmap
não sei ao certo se há um programa ouvindo uma determinada porta UDP.nmap
classifica as portas UDP em três grupos:nmap
simplesmente não tenha descoberto como obter uma resposta; talvez o usuário tenha tido azar e todos os pacotes tenham sido perdidos em trânsito.fonte
nmap
. Obrigado, isso esclarece muita confusão.