{
  "added_at": "2026-11-03",
  "additional_evidence_urls": [
    "https://github.com/unixpickle/cbyge/blob/459be53a48ca75f543f9367094b778559403c1bf/controller.go",
    "https://github.com/unixpickle/cbyge/blob/459be53a48ca75f543f9367094b778559403c1bf/packet.go",
    "https://github.com/unixpickle/cbyge/blob/459be53a48ca75f543f9367094b778559403c1bf/login.go",
    "https://github.com/unixpickle/cbyge/blob/459be53a48ca75f543f9367094b778559403c1bf/server/main.go",
    "https://github.com/unixpickle/cbyge/tree/459be53a48ca75f543f9367094b778559403c1bf/proxy",
    "https://github.com/unixpickle/cbyge/blob/459be53a48ca75f543f9367094b778559403c1bf/go.mod",
    "https://github.com/unixpickle/cbyge/blob/459be53a48ca75f543f9367094b778559403c1bf/LICENSE"
  ],
  "category": "reconstruction-cases",
  "description_en": "Reimplements the cloud control path of the C by GE (now Cync) smart-bulb app as a Go library and a small self-hosted web app. The author reports decompiling the Android app with Apktool, finding its JSON HTTP API for login and device lists and a separate raw TCP protocol to the vendor's server, then working out that protocol's type-and-length message framing and packet encodings from proxied traffic and the Smali code. The resulting API lists devices, reads their status and sets power, brightness, color tone and RGB color.",
  "description_zh": "以 Go 库和一个可自行部署的小型网页应用，重新实现 C by GE（现名 Cync）智能灯泡应用的云端控制通道。作者称先用 Apktool 反编译 Android 应用，找到用于登录和设备列表的 JSON HTTP 接口，以及另一条连接厂商服务器的原始 TCP 协议，再结合代理记录的通信和 Smali 代码，推断出该协议以类型和长度开头的消息格式及各类数据包编码。最终的 API 可列出设备、读取状态，并设置开关、亮度、色温和 RGB 颜色。",
  "entry_url": "https://awesomerea.org/resources/cbyge-c-by-ge-protocol-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/cbyge-c-by-ge-protocol-case/",
  "evidence_url": "https://github.com/unixpickle/cbyge/blob/459be53a48ca75f543f9367094b778559403c1bf/README.md",
  "group": "cases",
  "id": "cbyge-c-by-ge-protocol-case",
  "json_url": "https://awesomerea.org/resources/cbyge-c-by-ge-protocol-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/cbyge-c-by-ge-protocol-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/cbyge-c-by-ge-protocol-case/index.md",
  "name": "cbyge: reconstructing the C by GE smart-bulb cloud protocol",
  "name_zh": "cbyge：重建 C by GE 智能灯泡云端协议",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "Reviewed at the 2021-11-09 main commit; there are no releases. The README states that the code was not informed by a protocol specification and may stop working or fail on some networks and devices. Only the author's own lightbulbs were examined, so the outlets, sensors and switches the same app controls were not reverse-engineered.",
    "Requires the user's own C by GE or Cync account with devices already set up in the official app; newer accounts need the email two-factor login, which the web app or the login_2fa command performs. Control goes through the vendor's cloud rather than local Bluetooth or LAN. The Android app, traffic captures and account data are not in the repository; the README quotes only short Smali excerpts and one status packet from the author's devices.",
    "Builds with Go; go.mod declares Go 1.14 and two small dependencies. The server directory serves a browser front end and a JSON API protected by an optional web password, and the repository also keeps the small TCP and HTTP logging proxies used during the investigation.",
    "There are no tests or CI. The README reports that others have used the API successfully in some cases and that the author found it faster and more reliable than the official app.",
    "BSD-2-Clause, copyright 2021 Alexander Nichol. This is an independent client, not recovered vendor source; the vendor's apps, services and trademarks keep their own rights."
  ],
  "requirements_zh": [
    "审阅对象为 2021-11-09 的 main 提交，没有发布版。README 声明代码并非依据协议规范编写，可能失效，也可能在某些网络或设备上无法工作。作者只研究了自己拥有的灯泡，同一应用可控制的插座、传感器和开关均未逆向。",
    "需要用户自己的 C by GE 或 Cync 账号，且设备已在官方应用中完成设置；较新的账号需通过邮箱双重验证登录，可由网页应用或 login_2fa 命令完成。控制经由厂商云端，而非本地蓝牙或局域网。Android 应用、通信抓包和账号数据都不在仓库中；README 只引用了少量 Smali 片段和一条来自作者设备的状态数据包。",
    "使用 Go 构建；go.mod 声明 Go 1.14 和两个小型依赖。server 目录提供浏览器前端和 JSON API，可选设置网页密码保护；仓库还保留了调查期间使用的小型 TCP 与 HTTP 记录代理。",
    "仓库没有测试或 CI。README 称已有其他人在部分情况下成功使用该 API，作者也认为它比官方应用更快、更可靠。",
    "采用 BSD-2-Clause 许可，版权归 Alexander Nichol（2021）。这是独立客户端，并非恢复出的厂商源码；厂商的应用、服务和商标保留各自权利。"
  ],
  "targets": [
    "app",
    "protocol"
  ],
  "url": "https://github.com/unixpickle/cbyge",
  "verification": "source-reviewed",
  "verified_at": "2026-10-27"
}
