Pular para o conteúdo
Todos os conceitos

MQTT

Um protocolo leve de publicar e assinar mensagens por tópicos, muito usado em aparelhos de IoT.

No MQTT, os aparelhos não falam direto uns com os outros: todos se conectam a um servidor central, o broker, normalmente na porta TCP 1883 (8883 com TLS). Quem tem algo a dizer publica (PUBLISH) uma mensagem num tópico, um nome com barras como casa/sala/temperatura; quem quer ouvir assina (SUBSCRIBE) o tópico, e o broker repassa.

Mensagem Para que serve
CONNECT o cliente se apresenta (identificador, usuário e senha, se houver)
PUBLISH envia uma mensagem num tópico; o conteúdo pode ser texto, JSON ou binário
SUBSCRIBE pede para receber um tópico (aceita curingas + e #)
PUBACK confirma o recebimento de uma publicação
sensor broker porta 1883 celular assinou o tópico 1 · SUBSCRIBE 2 · PUBLISH 3 · o broker repassa PUBLISH sem TLS, em claro tópico casa/sala/temperatura conteúdo texto, JSON ou binário
O celular assina o tópico, o sensor publica nele e o broker repassa a mensagem; sem TLS, o tópico e o conteúdo passam em claro.

Sem TLS, tudo passa em claro: o Wireshark mostra usuário, senha, tópico e conteúdo. Filtros úteis: mqtt, mqtt.topic contains "casa". No terminal:

tshark -r captura.pcap -Y mqtt.topic -T fields -e mqtt.topic -e mqtt.msg

O campo mqtt.msg sai em hexadecimal; se for texto, o From Hex do CyberChef (abre em nova aba) mostra. Muitos sistemas mandam conteúdo binário estruturado, como protobuf (o formato de mensagens do Google), que o Protobuf Decode do CyberChef abre mesmo sem o esquema. O Meshtastic, por exemplo, publica cada pacote da rede de rádio em tópicos msh/....

Aparece nestes desafios