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
旗子。值可以是 yes
, true
, no
或 false
.
实例:
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. 附加信息¶
有关协议的更多信息,请访问: