:: uses gnuwin32 sort, grep, sed, cut. You could rename windows sort.exe(could make a copy of sort.exe to windowssort.exe and unlocker lets you delete windows's sort.exe), and use gnuwin32 sort.exe instead.
@ECHO OFF
netstat -aon -p tcp | grep "LISTENING" | grep -o ":[^: ]*" | grep -P ":[0-9]+$" | grep -v "^:0$" | uniq | tr -d '\r' | tr -d '\n' | sed "s/:/,/g" | cut -b 2- | sed "s/,/\r\n/g" | sort -n | tr -d '\r' | tr -s '\n' ','
produz uma lista delimitada por vírgulas como
29,35,85,115,145,155,163,170
(para ver como foi feito, você pode saber um pouco sobre regexes, algo sobre esses comandos usados e tente cada parte de cada vez, por exemplo, primeiro netstat -aon -p tcp
, em seguida, adicione | grep "LISTENING"
e.t.c.). Se sed poderia encontrar em novas linhas, então teria sido um pouco mais curto, mas sed não pode, e se tr era mais poderoso, então seria um pouco mais simples, mas tr não é.
Você pode colocar essa lista de portas delimitada por vírgulas em um scanner de porta on-line
por exemplo,
link
E se a lista for muito longa, então a varredura de portas online dessas portas é muito longa, então você pode fazer o nmap com essa lista, de outro computador na sua LAN, e se algum estiver aberto, basta fazer a porta online digitalizar sobre isso.
É inútil fazer uma varredura de porta online em todas as portas 65535, levaria muito tempo e é inútil fazê-lo quando você sabe que apenas uma pequena porcentagem deles até executa um servidor e você sabe ao certo quais são. E é inútil apenas escanear 'portas comuns' quando você sabe exatamente em quais portas você está executando servidores, portanto, para testar.