コンテンツにスキップ

Impacket mqtt_check.py

カテゴリ目次へ戻る / コマンド全体目次へ戻る

MQTT ブローカーに CONNECT を送り、匿名接続の可否と応答内容を確認します。

項目内容
実装examples/mqtt_check.py
カテゴリMSSQL / Exchange / MQTT
規模84 行
配布setup.py の scripts=examples/*.py によりスクリプトとしてインストール

オプションの最新の定義は python examples/mqtt_check.py -h で確認できます。

引数説明
--helpshow this help message and exit
target[[domain/]username[:password]@]
-client-idClient ID used when authenticating (default random)
-sslturn SSL on
-portport to connect to (default 1883)
-debugTurn DEBUG output ON
-tsAdds timestamp to every logging output

target、client ID、port、TLS option から socket を作り、MQTT CONNECT packet を送信します。CONNACK を受信・parse し、return code から接続可否を表示して socket を閉じます。

MQTT client は最初の packet として CONNECT を送り、broker は CONNACK で protocol acceptance と authentication result を返します。このコマンドは username/password 認証を試す tool ではなく、client ID と clean-session 等を 含む最小 CONNECT で anonymous 接続の可否を確認します。

MQTT fixed header の remaining length は可変長 encoding で、CONNECT payload には protocol name/version、connect flags、keepalive、UTF-8 client ID が 順番に入ります。impacket.mqtt の structure がこれを組み立て、socket/TLS 経路が指定 port へ送ります。受信時は少なくとも完全な CONNACK frame が揃う まで読み、return code を解釈します。

TCP 接続成功、TLS handshake 成功、MQTT protocol acceptance、anonymous authorization は別の段階です。旧/new MQTT version 不一致や identifier rejected を「authentication required」と誤解しないようにします。短い packet、過大な remaining length、broker による即時 close も明示的な結果として扱います。

シンボル位置責務を追う入口
MQTT_LOGIN32__init__()、run()
モジュール使用する主な名前
impacketversion
impacket.exampleslogger
impacket.examples.utilsparse_target
impacket.mqttCONNECT_ACK_ERROR_MSGS, MQTTConnection
  • 照会や認証の試行が中心です。実行回数が多いと監査ログやアカウントロック、対象の負荷に影響します。
  • 入力ファイルがない場合、壊れている場合、読み取りが途中で終わる場合、未対応の形式だった場合を区別します。

impacket.mqtt と標準 socket/TLS に依存し、MQTT_LOGIN.run() が packet exchange を所有します。MQTT remaining-length と短い/不正な応答を検証し、TLS handshake error と broker rejection を区別してください。

  • 構文: python -m py_compile examples/mqtt_check.py
  • CLI: python examples/mqtt_check.py -h
  • このコマンド専用のテストは見つかりません。共有モジュールのテストと、必要に応じて隔離環境での動作確認を選びます。