How 7wp81x/nrsuite-android works
NRSuite is an Android companion for controlling an ESP32 security-research toolkit. The main path is launch the Compose app, discover and connect to an ESP32 over USB serial, then select a module whose commands travel through the session and framed protocol. Feature branches cover wireless discovery and defense, portal and credential workflows, capture and WPA analysis, BLE/HID and storage, and firmware flashing. The README documents several capabilities whose implementation was not sampled; those branches are shown at subsystem level, and edges are limited to documented or indexed relationships.
Main entry points: MainViewModel.kt App controller · NrSession.kt Device session · NRSuiteApp.kt App catalog · UsbSerialTransport.kt Serial transport
Components 29
App and navigation
- Activity
app/src/main/java/com/swp81x/nrsuite/MainActivity.kt - App catalog
app/src/main/java/com/swp81x/nrsuite/ui/NRSuiteApp.kt - Screen navigation
app/src/main/java/com/swp81x/nrsuite/ui/NRSuiteContent.kt - App controller
app/src/main/java/com/swp81x/nrsuite/MainViewModel.kt - Foreground service
app/src/main/java/com/swp81x/nrsuite/service/NrSuiteForegroundService.kt - Session history
app/src/main/java/com/swp81x/nrsuite/core/history/HistoryEntry.kt
Device connection
- USB device catalog
app/src/main/java/com/swp81x/nrsuite/core/usb/UsbSerialDeviceCatalog.kt - Serial transport
app/src/main/java/com/swp81x/nrsuite/core/usb/UsbSerialTransport.kt - Device session
app/src/main/java/com/swp81x/nrsuite/core/session/NrSession.kt - Connection state
app/src/main/java/com/swp81x/nrsuite/core/session/ConnectionState.kt - Wire frames
app/src/main/java/com/swp81x/nrsuite/core/protocol/Frame.kt - Frame codec
app/src/main/java/com/swp81x/nrsuite/core/protocol/FrameCodec.kt
Wireless research
- Wi-Fi modules
app/src/main/java/com/swp81x/nrsuite/ui/WifiScanScreen.kt - Client monitor
app/src/main/java/com/swp81x/nrsuite/MainViewModelClientPresence.kt - Deauth detector
app/src/main/java/com/swp81x/nrsuite/ui/DeauthDetectorScreen.kt - AP defense
app/src/main/java/com/swp81x/nrsuite/ui/RogueApScreen.kt - Portal and Evil Twin
app/src/main/java/com/swp81x/nrsuite/ui/PortalScreen.kt - BLE modules
app/src/main/java/com/swp81x/nrsuite/ui/BleScreen.kt - Vendor lookup
app/src/main/java/com/swp81x/nrsuite/core/oui/OuiDatabase.kt
Capture and credentials
- Packet capture
app/src/main/java/com/swp81x/nrsuite/core/pcap/PcapWriter.kt - EAPOL parser
app/src/main/java/com/swp81x/nrsuite/core/eapol/EapolParser.kt - WPA handshake tools
app/src/main/java/com/swp81x/nrsuite/core/wpa/WpaHandshakeParser.kt - Credential manager
app/src/main/java/com/swp81x/nrsuite/core/credentials
Device tools
- Storage and BadUSB
app/src/main/java/com/swp81x/nrsuite/MainViewModelStorage.kt - Firmware flasher
app/src/main/java/com/swp81x/nrsuite/core/flasher/Esp32Flasher.kt - Flasher serial transport
app/src/main/java/com/swp81x/nrsuite/core/flasher/UsbSerialFlasherTransport.kt
Other components
- Researcher
- ESP32 device
- ESP32 firmware
Connections 29
- Researcher → Activity: opens
README.md - Activity → App catalog: launches
app/src/main/java/com/swp81x/nrsuite/MainActivity.kt - App catalog → App controller: uses
app/src/main/java/com/swp81x/nrsuite/ui/NRSuiteApp.kt - App catalog → Screen navigation: routes to
app/src/main/java/com/swp81x/nrsuite/ui/NRSuiteApp.kt - Researcher → ESP32 device: connects
README.md - App controller → USB device catalog: discovers
app/src/main/java/com/swp81x/nrsuite/MainViewModel.kt - App controller → Device session: manages
app/src/main/java/com/swp81x/nrsuite/MainViewModel.kt - USB device catalog → Serial transport: selects device
- Device session → Serial transport: uses
app/src/main/java/com/swp81x/nrsuite/core/session/NrSession.kt - Device session → Frame codec: encodes and decodes
app/src/main/java/com/swp81x/nrsuite/core/session/NrSession.kt - Frame codec → Wire frames: encodes
app/src/main/java/com/swp81x/nrsuite/core/protocol/FrameCodec.kt - Device session → Connection state: updates
app/src/main/java/com/swp81x/nrsuite/core/session/NrSession.kt - Serial transport → ESP32 device: communicates
- Device session → ESP32 firmware: sends commands
README.md - Researcher → Wi-Fi modules: selects module
README.md - App controller → Client monitor: supports
app/src/main/java/com/swp81x/nrsuite/MainViewModelClientPresence.kt - Deauth detector → App controller: displays state
- AP defense → App controller: uses module state
- Portal and Evil Twin → App controller: uses module state
- BLE modules → App controller: uses module state
- App controller → Packet capture: writes captures
app/src/main/java/com/swp81x/nrsuite/MainViewModel.kt - App controller → EAPOL parser: parses frames
app/src/main/java/com/swp81x/nrsuite/MainViewModel.kt - App controller → WPA handshake tools: supports cracking
app/src/main/java/com/swp81x/nrsuite/MainViewModel.kt - App controller → Credential manager: manages
app/src/main/java/com/swp81x/nrsuite/MainViewModel.kt - App controller → Storage and BadUSB: delegates storage
app/src/main/java/com/swp81x/nrsuite/MainViewModelStorage.kt - App controller → Firmware flasher: starts flashing
app/src/main/java/com/swp81x/nrsuite/MainViewModel.kt - Firmware flasher → Flasher serial transport: uses
app/src/main/java/com/swp81x/nrsuite/core/flasher/Esp32Flasher.kt - App controller → Vendor lookup: looks up vendors
app/src/main/java/com/swp81x/nrsuite/MainViewModel.kt - App controller → Session history: persists history
app/src/main/java/com/swp81x/nrsuite/MainViewModel.kt