Scripter de Redes: Testando Portas Abertas em um IP com Python
Scripter de Redes: Testando Portas Abertas em um IP com Python
Verificar o status de portas de rede em um endereço IP é fundamental para diagnósticos de conectividade e auditorias básicas de segurança. Utilizando o módulo nativo
socket do Python, você consegue testar a abertura de conexões TCP em portas específicas sem a necessidade de instalar bibliotecas externas.Python
import socket
def escanear_portas(ip_alvo: str, portas: list) -> dict:
resultados = {}
# Percorre cada porta especificada na lista
for porta in portas:
# Cria um socket IPv4 (AF_INET) usando o protocolo TCP (SOCK_STREAM)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
# Define o tempo limite de espera em segundos para evitar travamentos
s.settimeout(1.0)
# connect_ex retorna 0 se a conexão for bem-sucedida (porta aberta)
resultado = s.connect_ex((ip_alvo, porta))
resultados[porta] = "Aberta" if resultado == 0 else "Fechada"
return resultados
# Exemplo prático de uso
if __name__ == "__main__":
ip = "127.0.0.1" # Localhost para testes
portas_para_testar = [21, 22, 80, 443, 8080]
print(f"Iniciando escaneamento no IP: {ip}...")
status_portas = escanear_portas(ip, portas_para_testar)
for porta, status in status_portas.items():
print(f"Porta {porta}: {status}")
Pontos-chave
- Vantagem do
connect_ex(): Diferente do métodoconnect(), que lança uma exceção quando a conexão falha, oconnect_ex()retorna diretamente um código de erro numérico (0para sucesso), tornando o controle de fluxo mais limpo e rápido. - Configuração de Timeout (
settimeout): Definir um tempo limite de resposta curto (ex: 1.0 segundo) é crítico para impedir que o script fique preso indefinidamente aguardando pacotes em portas filtradas por firewalls. - Sobrecarga de Redes (Uso Responsável): Executar um varredura sequencial em um número elevado de portas pode ser lento. Para listas grandes de portas, recomenda-se o uso de concorrência com
threadingouasyncio. - Legalidade e Ética: Tentar abrir conexões TCP contra IPs ou infraestruturas sem autorização prévia pode ser interpretado como um ataque ou tentativa de invasão pelos sistemas de detecção de intrusão (IDS/IPS).

Comentários
Postar um comentário