Vamos supor que queremos descobrir quais portas de TCP e UDP estão abertas em nosso computador. Isso é importante porque essas portas estão esperando por comunicações.
Quando estão nesse estado significa que estão prontas para receber mensagens de outros lugares.
Uma breve explicação sobre como funciona as portas TCP e UDP
Quando outra máquina tenta se conectar à nossa, ela pode enviar uma mensagem especial chamada SYN para uma de nossas portas TCP.
Dessa forma, se uma das nossas portas está aberta e pronta para conexão, a gente responde com uma mensagem especial chamada SYN+ACK, mostrando que estamos prontos para conversar.
Isso é como um “aperto de mão” entre computadores antes de começarem a trocar informações. Essa conversa entre as portas tem 3 passos e é chamada de “three way handshake”.
Como mostrar as portas UDP no python?
Para as portas UDP, não temos uma conexão inicial. Portanto, as portas UDP abertas ficam aguardando segmentos UDP serem enviados diretamente sem nenhum “aperto de mão” inicial.
Vale ressaltar que quando usamos estamos enviando dados para uma porta UDP aberta, temos duas possibilidades: A primeira é a porta UDP do destino estar aberta e consequentemente aceitar os dados que enviamos.
E a outra possibilidade é a porta de destino estar fechada e consequentemente o destino não receberia os dados.
Então, usando o Python, podemos descobrir nossas portas abertas e verificar quais serviços (coisas que rodam no computador, como um servidor web) estão esperando para conversar com outros computadores.
É uma maneira de entender o que está acontecendo na máquina e quais programas estão prontos para se comunicar com outros pela internet.
Instalando as bibliotecas do python?
Para fazer nosso programa, precisamos instalar uma ferramenta especial chamada “biblioteca psutil“. Essa biblioteca é útil porque nos ajuda a fazer várias coisas legais com computadores que usam sistemas Windows, Linux ou macOS.
No nosso exemplo, vamos usar o Linux Ubuntu. Primeiro, vamos instalar uma ferramenta chamada “pip“. O pip é um jeito de baixar e instalar outras ferramentas, como o psutil, de maneira fácil.
Para instalar o pip, vamos abrir um terminal e digitar o comando abaixo.
sudo apt install python3-pip
Instalando a biblioteca python psutil
Depois disso, vamos usar o pip para instalar o psutil. O psutil é uma biblioteca do python que nos ajuda a fazer muitas coisas interessantes com o computador!
Para instalar o psutil, vamos abrir o terminal e digitar o comando abaixo.
pip install psutil
Nota. Em nosso código, vamos usar também a biblioteca socket que vem instalada na maioria das vezes com o python. Portanto, não precisamos instalar essa biblioteca.
O código python para mostrar nossas portas TCP e UDP
Agora, vamos criar um arquivo com o editor de sua preferência com o nome “myports_tcp_udp.py”.
nano myports_tcp_udp.py
Depois disso, copie o texto a seguir e cole no arquivo chamado myports_tcp_udp.py. Esse arquivo tem comentários que explicam cada passo do código, o que vai te ajudar a entender melhor o que está acontecendo.
#importando bibliotecas
import psutil
import socket
# coletando informações sobre TCP e UDP
connectall = psutil.net_connections(kind='inet')
only_udp = [conn for conn in psutil.net_connections(kind='inet') if conn.type == socket.SOCK_DGRAM]
# Separando informações sobre portas TCP
only_tcp_listening_ports = [conn.laddr.port for conn in connectall if conn.status == psutil.CONN_LISTEN]
# Separando informações sobre portas UDP
only_udp_listening_ports = [conn.laddr.port for conn in only_udp]
# removendo portas repetidas da lista
only_tcp_listening_ports = list(set(only_tcp_listening_ports))
only_udp_listening_ports = list(set(only_udp_listening_ports))
# organizando as portas da menor para a maior
only_tcp_listening_ports.sort()
only_udp_listening_ports.sort()
# Mostrando apenas portas TCP
for port in only_tcp_listening_ports:
print(f"TCP port = {port} Open")
print("\n")
#Mostrando apenas portas UDP
for port in only_udp_listening_ports:
print(f"UDP port = {port} Open")
Executando o programa para mostrar as portas TCP e UDP
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_tcp_udp.py
Podemos verificar na figura acima que o programa mostrou as portas TCP e UDP que estão abertas em nossa máquina.
Verificando nosso programa em python
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 -nltu
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 -ntul” encontrou.
Como instalar netstat
Se você estiver em uma máquina Linux sem o netstat, você pode instalar com o comando abaixo.
sudo apt install net-tools
E posteriormente usar o comando abaixo.
netstat -nltu
Ou você pode usar o comando abaixo.
ss -ntul
Nesse caso, usando o comando ss também podemos ver as mesmas portas que nosso programa em python mostrou.
Veja mais:
Python: mostrar portas TCP abertas
Projeto para Portifólio: Sua primeira API com Python e MySQL
O que é protocolo de roteamento ?
Como funciona a camada de rede
Livros Indicados:
E-Books de Redes e Segurança
Juliana Mascarenhas
Data Scientist and Master in Computer Modeling by LNCC.
Computer Engineer
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…
Python: como obter metadados de imagens e PDFs
Como usar o Ngrok ?
Mais links relacionados ao assunto: