技ビス : 技術、ビジネス、スタートアップ

技術、ビジネス、スタートアップに関する情報と話題とアイディアと事例

ClubhouseのTech Stackを調べてみた

最近話題のClubhouseですが、だいたい遊び尽くした感じがする(※3日くらい)ので、どんな技術を使ってるのか調べてみました。一部ではありますが、下記を使ってそうです。

  • agora メディアストリーム基盤
  • AWS S3とCloud Frontを使ってそう
  • Cloudflare CDN
  • baiduドメインのなにか
  • pubnub pubsub基盤

先行して調べてた人

DNSパケットを見てagora使ってそうなことを調べてました。

zenn.dev

調査方法

Apple公式の方法でiPhoneのパケットをキャプチャできます。

developer.apple.com

DNSパケットから使ってるサービスを探し出す

アプリからどんなサービスを使っているかを探り出すのは、DNSパケットを眺めるのが一番簡単です。大抵の場合暗号化されないですし、名前解決は必ず行われるからです。この部分をキャプチャしたのが下図。

f:id:harajune:20210131202007p:plain

関連ありそうなこちらのパケットにも注目。

f:id:harajune:20210131202623p:plain

iPhoneの色々なパケットが飛ぶので他のが混ざっている可能性はあるんですが、何回かトライした結果、下記は使われていそうだなーという感想です。

  • agora メディアストリーム基盤
  • AWS S3とCloud Frontを使ってそう
  • Cloudflare CDN
  • baiduドメインのなにか
  • pubnub pubsub基盤

音声Codecは多分独自?

UDPパケットをみればCodecがわかりそうかなと思って見てみました。

写真の説明はありません。

いくつか見てみるとData長+000100で始まるのが特徴的なバイト列だということはわかるんですが、詳細は不明です。RTP+Opusとかがありがちな感じかと思ったのですが、RTPヘッダらしきものが見当たらないのでよくわかりません。

検索をしてみると、音声のストリーミングに使っているAgoraには独自Codecがあるようなのでこれかもしれません。暗号化されている可能性もなくはないのでこれ以上のことを調べるのはちょっとむずかしいかなというところでした。

docs.agora.io

もっと調べるには

もう少し深く調べるためには下記のようなことができそうです。誰か暇な人やらないかな・・・・?

  • バイナリをiPhoneから抜いてシンボルテーブルを調べる(多分使ってるライブラリがわかる)
  • Fridaをつかってアプリの挙動を調べる