以下省略!

タイダルウ(ry ほぼ毎日1記事執筆運動実施中。 ※記事に広告(アフィリエイト)リンクを掲載している場合があります。

Chromecastのポート8008を突っついて情報を取得してみる

f:id:abyssluke:20160416164414p:plain:w200:leftChromecastはDIALプロトコルおよびSSDPを使っているらしい。その通信に使うTCPポート 8008宛にHTTPで特定のURLにアクセスすることでChromecastの設定情報等が得られたりする。今回はそのメモ。

ここではChromecastのIPが192.168.1.100であると仮定する。またChromecastはmDNS(avahi,Bonjour)対応なので初期設定のChromecastから名前を変えていないのであればchromecast.localでも繋がるかも。
Chromecast 1をターゲットとしているが、Chromecast 2, Chromecast Audioで通用するかどうかは不明。

SSDPでのデバイス情報

SSDP(Simple Service Discovery Protocol)用のデバイス情報を取得できる。「これはChromecastで、DIALプロトコルに対応している」という情報が入っている。

$ curl http://192.168.1.100:8008/ssdp/device-desc.xml

Chromecastの起動時間や設定情報を取得する

/setup/eureka_info?options=detailを利用する。JSONで吐き出されるので、jqコマンドがインストールされていればjqコマンドにパイプで流しこんで整形してやったほうが見やすいかも。

$ curl -s http://192.168.1.100:8008/setup/eureka_info?options=detail | jq '.'

吐き出される内容についてはこの記事の最後を参照。

参考

上記で取り上げた物の他にも再起動や初期化などのコマンドもある。
Chromecast Hacking Has Begun | fiquett.com

付録:/setup/eureka_info?options=detailで得られる情報など

jqで整形してある(一部項目は隠してある)。長いので続きを読むから。

{
  "wpa_state": 10,
  "wpa_id": 0,
  "wpa_configured": true,
  "version": 7,
  "uptime": 34.86,
  "uma_client_id": "********-****-****-****-************",
  "tos_accepted": true,
  "timezone": "Asia/Tokyo",
  "time_format": 2,
  "ssid": "ExampleAccessPoint",
  "ssdp_udn": "********-****-****-****-************",
  "signal_level": -52,
  "setup_stats": {
    "num_obtain_ip": 0,
    "num_initial_eureka_info": 0,
    "num_connected_wifi_not_saved": 0,
    "num_connect_wifi": 0,
    "num_check_connectivity": 0,
    "historically_succeeded": true
  },
  "setup_state": 60,
  "release_track": "stable-channel",
  "public_key": "(snip)",
  "has_update": false,
  "ethernet_connected": false,
  "detail": {
    "timezone": {
      "offset": 540,
      "display_string": "日本標準時 (Tokyo)"
    },
    "model_name": "Eureka Dongle",
    "manufacturer": "Google Inc.",
    "locale": {
      "display_string": "日本語"
    },
    "icon_list": [
      {
        "width": 98,
        "url": "/setup/icon.png",
        "mimetype": "image/png",
        "height": 55,
        "depth": 32
      }
    ]
  },
  "connected": true,
  "closed_caption": {},
  "cast_build_revision": "1.18.55065",
  "build_version": "55065",
  "bssid": "**:**:**:**:**:**",
  "hotspot_bssid": "**:**:**:**:**:**",
  "ip_address": "192.168.1.100",
  "locale": "ja",
  "location": {
    "longitude": 255,
    "latitude": 255,
    "country_code": "JP"
  },
  "mac_address": "**:**:**:**:**:**",
  "name": "Chromecast",
  "noise_level": -82,
  "opt_in": {
    "stats": true,
    "opencast": false,
    "location": false,
    "crash": true
  }
}