Vamos usar o python para saber quais portas TCP estão abertas em sua máquina e identificar possíveis serviços que estejam rodando na máquina.

Muitas vezes temos dúvidas sobre quais portas estão sendo usadas para aguardar uma conecção de entrada em uma máquina.
As portas que estão aguardando conexção ficam em um estado de LISTEN e portanto aguardando o recebimento de segmentos TCP com a flag SYN.
Depois de recebido um segmento TCP com a flag SYN a apelicação que está com uma porta aberta em modo LISTEN responde com um segmento TCP com as flags SYN+ACK (segundo estágio do three way handshake).
Python: Como verificar minhas portas TCP ?
Para fazer esse programa vamos precisar instalar a biblioteca psutil.
A bibliotéca psutil pode ser usada em Windows, Linux e macOS.
Neste post vamos usar a bibliotéca psutil no linux ubuntu. Vamos usar o comando abaixo para instalar primeiramente o pip para gerenciar o download do psutil.
sudo apt install python3-pip

Instalando a biblioteca python psutil
Em seguida vamos instalar o psutil com o pip. Essa biblioteca é bem interessante para fazer uma série de medições que vão desde memória até conexões de redes.
Para instalar o psutil, vamos usar o comando abaixo.
pip install psutil

Escrevendo o programa para mostrar as portas TCP
Agora, vamos criar um arquivo com o editor de sua preferência com o nome “myports.py”.
nano myports.py
Em seguida, vamos pegar o texto abaixo e colar no arquivo myports.py.
O arquivo está com comentários que ajudam o entendimento de cada etapa.
#-----------------------------------------------------------------------
#Vamos importar a biblioteca psutil
import psutil
# Pegar todas as conexões da máquina
connections = psutil.net_connections(kind='inet')
# filtrar pelas conexões com portas ouvindo (LISTEN)
my_ports = [conn.laddr.port for conn in connections if conn.status == psutil.CONN_LISTEN]
# Excluir linhas duplicadas
my_ports = list(set(my_ports))
# Ordenar da menor porta para a maior
my_ports.sort()
# Mostrar as portas TCP que estão abertas em modo (LISTENING)
for port in my_ports:
print(f"Minha porta TCP= {port} está aberta esperando conexão")
#-----------------------------------------------------------------------

Depois de criar o programa para mostrar as portas TCP locais que estão abertas, vamos executar o programa python com o comando abaixo.
python3 myports.py
Em seguida, vamos ver um resultado como o apresentado abaixo.

Podemos verificar na figura acima que o programa mostrou as portas TCP que estão abertas em modo listening.
Verificando o resultado com o netstat
Uma forma de verificar se o programa que criamos em python está correto é usar o comando “netstat -nlt”. Esse comando citado, permite que possamos ver as portas abertas na máquina local.
netstat -nlt

Podemos ver na figura acima que as mesmas portas abertas que foram encontradas com nosso programa em python também são as mesmas portas que o comando netstat -nlt encontrou.
Minha sugestçao de Livros para aumentar seu conhecimento

Juliana Mascarenhas
Data Scientist and Master in Computer Modeling by LNCC.
Computer Engineer
Veja mais:
O que é protocolo de roteamento ?
Como funciona a camada de rede
Por que usar o Kali Linux dentro do VirtualBox?
Neste artigo, veremos os principais motivos para considerar o uso do Kali Linux em um…
Como instalar pfblocker no pfsense: guia passo a passo
Hoje vamos aprender a instalar o pfBlockerNG no pfsense. O pfBlocker NG é uma excelente…
Crie sua Primeira Rede no Packet Tracer: Guia Passo a Passo para Iniciantes (2 Computadores)
Está pronto para dar o primeiro passo no mundo fascinante das redes de computadores? Neste…
Aprenda a usar o comando curl: tutorial com exemplos práticos
Hoje vamos aprender sobre o comando curl no Linux! Esse comando é uma ferramenta incrivelmente versátil…
Instalando Kali Linux no VirtualBox: Guia Passo a Passo para Iniciantes
Bem-vindo ao guia definitivo para iniciantes que desejam aprender como instalar o Kali Linux no…
Gerenciadores de Pacotes em Python: Guia Completo sobre Pip e Conda para Iniciantes
Quando começamos a programar em Python, um dos primeiros desafios é gerenciar as bibliotecas (ou…