
Cliente
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
from scapy.all import * fake_source_ip = "8.8.8.8" # Dirección IP falsa como dirección de origen destination_ip = "192.168.1.140" # Dirección IP de tu propia máquina destination_port = 54321 # Puerto de destino source_port = 12345 # Puerto de origen para el paquete TCP message = "Hola desde la dirección IP falsa (TCP)" # Obtener la dirección MAC de la interfaz de red 'en0' de tu máquina # 'en0' es la interfaz ethernet/wifi común en macOS. Asegúrate de que sea la correcta. # Puedes verificarlo con 'ifconfig' y buscar la línea 'ether' bajo 'en0'. dst_mac = get_if_hwaddr('en0') # Reemplaza 'en0' si tu interfaz principal es otra (ej. 'wlan0' en Linux) # Crear un paquete Ethernet, luego IP con dirección falsa y capa TCP # Usamos Ether() para especificar la MAC de destino, forzando la salida a Layer 2 packet = Ether(dst=dst_mac) / IP(src=fake_source_ip, dst=destination_ip) / TCP(sport=source_port, dport=destination_port) / message # Enviar el paquete a nivel de capa 2 # 'verbose=0' para no mostrar mensajes de Scapy, 'iface' para especificar la interfaz de salida sendp(packet, iface='en0', verbose=0) print(f"Paquete TCP enviado con IP de origen falsa {fake_source_ip} a {destination_ip}:{destination_port}") |
Cliente (enviar a IP de subred)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
from scapy.all import * fake_source_ip = "192.168.0.12" # Dirección IP falsa como dirección de origen destination_ip = "192.168.0.11" # Dirección IP del segundo equipo (tu máquina local) destination_port = 54321 # Puerto de destino source_port = 12345 # Puerto de origen para el paquete TCP (puede ser cualquier puerto no privilegiado) message = "Hola desde la dirección IP falsa (TCP)" # Crear un paquete IP con dirección IP falsa y capa TCP # Para TCP, es importante especificar un puerto de origen (sport) y un puerto de destino (dport) packet = IP(src=fake_source_ip, dst=destination_ip) / TCP(sport=source_port, dport=destination_port) / message # Enviar el paquete send(packet, verbose=0) |
Servidor
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
from scapy.all import * def packet_callback(packet): # Verifica si el paquete tiene una capa IP y TCP if IP in packet and TCP in packet: # Verifica si el puerto de destino del paquete TCP coincide con el puerto esperado # y si el mensaje contiene el texto esperado # Se corrige el error: la cadena se codifica a bytes UTF-8 para la comparación. expected_message_bytes = "Hola desde la dirección IP falsa (TCP)".encode('utf-8') if packet[TCP].dport == 54321 and expected_message_bytes in packet.load: print(f"¡Paquete TCP recibido de {packet[IP].src} en el puerto {packet[TCP].dport}!") print(f"Contenido: {packet.load.decode('utf-8', errors='ignore')}") print("Servidor TCP escuchando en el puerto 54321...") # sniff bloquea la ejecución hasta que se detiene manualmente o se alcanza un 'count' o 'timeout' # Se filtran paquetes TCP destinados al puerto 54321 sniff(filter="tcp and port 54321", prn=packet_callback, store=0, timeout=60) print("Servidor detenido.") |

