Escreva o programa mais curto que tentará se conectar às portas abertas em um computador remoto e verifique se elas estão abertas. (É chamado de Port Scanner )
Obtenha entrada dos argumentos da linha de comando.
your-port-scanner host_ip startPort endPort
Suponha que startPort <endPort (e endPort - startPort < 1000
)
Saída: Todas as portas abertas entre esse intervalo devem espaço ou vírgula separadas.
Respostas:
sh / netcat, 39
O Netcat faz a varredura e retorna os resultados neste formulário em erro padrão:
cut
exargs
extraia o número da porta e faça uma única linha.Lembre-me de desligar o SMTP nesse nó.
fonte
Perl, 92
Perl 5.10 ou posterior, execute com
perl -E 'code here'
.Usos expressões regulares para comprimir tanto tempo
IO::Socket::INET
, entãoeval
; formatação final feita com interpolação de matriz.Por solicitação, uma explicação mais detalhada. Para ungolf, primeiro vamos redefinir o espaço:
A linha anterior à
eval
substitui todas as (duas) ocorrências de 'I' por 'IO :: Socket :: INET', que é um truque padrão de golfe Perl para reduzir o impacto de inevitáveis identificadores longos. Nomeando alguns dos temporários, o código é equivalente a isso:Em poucas palavras: leia os argumentos do host e do intervalo de portas na linha de comando; tente uma conexão com todos eles em sequence (
IO::Socket::INET->new()
); mantenha uma lista daqueles que conseguiram (grep
); exibir o resultado bem (say
).fonte
sh / nmap / GNU grep / xargs - 36
Segue as especificações de entrada e saída:
fonte
nmap
conta como uma resposta válida aqui, mas é definitivamente nãosh
:)your-port-scanner host_ip startPort endPort
interface, chamando nmap ;-)nmap
vem empacotado com linux? : - \ eu não sabia disso ... :(Ruby - 85
fonte
BASH - 105
No BASH puro (ou seja, sem nmap ou netcat).
Ao usar com um endereço que não seja o host local, o tempo limite é bastante longo (na ordem de minutos) ao encontrar uma porta fechada; portanto, é provável que algum tipo de função de tempo limite / alarme seja necessária.
fonte
PHP - 70
fonte
$p++
em outra menção de$p
, vai economizar um caracter ...Perl, 178
Eu sou novo no Perl, qualquer conselho sobre redução é apreciado!
fonte