¿Cómo construir un escáner WiFi en Python usando Scapy?

En este artículo, vamos a construir un escáner WiFi en Python usando Scapy. El Escaneo WiFi o Escaneo de Red se refiere al escaneo de toda la red a la que estamos conectados e intentar averiguar cuáles son todos los clientes conectados a nuestra red. Podemos identificar a cada cliente usando su dirección IP y MAC. Podemos usar el ping ARP para descubrir los sistemas activos en nuestra red.

El escáner de red enviará la solicitud ARP indicando quién tiene alguna dirección IP específica, digamos “192.168.1.1”, el propietario de esa dirección IP (el objetivo) responderá automáticamente diciendo que él es “192.168.1.1”, con esa respuesta , la dirección MAC también se incluirá en el paquete, esto nos permite recuperar con éxito las direcciones IP y MAC de todos los usuarios de la red simultáneamente cuando enviamos un paquete de transmisión (enviando un paquete a todos los dispositivos en la red).

Algunas funciones importantes para crear un escáner de red:

  • ARP(): esta función definida en el módulo scapy que nos permite crear paquetes ARP (solicitud o respuesta). De forma predeterminada, si lo llamamos, creará un paquete de solicitud ARP para nosotros. Este método nos proporciona el estado del paquete que hemos creado. No proporciona información detallada sobre el paquete, solo nos da una idea básica como cuál es el tipo de paquete, cuál es el destino del paquete, etc. Por ejemplo, si queremos crear un paquete ARP usando ARP() que está presente en el módulo scapy y quiere ver el resumen del paquete, podemos hacerlo creando el objeto de la clase ARP.
  • Método show(): Este método es muy similar al método summary(). Da información más detallada sobre el paquete. El uso de esta función también es muy similar a un método de resumen().
  • Función ls(): Este método está presente en la clase scapy. Al usar este método, podemos ver cuáles son los campos que podemos configurar para un paquete específico.

crearemos un paquete ARP y con la ayuda de la función ls(), veremos cuáles son los campos disponibles para este paquete.

Acercarse:

  • Cree un paquete ARP utilizando el método ARP().
  • Establezca el rango de red usando una variable.
  • Cree un paquete Ethernet utilizando el método Ether().
  • Establezca el destino para transmitir usando la variable hwdst.
  • Combine el paquete de solicitud ARP y la trama Ethernet usando ‘/’.
  • Envíe esto a su red y capture la respuesta de diferentes dispositivos.#scapy.srp()
  • Imprima la dirección IP y MAC de los paquetes de respuesta.

A continuación se muestra la implementación de Python:

Python3

import scapy.all as scapy 
  
request = scapy.ARP() 
    
request.pdst = '192.168.0.1/24'
broadcast = scapy.Ether() 
    
broadcast.dst = 'ff:ff:ff:ff:ff:ff'
    
request_broadcast = broadcast / request 
clients = scapy.srp(request_broadcast, timeout = 10,verbose = 1)[0] 
for element in clients: 
    print(element[1].psrc + "      " + element[1].hwsrc) 

Producción:

Explicación:

Aquí x = Rango de red. Por ejemplo x = 192.168.0.1/24, 172.16.5.1/16, etc.

  • pdst es donde debe ir el paquete ARP (objetivo),
  • psrc es la IP a actualizar en la tabla arp del objetivo,
  • hwsrc es la dirección de hardware del remitente.
  • hwdst es una dirección de hardware de destino

Publicación traducida automáticamente

Artículo escrito por samrat2825 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *