Estoy desarrollando un escáner de puerto simple usando Python, Scapy, nmap module. Quiero detectar si el host que aplico al escaneo del puerto es un enrutador o no. ¿Cómo puedo identificar o adivinar si el host es un enrutador?
No puede detectar un enrutador utilizando un escaneo de puertos ya que no todos los enrutadores exponen los puertos. Los enrutadores se utilizan para enrutar paquetes IP en la Capa 3 del modelo OSI y se usan para conectar dos redes de computadoras diferentes.
Puede detectar un enrutador haciendo lo que hace el comando traceroute .
Suponiendo que sabes cuál es la dirección IP del enrutador de destino, deberías enviar un ICMP El mensaje de eco con un valor TTL de uno a una IP de destino que usted sospecha está en el otro lado de la red como el enrutador de destino. Si obtiene una respuesta ICMP Time Exceeded de la IP del enrutador de destino, sabrá que es un enrutador. Es posible que deba hacer esto con algunas pruebas y errores, ya que es posible que no sepa las direcciones IP en el otro lado del enrutador.
Puede probar esto fácilmente usando el comando traceroute contra un enrutador de destino y luego imitar el mismo comportamiento usando la API de Scapy para enviar mensajes de eco ICMP con TTL de uno y probarlo.