pedrodinisf/otoscope-viewer
GitHub: pedrodinisf/otoscope-viewer
通过逆向 AiSee WiFi 耳镜的私有 UDP 协议,提供一个无需手机 App 即可在桌面直接查看耳镜实时画面、截图和录影的 Python/Tk 原生查看器。
Stars: 1 | Forks: 0
# aisee — AiSee WiFi 耳镜的 Python 接收器与 Tk 查看器
为搭配 **AiSee Pro** 应用(`com.earmirror.i4season`,Beken BK7231U,
固件命名空间 `XRH`)出售的廉价 AliExpress WiFi 耳镜逆向工程
的原生 macOS 查看器。通过 UDP 传输 480×480 MJPEG 流。无需手机。
设备本身是一个接入点(开放,无密码),地址为 `192.168.1.1`。
接收器通过 `IP_BOUND_IF` 显式绑定到 `en1`,因此耳镜 Wi-Fi
可以与您的正常 Ethernet 共存 —— 观看时网络保持连接。
## 设置(一次性)
需要在 `PATH` 中包含 **uv** (https://github.com/astral-sh/uv) 和 **ffmpeg**。
```
uv sync
```
这会在本地创建 `.venv/` 并安装 Pillow。全局范围内不会安装任何内容。
## 运行
1. 打开耳镜电源。
2. 在 en1 上加入 `AiSee-xxxxx` Wi-Fi(或使用应用内的 **Join AiSee** 按钮)。
3. `uv run python -m aisee.app`
Tk 窗口将会打开,视频会在约 2 秒内出现。
- **快照** → `~/Pictures/otoscope/snap_.jpg`
- **录制** → `~/Movies/otoscope/rec_.mp4`(切换至 Stop 以完成录制)
## 测试
```
uv run python -m unittest discover tests -v
```
测试固定使用从真实设备捕获的逐字节 fixture
(`tests/fixtures/{frame_packets.bin, expected_frame.jpg, discovery_reply.bin}`)。
如果您重新抓包,请使用 `uv run python tools/extract_fixture.py` 重新生成它们。
## 协议速查表
| 步骤 | 方向 | 端口 | Payload (hex) |
|------|-----------|------|---------------|
| 发现 (Discovery) | App → Dev | UDP 10005 | `eeffeeff 00000100 01000000` |
| 发现回复 (Discovery reply) | Dev → App | UDP 10005 | `eeffeeff 00000100 010080 00 ...` (~140 B incl. `BK7231U` / `AiSee-` / MAC) |
| START | App → Dev | UDP 10006 | `eeffeeff 02000400 01000200 0000` |
| START ACK | Dev → App | UDP 10006 | `eeffeeff 02000400 01000000` |
| 视频 (Video) | Dev → App | UDP `` (src 10006) | 16-byte header ` <00/01_lastfrag> 09 01 <6-byte session-id> 80 02 e0 01` + JPEG bytes |
帧重组:剥离 16-byte header,寻找 `FF D8` (SOI) 作为帧的起始,
`FF D9` (EOI) 作为帧的结束;裁剪掉 EOI 之后的尾随零。
标签:Python, 云资产清单, 内核驱动, 医疗硬件, 无后门, 物联网, 网络协议, 视频流, 逆向工具, 逆向工程