Skip to content

Aplicación de consola escrita en Python que incluye utilidades empleando los módulos scapy y socket.

Notifications You must be signed in to change notification settings

victorsanantonio/pywlan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

87 Commits
 
 
 
 
 
 
 
 

Repository files navigation

pywlan

Aplicación de consola escrita en Python la cual incluye algunas utilidades empleando los módulos scapy y socket.

Índice

Introducción

Utilidades que incluye

  1. Escaneo de dispositivos (Scan devices on WLAN)
  2. Escaneo de puertos (Scan ports of an specific device)
  3. Suplantación de ARP (ARP spoofing)
Saber más

Aclaraciones

  • Desde que me empecé a interesar por la ciberseguridad mientras me formaba en Python, siempre había deseado crear mi propia aplicación con utilidades para este campo.
  • He decidido recopilar tres sencillas utilidades en una única aplicación de consola para así poder afianzar mi proceso de aprendizaje.
  • La aplicación consume, principalmente, métodos del módulo scapy. Muy útil y comúnmente empleado para la manipulación de paquetes en red.
Requerimientos

Requerimientos técnicos

Para instalar y ejecutar correctamente el proyecto, deberás tomar las siguientes consideraciones:

  1. Tener Git instalado.
  2. Tener Python 3 instalado.
  3. Sistema operativo Windows con el driver WinPcap versión 4.1.3 instalado.

Instalación (CLI)

  • Descargar repositorio
git clone https://github.com/victorsanantonio/pywlan.git
  • Posicionarse en la raíz del proyecto
cd .\pywlan
  • Crear entorno virual
python -m virtualenv venv
  • Activar entorno virtual
.\venv\Scripts\activate
  • Instalar dependencias
pip install -r requirements.txt

Uso

  • Una vez estés en la raíz del proyecto, ejecuta el siguiente comando.
python main.py

Menú principal

Este es el menú con el que podemos interaccionar con la aplicación. image

Funcionalidades

1. Escáner de dispositivos

Pulsa la tecla 1 y ENTER para acceder al escáner de dispositivos. A continuación, solicitará que ingresemos un rango de IP: image

El rango de IPv4 que introduciremos, en mi caso será: 192.168.1.0/24

Estos son los dispositivos conectados a mi red:

image Como se puede apreciar, conocemos su IP privada y su dirección de MAC.

Exportado de datos

Nota: Si deseas exportar los resultados, introduce la palabra Yes o la letra Y: image

Se generará un directorio data/ en la raíz del proyecto con un archivo CSV. Esto funcionará de igual manera para la utilidad de escaneo de puertos.

2. Escáner de puertos

Ahora que conocemos los dispositivos conectados a nuestra red... Pulsa la tecla 2 y ENTER para acceder al escáner de puertos.

A continuación, solicitará que ingresemos una IP, puerto de comienzo y puerto de fin. image

Finalizado el escaneo: image Nos muestra un resultado en el que visualizaremos el número de puerto y si está abierto o cerrado.

Nota: Para esta implementación se utiliza el módulo socket debido a dificultades y problemas encontrados con la implementación en scapy.

3. Suplantación de ARP

Pulsa la tecla 3 y ENTER para acceder a la suplantación de ARP.

A continuación, nos solicitará una IP objetivo y una IP de entrada: image

Tablas de ARP del equipo víctima antes del ataque. image Las direcciones físicas señaladas son distintas.

Comienzo del ataque: image

Tablas de ARP del equipo víctima durante el ataque. image Las direcciones físicas indicadas son iguales.

Para detener el ataque, introduce el comando Ctrl + C. Las tablas de ARP volverán a sus valores normales una vez finalizado. image

4. Salir

Pulsa la tecla 4 y ENTER para detener la ejecución de la aplicación.

Paradigma

Se hace uso principalmente del paradigma de la orientación a objetos con aplicaciones prácticas de herencia. Así como la implementación de dataclasses.

Ejemplos

Clases y herencia

'''
Scanner es la clase padre.
Comparte métodos que serán usados varias funcionalidades principales
'''
class Scanner:
  pass


'''
Las siguientes clases heredan de Scanner.
Esto es debido a que comparten varios métodos, evitando duplicidad de código.
'''
class DeviceScanner(Scanner):
  pass

class ARPSpoofer(Scanner):
  pass

Dataclasses

Para representar más fácilmente los resultados de los escaneos, se ha decidido representar las clases Client y Port como clases modelo:

'''
Dataclass Cliente con atributos de su IP y su dirección MAC.
'''
class Client:
    ip: str
    mac: str

'''
Dataclass Puerto con atributos de su número y un booleano que indica si está abierto o cerrado.
'''
class Port:
    port: int
    is_opened: bool

About

Aplicación de consola escrita en Python que incluye utilidades empleando los módulos scapy y socket.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages