fbpx
was successfully added to your cart.

嘗試逆向蘋果Lightning協議

身為一個電子逆向工程師,除了分析常標準的電子協議(SPI,I2C,UART,ISO7816 等….)
假設遇到客製化的電子協議訊號那又該如何分析?
這篇逆向工程Apple lighting 協議就是讓我們去思考頂尖硬體駭客idea
原文出自於 法國資安專家 Ramtin-amin ,OSSLab翻譯
http://ramtin-amin.fr/#tristar

 

Lightning
Lightning connector.svg

Top down view of a Lightning cable, showing the 8-pin connector
TypeData and power connector
DesignerApple Inc.
Produced2012–present
Superseded30-pin dock connector
Pins8
Pin out
Receptacle view
Pin 1GNDGround
Pin 2L0pLane 0 positive
Pin 3L0nLane 0 negative
Pin 4ID0Identification/control 0
Pin 5PWRPower (charger or battery)
Pin 6L1nLane 1 negative
Pin 7L1pLane 1 positive
Pin 8ID1Identification/control 1
Lane 0 and 1 may swap in IC of device connector (lanes don’t swap if accessory identification chip connect to ID0 pin)

Apple lightning 是單面 8針連接器。 它可以被插入兩側.從蘋果公司的專利中找到了引腳定義

在閱讀了關於連接器的一些信息之後,收集了一些信息和洩漏的技術文件,其中一個有趣的部分是這個

可以看到,實際上有4種連接器類型:

C10A USB主機
C10B USB設備
C10C SERIAL
C10D電源

因此,想先找到一個C10C 串口,試試分析串口訊號。 這個串口設備必須取得Apple MFI授權。 

 

拆開時候,我們看到它是基於帶有MFi芯片的STM32。 提取固件分析。
此STM32 ,在閃電端口的第二個通道上提供設備認證(MFI),然後將第一個通道轉發給電壓轉換器。

花了點功夫,買到C10C 連接器.

但是測試時候,用它開機時,串口訊號沒有任何回應!

從引腳說明中,Lighting接點在兩面的連接方式並不完全相同。 事實上,ACC_ID可能在兩個不同的地方。 想到的第一件事就是找到一種方法來了host 跟clinet 是如何完成電子協議通訊。 為了做到這一點,我決定使用那些沒有屏蔽的中國電纜,而且便宜。

將它們連接到邏輯分析儀,可以看到通信的一些片段

通信協議看起來像SDQ(OSSLab 曰對 這就是SDQ協議),它是一種單線協議。 不同的是,在1-Wire中,時鐘由主控完成。 在SDQ中,Master發送請求並給它發送時鐘,然後從設備也一樣。 通信始終從兩個可能的ACC_ID中的一個開始。

所以看起來好像是一個偶數的數字(第一個是0x74)發送一個命令,並且用一個奇數(CMD + 1)的奇數發送一個響應。(0x75)為了使它更好,我們需要看看 tristar

在看一些中國的網上商店時,他們實際上是做了一 Lighting Reader:

tristar (CBTL1608A1)

找到了一些原理圖後,在這裡我們可以看到tristar(CBTL1608A1) 是如何連線的

看來tristar是一個MUX 多工器,可以處理:

  • Mikey(用於prime)
  • BB調試USB(基帶)
  • SoC USB(片上插座)
  • 附件UART(C10C在這裡)
  • 調試UART(非常有興趣)
  • BB UART(基帶UART)
  • JTAG(SWD是ARM串行線調試器)

另一方面,我們可以看到幾乎所有的Lighting街口:ACC_ID 1,2以及PAIR1和PAIR2。 在看芯片時:

這是一個非常小的WLCSP (晶圓級晶粒尺寸封裝IC),看起來像一個0.35毫米間距的36球的BGA!

有趣的是它通過I2C連接到SoC。 為了弄清楚它是如何連接的,並最終確定是否有可能嗅探I2C,有必要解開Tristar以及SoC。

有趣的部分是,發現了i2c的測試點! 唯一的問題是,它只接受1.8電壓。 電壓轉換器是必要的。 但是這個必須應付i2c所使用的開放。

強化tristar的解決方案之一就是每次發送一個序列並查看mux是如何完成的。 為了做到這一點,要連接到tristar。 但芯片太小,沒有測試腳座。

在這張照片中,我們可以看到球柵。 每個外殼= 0.1mm,所以芯片不大於2.5×2.5mm

通過放大,我們甚至可以看到下面的DIE。

我設計了一個帶有盲孔4層的PCB適配器。 間隙是0.1mm。 只有激光精密工具可以用於此,使其非常昂貴。

第一批已經創建。 然後tristar用回流焊爐焊接在它上面

 

可以從那裡觸發一個對應於連接器連接的中斷,發送對應於某個連接器ID的序列,然後測試左邊的每個連接,看它是否連接到PAIR1 / PAIR2。

連接器仿真

為了模擬連接器,我寫了一些STM32F4Discover板的代碼。 它基本上以我嗅探它的方式實現了一個SDQ協議。 然後,我回應電話的要求。 為了做到這一點。 我不得不找到一些中國的連接器製造商同意出售我一些

然後,我創建的一些PCB可以切換閃電的兩側,因此可以在兩個方向上插入連接器

現在連接電纜到一個3.3V / 1.8V的電壓轉換器

Thx Chang

Author Thx Chang

More posts by Thx Chang

Leave a Reply