AI Engineer Europe 2026 · 演講 · 2026-05-29 · 20 分
用 Claude Code 破解老電話的協定
Reverse engineering a Viking VOIP phone protocol with Claude Code · Boris Starkov,ElevenLabs
Boris Starkov 要讓一支只有 Windows XP 軟體可用的老 Viking 電話接上語音 agent,過程交給 Claude Code 掃 port、暴力試指令、攔封包,最後做成開源 skill。
概要
- 老硬體卡在軟體Viking 電話只有 Windows XP 相容的軟體,ElevenLabs 沒人有 Windows 筆電,虛擬機又有驅動問題。舊金山團隊一年前買了它,三位資深工程師加上當時的 ChatGPT 都沒弄起來。
- 先讓 Claude Code 自己摸索Boris 用路由器把筆電接上電話,Claude Code 掃出可用的 port,送了一串隨機字串後發現電話會回 error 加上原字串,推斷這是一套兩個字母的指令協定。
- 暴力試出可用指令它寫程式把兩個字母的組合全部試過,多數回 error,有 80 個回了別的東西。設定值能寫進去卻不會留下,只存在暫存記憶,卡了好幾個小時。
- 改用中間人攔封包Claude Code 建議架 Windows 虛擬機,再在 Mac 上放一個 TCP proxy 轉送並記錄原廠軟體與電話之間的流量,從中看到之前不認得的 TS 指令,以及只有一個 byte 的 checksum。
- 逆向完做成 skill搞懂協定與存入長期記憶的指令序列後,電話可以直接重設並程式化,不必再開虛擬機。Boris 把這些整理成 skill 開源。
- 人當 Claude 的手Boris 說自己不是資安工程師,沒有 Claude Code 這個 demo 做不出來,過程中只是照指示操作,卡住時靠實體重開機或操作虛擬機來解開。
原話
▶ 14:49“Without cloud code, it wouldn't be possible to do that demo.”
沒有 Claude Code,這個 demo 做不出來
▶ 15:09“It just made it possible because I'm not a security engineer whatsoever.”
它讓這件事變得可能,因為我完全不是資安工程師
▶ 17:41“So it was like I was actually the agent for Claude. Claude was orchestrating the whole thing.”
我其實是 Claude 的 agent,整件事由 Claude 在指揮
▶ 18:36“I mean, it was just smarter than me, I think.”
我是說,我覺得它就是比我聰明
延伸
- Boris 說如果用 computer use,也許能讓 Claude 直接操控虛擬機、完全閉環,但嫌麻煩,這次是自己照 Claude 的指示動手。
- Boris 說最痛苦的是逆向那一段,花了幾天;也刻意不說自己 hack 了電話,而說是逆向工程。
章節
點時碼直接跳到原片的那一段。
- 開場與電話亭 demoBoris 來自 ElevenLabs,平常做語音 agent。會場三樓的電話亭,拿起電話會接到一個用 Michael Caine 聲音的 AI agent,問五題英國 AI 歷史,答對至少一題可拿 ElevenLabs 的小禮物。
- 電話的老問題這支電話只有 Windows XP 相容軟體,團隊沒人有 Windows 筆電,虛擬機也遇到驅動問題;舊金山團隊一年前買下,三位資深工程師加上 ChatGPT 都沒弄通。
- 目標:逆向硬體想示範 Claude Code 不只拿來做應用程式,也能逆向硬體;連這場的投影片都是它依整段對話做的。
- 系統接法與網路電話只能撥號碼,所以中間放 Twilio 處理 SIP,再接 ElevenLabs;Boris 用路由器把筆電接上電話開始探索。
- 掃 port 找到入口Claude Code 先列出所有可用 port,第一個是錯的,換下一個才是能跟電話溝通的目標。
- 發現兩字母指令送隨機字串會得到 error 加原字串,網路上也查不到協定文件,Claude Code 由此推斷指令是兩個字母。
- 暴力試遍組合寫程式試過每一種兩字母組合,多數回 error,有 80 個回了別的東西,其中有些從名稱看得出用途。
- 設定寫了卻不存要把撥號用的憑證寫進電話記憶體,指令都被接受,但只進了暫存記憶;試了好幾個小時,連三字母指令都試過,仍是死路。
- 死路之後改攔封包一年前舊金山團隊與當時的 ChatGPT 就卡在這步,這次 Claude Code 提議架 Windows 虛擬機跑原廠軟體。虛擬機沒有網路,Claude Code 在 Mac 上架 TCP proxy,讓原廠軟體的流量經過它轉給電話並全部記錄下來。
- 看懂 TS 與 checksum攔到之前不懂的 TS 指令,格式大多看得懂,只有 checksum 例外;它只有一個 byte,可以用已知資料與結果推回來,並用更多值驗證。
- 存進長期記憶整理出指令清單與一段能把設定存進長期記憶的指令序列,電話等於破解完成。
- 做成 skill 開源有了協定就能直接重設電話、不必再跑虛擬機,Boris 把這些寫成 skill 開源,有 Viking 電話的人叫 Claude Code 就能用。
- 學到的兩層結構協定分兩層:加密只是單 byte checksum,算幸運;要持久化則得在虛擬機與電話之間放中介伺服器。沒有 Claude Code 就做不出這個 demo。
- 可延伸到其他硬體以前得靠廠商的專有軟體介面,現在連上去的方式就跟家裡其他硬體一樣,Boris 認為這做法不限於 Viking。
- Q&A:花費與人當 Claude 的手用公司的 token,估計在 10 到 100 美元之間。Boris 說整個過程只是照指令做,例如聽電話有幾聲嗶,自己像是 Claude 的手;卡關時靠實體重開機或操作虛擬機,破解演算法的部分則是自己解不了。
- Q&A:實體接線電話靠 PoE 一條線供電與網路,中間接一台路由器;筆電透過 Wi-Fi 連同一台,Claude Code 第一步就是掃出路由器上的裝置而找到電話。
名詞
- Viking phone
- 這場的主角,一支老舊的 VOIP 電話,原廠只提供 Windows XP 相容的軟體
- ElevenLabs
- Boris 任職的公司,平常做語音 agent,電話亭背後接的就是它的對話式 AI agent
- Claude Code
- Boris 拿來掃 port、試指令、分析封包的工具,投影片也是它做的
- Twilio
- 夾在電話與 ElevenLabs 之間,負責處理 SIP domain 的複雜度
- TCP proxy
- 架在 Mac 上的轉送程式,讓虛擬機裡的原廠軟體經它連到電話,同時記錄全部流量
- checksum
- 指令尾端的檢查值,這支電話只用一個 byte,Boris 說因此可以暴力試出規則
- PoE
- Power over Ethernet,一條網路線同時供電與傳資料,電話就是這樣接上路由器








