Files
bw16-research/WiFiX-Enhanced/FLASHING_GUIDE.md

328 lines
8.1 KiB
Markdown

# WiFiX-Enhanced Flashing Guide & Usage Instructions
## Overview
This guide provides comprehensive instructions for flashing and using the WiFiX-Enhanced firmware on BW16 and ESP32 devices. The system creates realistic WiFi captive portals for security testing and research purposes.
## Hardware Requirements
### Primary Components
- **BW16 Module**: Realtek RTL8720DN-based WiFi module (5GHz capable)
- **ESP32 DevKit**: ESP32-WROOM or ESP32-WROVER (for enhanced features)
- **OLED Display**: 128x64 I2C SSD1306 (optional but recommended)
- **SD Card Module**: SPI-based SD card reader for credential storage
- **Power Supply**: 5V 2A minimum (USB or external)
### Pin Connections
```
BW16 to ESP32:
- BW16 TX → ESP32 GPIO16 (RX)
- BW16 RX → ESP32 GPIO17 (TX)
- GND → GND
- 3.3V → 3.3V
OLED Display (I2C):
- SDA → GPIO21
- SCL → GPIO22
- VCC → 3.3V
- GND → GND
SD Card Module (SPI):
- MOSI → GPIO23
- MISO → GPIO19
- CLK → GPIO18
- CS → GPIO5
- VCC → 3.3V
- GND → GND
```
## Software Setup
### Prerequisites
1. **PlatformIO Core** (recommended) or Arduino IDE
2. **USB to Serial Drivers**:
- CP2102/CH340 drivers for ESP32
- RTL8720DN drivers for BW16
3. **Python 3.8+** (for PlatformIO)
### Installation Steps
#### 1. Install PlatformIO
```powershell
# Install via pip
pip install platformio
# Or install VS Code extension
# Search for "PlatformIO IDE" in VS Code extensions
```
#### 2. Clone Repository
```powershell
git clone <repository-url>
cd WiFiX-Enhanced
```
#### 3. Install Dependencies
```powershell
pio lib install
```
## Flashing Instructions
### Method 1: PlatformIO (Recommended)
#### ESP32 Firmware
```powershell
# Build and flash ESP32 firmware
pio run -e esp32_main --target upload
# Monitor serial output
pio device monitor -e esp32_main
```
#### BW16 Firmware
```powershell
# Build and flash BW16 firmware
pio run -e bw16_deauth --target upload
# Monitor serial output
pio device monitor -e bw16_deauth
```
### Method 2: Arduino IDE
#### ESP32 Setup
1. Add ESP32 board support:
- File → Preferences → Additional Boards Manager URLs
- Add: `https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json`
- Tools → Board → Boards Manager → Search "ESP32" → Install
2. Select board: "ESP32 Dev Module"
3. Configure settings:
- CPU Frequency: 240MHz
- Flash Frequency: 80MHz
- Flash Mode: QIO
- Flash Size: 4MB
- Upload Speed: 921600
#### BW16 Setup
1. Add Realtek Ameba support:
- File → Preferences → Additional Boards Manager URLs
- Add: `https://github.com/ambiot/ambd_arduino/raw/master/Arduino_package/package_realtek.com_amebad_index.json`
- Tools → Board → Boards Manager → Search "Ameba" → Install
2. Select board: "BW16"
3. Upload speed: 115200
### Upload File System (SPIFFS)
```powershell
# Upload web interface files
pio run --target uploadfs -e esp32_main
```
## Configuration
### Pre-Flash Configuration
Edit `src/config.h` (create if not exists):
```cpp
#define DEVICE_NAME "CityNet_WiFi"
#define DEFAULT_SSID "CityNet_Public_WiFi"
#define DEFAULT_PASSWORD ""
#define CAPTIVE_PORTAL_IP "192.168.4.1"
#define CAPTIVE_PORTAL_DOMAIN "wifi.citynet.local"
#define SD_CARD_CS_PIN 5
#define OLED_ADDRESS 0x3C
#define ENABLE_SD_BACKUP true
#define ENABLE_DEAUTH true
#define ENABLE_OLED true
```
### Network Configuration
The device creates a WiFi network with these defaults:
- **SSID**: "CityNet_Public_WiFi"
- **Password**: (open network)
- **IP Range**: 192.168.4.0/24
- **Gateway**: 192.168.4.1
- **DNS**: 192.168.4.1
## Usage Instructions
### Initial Setup
1. **Power On**: Connect power to both modules
2. **Wait for Boot**: OLED will show startup sequence
3. **Connect to WiFi**: Look for "CityNet_Public_WiFi" on target device
4. **Access Portal**: Browser should auto-open, or navigate to `http://192.168.4.1`
### Web Interface
The portal includes realistic pages:
- **Login Page**: Professional municipal WiFi portal
- **Welcome Page**: Connection status and usage info
- **Error Pages**: Various authentication failure scenarios
### Credential Collection
- Captured credentials are stored in SPIFFS
- Auto-backup to SD card (if enabled)
- Real-time display on OLED
- Export via serial console or web interface
### OLED Display Information
```
┌─────────────────────────────────┐
│ WiFiX-Enhanced v1.0 │
│ Mode: CAPTIVE PORTAL │
│ Clients: 3 │
│ Creds: 12 │
│ IP: 192.168.4.1 │
└─────────────────────────────────┘
```
### Serial Console Commands
Connect at 115200 baud and use these commands:
```
help - Show available commands
status - Show system status
creds - List captured credentials
clearcreds - Clear credential storage
backup - Manual backup to SD
deauth [MAC] - Target specific device
reset - Factory reset
```
## Troubleshooting
### Flashing Issues
#### "Port not found" Error
```powershell
# List available ports
pio device list
# Check Windows Device Manager
# Update drivers if needed
```
#### "Timeout communicating" Error
```powershell
# Hold BOOT button during upload start
# Release when upload begins
# Try lower upload speed (115200)
```
#### "Wrong boot mode" Error
```powershell
# Ensure proper wiring
# Check power supply (must be 3.3V)
# Try different USB cable
```
### Runtime Issues
#### Device Won't Start
1. Check power connections
2. Verify 3.3V regulation
3. Check for short circuits
4. Monitor serial output during boot
#### WiFi Not Visible
1. Check antenna connection
2. Verify BW16 module power
3. Check serial communication
4. Reset both modules
#### Portal Not Loading
1. Verify IP configuration
2. Check DNS redirection
3. Test with different browsers
4. Clear browser cache
#### SD Card Not Working
1. Check SPI connections
2. Verify card format (FAT32)
3. Test with known-good card
4. Check power supply stability
## Safety and Legal Considerations
### Important Notes
- **Educational Use Only**: This tool is for security research and testing
- **Authorization Required**: Only use on networks you own or have permission to test
- **Compliance**: Follow local laws and regulations
- **Ethics**: Respect privacy and data protection laws
### Best Practices
1. Always inform network owners before testing
2. Use in controlled environments
3. Secure collected data appropriately
4. Delete captured credentials after analysis
5. Document your testing procedures
## Performance Optimization
### Power Consumption
- Use deep sleep between activations
- Optimize WiFi transmission power
- Disable unused features
- Consider battery operation for portability
### Range Enhancement
- Use external antennas
- Optimize placement
- Consider power amplifiers
- Test different environments
## Advanced Features
### Custom Portal Templates
Edit files in `data/` directory:
- `index.html` - Login page
- `welcome.html` - Success page
- Add custom CSS/JS for realism
### Credential Export
```powershell
# Export via serial
pio device monitor -e esp32_main | grep "CREDENTIAL"
# Export from SD card
# Remove SD card and read backup files
```
### Integration with Tools
- Wireshark for packet analysis
- Aircrack-ng for advanced attacks
- Custom scripts for automation
- Database storage for large deployments
## Support and Updates
### Getting Help
1. Check this documentation first
2. Review serial console output
3. Test with minimal configuration
4. Document your setup
### Updates
```powershell
# Update PlatformIO
pio update
# Update libraries
pio lib update
# Pull latest code
git pull origin main
```
### Contributing
- Report issues with detailed logs
- Suggest improvements
- Share successful configurations
- Contribute documentation
## Version History
- v1.0.0: Initial release with BW16/ESP32 support
- v1.1.0: Added SD card backup and OLED display
- v1.2.0: Enhanced web interface and credential management
---
**Remember**: With great power comes great responsibility. Use this tool ethically and legally.