An intentionally insecure MQTT IoT pipeline built to demonstrate why unencrypted and unauthenticated MQTT is dangerous.
This project simulates a water monitoring system and shows how easy it is to eavesdrop on live sensor data using standard MQTT tools.
Sensor Publisher → Mosquitto Broker → Dashboard Subscriber
Key lesson:
MQTT over port 1883 is basically a postcard.
Anyone who can reach the broker can read (and potentially inject) traffic.
- Simulates a water sensor (pressure + flow)
- Publishes JSON readings every 2 seconds via MQTT
- Displays readings in a dashboard-style subscriber
- Demonstrates wildcard subscription (
#) data exposure - Shows real-world IoT security risks in action
- Python 3
- Mosquitto (MQTT broker)
- paho-mqtt
sensor/
- sensor_publisher.py # Publishes readings every 2 seconds
- water_sensor.py # Generates pressure/flow/timestamps
dashboard/
- dashboard_subscriber.py # Formats and displays readings
docs/ # Vulnerability assessment & notes screenshots/ # Proof of interception and testing
mosquitto -v
python dashboard/dashboard_subscriber.py
python sensor/sensor_publisher.py
mosquitto_sub -t "#" -v