Lab Project 06 / Embedded / Network Tooling
ESP32 SMB SCANNER
C++ • Arduino-ESP32 • FreeRTOS • TCP/445 • Python • PySerial
TCP/445 probe prototype
Project insight
Overview
An ESP32 network-probing prototype paired with a Python/PySerial controller for authorized host or subnet checks on TCP port 445.
Problem
A small embedded probe needs a clear way to accept scan commands and report observations to a desktop without confusing open ports with verified services.
My Contribution
Built Arduino C++ firmware with a FreeRTOS scan task, WiFiClient probes, a compact serial report format, and a Python CLI with timestamped logs.
Main Technologies
- C++
- Arduino-ESP32
- FreeRTOS
- WiFiClient
- TCP/445
- Python
- PySerial
Key Technical Decisions
- Separated scan work into a FreeRTOS task while the main loop handles serial commands.
- Reported observations in six-byte frames: 0xAB, four IPv4 bytes, and one status byte.
- Used bounded TCP connection and response waits, with the Python controller decoding and logging status reports.
Challenges and Solutions
- Moving compact scan observations from firmware to a readable desktop interface.
- Paired fixed-format serial reports with a PySerial reader and CLI logging.
Outcome
Implemented the firmware-to-CLI path for targeted and subnet TCP/445 probes with serial status reporting and logs.
Limitations / Verification Boundary
- Response bytes do not validate SMB identity, dialect, or a successful negotiation; the firmware does not parse the response protocol.
- A failed TCP/445 connection does not establish that the host itself is unreachable, despite the internal TARGET_UNREACHABLE status name.
- No vulnerability testing, exploitation, or security certification is implemented.
- Use only on networks you own or are authorized to test. The portfolio demonstration is simulated and sends no network probes.
Evidence / Sources
Interactive Walkthrough
Local educational sample only. No deployed backend, hardware connection, network scan, or embedded interpreter.
Walkthrough not running