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
SSH: Como criar chave pública
Nesse tutorial vamos ensinar a criar e configurar o acesso a um servidor SSH usando…
Socket em Python criando chat UDP
Tutorial para a criação de um chat simples utilizando sockets em UDP em Python 3….
Socket em Python, criando um Chat
Tutorial para a criação de um chat simples utilizando sockets TCP em Python 3. O…
Como usar apt get com proxy
Ao longo dos tempos sempre me deparo nos laboratórios de rede com a necessidade de…
Qual a melhor IDE para Python?
Encontrar a IDE perfeita é uma jornada pessoal que depende de vários fatores, como suas…