Analyzing IQOS BLE communication and capturing BLE traffic on macOS | 129th Yurui Security Conference
by
V V V
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
電子タバコ IQOSのReverse Engineering および macOSにおけるBLE Packetの解析手法 2026/03/27 Hikaru (@nonnil)
[email protected]
IQOS CLI
Slide 2
Slide 2 text
Agenda ● Profile ○ Daily Driver ● IQOSの主な機能 ○ IQOSアプリの問題点 ● ● 2
Slide 3
Slide 3 text
Profile Hikaru ● Age ○ 2002/06/07 23歳 ● 所属 ○ 慶應義塾大学環境情報学部 ○ 早應AI株式会社 シニアエンジニア ● Handle ○ nil, nonnil, John Paul, 0day.is, VVX Supp, B0b Supp, 炒炒, mel0n ● すき ○ お酒、たばこ、ポーカー、コンピュータ、セキュリティ 3 @nonnil @nilpotent_ @unittype
Slide 4
Slide 4 text
Daily Driver ● Linux Distribution ○ Fedora Workstation ● Browser ○ Orion Browser, Helium ● Text Editor ○ VSCode, Helix ● Lang ○ Rust, Go, Nim ● Terminal ○ Ghostty ● keyboard ○ HHKB Studio ● Keyboard layout ○ UK ● VPN ○ Mullvad 4
Slide 5
Slide 5 text
IQOSの主な機能 ● IQOS公式Webアプリで各種設定のカスタマイズが可能 ○ Webアプリと IQOSはBluetoothもしくは USB経由で接続 5
Slide 6
Slide 6 text
IQOSアプリの問題 ● Sessionのlifetimeが短い ○ そのため頻繁に Signinをする必要がある ● IQOSアカウントが必要 ○ アカウント作成にあたって身分証明書による年齢確認を問われるが、 オンラインだと認証プロセスが不安定でアカウントを作成できない事例が 多数観測される ↑ぼくはアカウント作成のために IQOS Shop横浜店まで行った ● 接続時のloadが長い ○ 設定をカスタムするまでに時間がかかりすぎる ● 当然Internet接続がないと使えない 6
Slide 7
Slide 7 text
IQOSを便利にして 喫煙体験を最大化したいな〜 7 Bluetoothはどのように通信しているのだろう?
Slide 8
Slide 8 text
BLE(Bluetooth Low Energy) Packet 解析の準備 (macOS篇) 事前準備 ● Mac ● Xcode 1. Apple Developerのダウンロードページから Additional Tools for Xcodeをダウンロードして Install時にPacket Loggerを選択 2. Apple DeveloperのProfiles and Logsから該当するデバイスの Profileをダウンロード 3. System Settings.appの”VPNとデバイス管理 ”でProfileをInstall 4. Packet Loggerを起動 8 簡単だね
Slide 9
Slide 9 text
BLEの通信方法 9 Central(Client) Peripheral(Server) ここにおるよー Advertise どこにいる? Scan Connect ● 接続を開始する側 ● データ要求(Read, Write, Subscribe)を送る ● 接続を待ち受ける側 ● データ(Service / Characteristic)を提供する
Slide 10
Slide 10 text
BLEのデータ 10 Service ● 機能単位のグループ ● 複数のCharacteristicをまとめる Characteristic ● 実際のデータを持つ最小単位 ● Value + Propertiesなどで構成される Connect/PairingしたあとにCentralはこれらを PeripheralからDiscoverする ServiceとCharacteristicはUUIDで識別される
Slide 11
Slide 11 text
BLEにおけるデータアクセス 11 CharacteristicにRequestを送ることで実現 Requestの種類 ● Read(値の取得) ● Write(値の更新、応答あり) ○ Write Without Response(応答なし) ● Notify(非同期通知、ACKなし) ● Indicate(非同期通知、ACKあり)
Slide 12
Slide 12 text
Bluetooth Protocol Stack GAP(Generic Access Profile) ● Advertise / Scan / Connectのrole管理 GATT(Generic Attribute Profile) ● Service / Characteristicベースのデータモデル定義 ● ATTを包含する ATT(Attribute Protocol) ● GATTの通信手法 (Read/Write/Notify) ● GATTに包含される 12
Slide 13
Slide 13 text
IQOSのデータを見ていくぞ〜 13
Slide 14
Slide 14 text
Characteristicの設計パターン 14 TX/RX Characteristic ● 1つまたは少数の Characteristicにコマンドや データを多重化 ● vendor-specific実装でよく見 られる Discrete Characteristic ● 1 Characteristic = 1機能 ● Bluetooth SIG標準Profileでよく見られる
Slide 15
Slide 15 text
IQOS: TX/RX Characteristic 15
Slide 16
Slide 16 text
LIXIL Ohea Lock(おへやろっく ): Discrete Characteristic 16
Slide 17
Slide 17 text
IQOSへどのように書き込みを行うか 17 Offset 0 1 2 3 4 5 6 7 8 Hex 0x00 0xC0 0x46 0x23 0x64 0x00 0x00 0x00 0x4F Padding Padding Padding Checksum フレーム 開始固定値 Target Sub Cmd ID 輝度値 Cmd ID C0: Stick C9: Holder 64: 100% 1E: 30% Char ID: e16c6e20-b041-11e4-a4c3-0002a5d5c51b
Slide 18
Slide 18 text
IQOS CLI 18 ● IQOSアプリの機能をほとんどSupport ● PacketのOverheadがないため高速 ● Telemetry dataを閲覧可能 ● Find My IQOSが有効
Slide 19
Slide 19 text
スターください! 19 ● Firmware updateに対応させたい ● USB接続のSupport ○ IQOSからBluetooth廃止の予兆を感じてる ● IQOSのFirmwareをReverse Engineeringしたい IQOS CLI https://github.com/V-VX/iqos_cli
Slide 20
Slide 20 text
20