6.29. MQTT关键字

可以使用各种关键字来匹配MQTT消息的固定和可变报头中的字段以及有效负载值。

6.29.1. mqtt.protocol_version

匹配固定头中MQTT协议版本字段的值。

关键字的格式:

mqtt.protocol_version:<min>-<max>;
mqtt.protocol_version:[<|>]<number>;
mqtt.protocol_version:<value>;

实例:

mqtt.protocolu版本:5个;

6.29.2. mqtt.type

匹配MQTT消息类型(也就是:控制包类型)。有效值为:

  • CONNECT

  • CONNACK

  • PUBLISH

  • PUBACK

  • PUBREC

  • PUBREL

  • PUBCOMP

  • SUBSCRIBE

  • SUBACK

  • UNSUBSCRIBE

  • UNSUBACK

  • PINGREQ

  • PINGRESP

  • DISCONNECT

  • AUTH

  • UNASSIGNED

在哪里? UNASSIGNED 表示消息类型代码0。

实例:

mqtt.type:CONNECT;
mqtt.type:PUBLISH;

6.29.3. mqtt.flags

匹配MQTT头标志的组合,用逗号分隔 (, ). 标志的前缀可以是 ! 表示否定,即以 ! 必须 not 设置为匹配。

有效标志为:

  • dup (重复消息)

  • retain (消息应保留在代理上)

实例:

mqtt.flags:dup,!retain;
mqtt.flags:retain;

6.29.4. mqtt.qos

匹配MQTT固定头中的服务质量请求代码。有效值为:

  • 0 (开火忘记)

  • 1 (至少一次交货)

  • 2 (正好一次交货)

实例:

mqtt.qos:0;
mqtt.qos:2;

6.29.5. mqtt.reason_code

匹配MQTT 5.0中用于某些消息类型的原因代码的数值。有关这些值的含义,请参阅规范,这些值通常特定于所讨论的消息类型。

实例:

# match on attempts to unsubscribe from a non-subscribed topic
mqtt.type:UNSUBACK; mqtt.reason_code:17;

# match on publications that were accepted but there were no subscribers
mqtt.type:PUBACK; mqtt.reason_code:16;

# match on connection attempts by banned clients
mqtt.CONNACK; mqtt.reason_code:138;

# match on failed connection attempts due to bad credentials
mqtt.CONNACK; mqtt.reason_code:134;

# match on connections terminated by server shutdowns
mqtt.DISCONNECT; mqtt.reason_code:139;

此关键字也可以在别名下使用 mqtt.connack.return_code 为了完整。

6.29.6. mqtt.connack.session_present

在MQTT连接上匹配 session_present 旗子。值可以是 yestruenofalse .

实例:

mqtt.CONNACK; mqtt.connack.session_present:true;

6.29.7. mqtt.connect.clientid

匹配MQTT CONNECT消息中自分配的客户机ID。

实例:

mqtt.connect.clientid; pcre:"/^mosq.*/";
mqtt.connect.clientid; content:"myclient";

mqtt.connect.clientid 是一个“粘性缓冲区”,可以用作 fast_pattern .

6.29.8. mqtt.connect.flags

匹配MQTT CONNECT标志的组合,用逗号分隔 (, ). 标志的前缀可以是 ! 表示否定,即以 ! 必须 not 设置为匹配。

有效标志为:

  • username (邮件包含用户名)

  • password (邮件包含密码)

  • will (消息包含遗嘱定义)

  • will_retain (遗嘱应由经纪人保留)

  • clean_session (以干净的会话开始)

实例:

mqtt.connect.flags:username,password,!will;
mqtt.connect.flags:username,!password;
mqtt.connect.flags:clean_session;

6.29.9. mqtt.connect.password

匹配MQTT CONNECT消息中的密码凭据。

实例:

mqtt.connect.password; pcre:"/^123[0-9]*/";
mqtt.connect.password; content:"swordfish";

mqtt.connect.password 是一个“粘性缓冲区”,可以用作 fast_pattern .

6.29.10. mqtt.connect.username

匹配MQTT CONNECT消息中的用户名凭据。

实例:

mqtt.connect.username; content:"benson";

mqtt.connect.username 是一个“粘性缓冲区”,可以用作 fast_pattern .

6.29.11. mqtt.connect.willmessage

如果定义了will,则匹配MQTT CONNECT消息中的will消息。

实例:

mqtt.connect.willmessage; pcre:"/^fooba[rz]/";
mqtt.connect.willmessage; content:"hunter2";

mqtt.connect.willmessage 是一个“粘性缓冲区”,可以用作 fast_pattern .

6.29.12. mqtt.connect.willtopic

如果定义了will,则匹配MQTT CONNECT消息中的will主题。

实例:

mqtt.connect.willtopic; pcre:"/^hunter[0-9]/";

mqtt.connect.willtopic 是一个“粘性缓冲区”,可以用作 fast_pattern .

6.29.13. mqtt.publish.message

匹配要在MQTT发布消息中发布的有效负载。

实例:

mqtt.type:PUBLISH; mqtt.publish.message; pcre:"/uid=[0-9]+/";
# match on published JPEG images
mqtt.type:PUBLISH; mqtt.publish.message; content:"|FF D8 FF E0|"; startswith;

mqtt.publish.message 是一个“粘性缓冲区”,可以用作 fast_pattern .

6.29.14. mqtt.publish.topic

匹配MQTT发布消息中要发布到的主题。

实例:

mqtt.publish.topic; content:"mytopic";

mqtt.publish.topic 是一个“粘性缓冲区”,可以用作 fast_pattern .

6.29.15. mqtt.subscribe.topic

匹配MQTT订阅消息中订阅的任何主题。

实例:

mqtt.subscribe.topic; content:"mytopic";

mqtt.subscribe.topic 是一个“粘性缓冲区”,可以用作 fast_pattern .

6.29.16. mqtt.unsubscribe.topic

匹配MQTT UNSUBSCRIBE消息中从中取消订阅的任何主题。

实例:

mqtt.unsubscribe.topic; content:"mytopic";

mqtt.unsubscribe.topic 是一个“粘性缓冲区”,可以用作 fast_pattern .

6.29.17. 附加信息

有关协议的更多信息,请访问: