Frequently Asked Questions¶
Common questions about Espilon.
General¶
What is Espilon?
Espilon is an ESP32-based embedded agent framework for security research. It allows ESP32 microcontrollers to act as networked agents controlled via a C2 (Command & Control) server.
Is Espilon legal to use?
Espilon is a security research tool. It is legal to use for:
- Authorized penetration testing
- Security research in controlled environments
- CTF competitions
- Educational purposes
Unauthorized use is illegal. Always obtain written permission before deployment.
What can I do with Espilon?
Espilon agents can:
- Scan networks (ARP, ICMP)
- Create fake access points
- Capture images (ESP32-CAM)
- Proxy network traffic
- Monitor wireless activity
- And more with custom modules
Which ESP32 boards are supported?
Supported boards include:
- ESP32 DevKit (any variant)
- LilyGO T-Call (for GPRS)
- ESP32-CAM (for camera features)
- NodeMCU-32S
- Most ESP32 boards with 4MB+ flash
Hardware¶
Which board should I buy?
Depends on your use case:
| Use Case | Recommended Board |
|---|---|
| General WiFi | ESP32 DevKit |
| GPRS/Cellular | LilyGO T-Call |
| Camera/Vision | ESP32-CAM |
| Development | NodeMCU-32S |
Does ESP32 support 5GHz WiFi?
No. The ESP32 only supports 2.4GHz WiFi (802.11 b/g/n). This is a hardware limitation.
How long does battery last?
Typical battery life with 1500mAh Li-Po:
| Mode | Runtime |
|---|---|
| Idle (connected) | 10-14 hours |
| Active commands | 6-10 hours |
| Streaming | 3-5 hours |
| Deep sleep | 100+ hours |
Can I use external antenna?
Yes, for boards with U.FL/IPEX connector:
- LilyGO T-Call: Yes (GSM antenna included)
- ESP32-CAM: Some variants
- ESP32 DevKit: Rarely (most have PCB antenna)
Software¶
Which ESP-IDF version is required?
Espilon requires ESP-IDF v5.3.2 or compatible version. Using other versions may cause build errors.
Can I use Arduino instead of ESP-IDF?
Espilon is built with ESP-IDF, not Arduino. While ESP-IDF is more complex, it provides:
- Better performance
- Lower-level access
- More features
- Production-ready stability
Can I add custom modules?
Yes! See the Module Development Guide for creating custom modules. Basic structure:
- Create module in
components/modules/ - Register commands in command registry
- Enable in menuconfig
- Build and flash
Connectivity¶
WiFi or GPRS - which should I use?
| Factor | WiFi | GPRS |
|---|---|---|
| Range | 50-100m | Nationwide |
| Speed | Fast | Slow (~50Kbps) |
| Cost | Free | SIM + data plan |
| Latency | Low | Medium |
| Setup | Easy | Moderate |
Use WiFi for local deployments. Use GPRS for remote/mobile.
Can I use both WiFi and GPRS?
Not simultaneously. You must choose one network backend at compile time. However, you can have multiple agents with different backends.
What encryption is used?
All C2 communication uses ChaCha20 stream cipher with:
- 256-bit key (32 bytes)
- 96-bit nonce (12 bytes)
- Per-message encryption
Can the C2 traffic be detected?
The traffic is encrypted but not hidden. Network monitoring can detect:
- Connection to C2 IP/port
- Traffic patterns
- Data volume
For stealth, use VPN or tunneling.
C2 Server¶
Can C2 run on Windows?
Yes, via WSL2 (Windows Subsystem for Linux). Native Windows support is not tested.
How many agents can connect?
Default: 100 concurrent connections. Adjustable in config. Practical limit depends on:
- Server resources
- Network bandwidth
- Command frequency
Can I control agents from mobile?
Not directly. C3PO is a CLI application. Options:
- SSH to C2 server from mobile
- Build a web interface (community contribution)
- Use remote desktop
Is there a web interface?
Not built-in. C3PO is CLI-only. A web interface could be built using the Python API.
Troubleshooting¶
Why won't my device flash?
Common causes:
- Not in download mode: Hold BOOT, press RESET
- Wrong port: Check with
ls /dev/ttyUSB* - Permission denied: Add user to dialout group
- Bad cable: Use data-capable USB cable
Why does my device keep rebooting?
Common causes:
- Power issue: Use better power supply
- Brownout: Add capacitor or reduce load
- Code crash: Check serial monitor for errors
- Watchdog: Increase timeout or fix blocking code
Why is my connection unstable?
Check:
- Power supply stability
- WiFi signal strength
- Network congestion
- C2 server resources
- Encryption key match
How do I factory reset?
Security¶
Is the communication secure?
Yes, all C2 traffic is encrypted with ChaCha20. However:
- Keys must be kept secret
- Compromised keys = compromised security
- Traffic patterns may be analyzed
Can agents be hijacked?
With proper security:
- Encryption prevents interception
- Unique keys per deployment
- No known vulnerabilities in protocol
Without proper security:
- Default keys are public
- Unencrypted = fully exposed
What about physical security?
ESP32 has limited physical security:
- Flash can be read without encryption
- JTAG debug possible on some boards
- Physical access = potential compromise
For sensitive deployments, enable flash encryption.
Contributing¶
How can I contribute?
Contributions welcome:
- Fork the repository
- Create feature branch
- Make changes
- Submit pull request
Areas needing help:
- Documentation improvements
- New modules
- Bug fixes
- Testing
Where do I report bugs?
Include:
- ESP-IDF version
- Board type
- Error messages
- Steps to reproduce
Is there a community?
- GitHub Discussions: Q&A and ideas
- Issues: Bug reports and features
- Documentation: This site
See also: Troubleshooting | Getting Started