Skip to content
Back to lab

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