Skip to main content

身為一個電子逆向工程師,除了分析常標準的電子協議(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
Type Data and power connector
Designer Apple Inc.
Produced 2012–present
Superseded 30-pin dock connector
Pins 8
Pin out
Receptacle view
Pin 1 GND Ground
Pin 2 L0p Lane 0 positive
Pin 3 L0n Lane 0 negative
Pin 4 ID0 Identification/control 0
Pin 5 PWR Power (charger or battery)
Pin 6 L1n Lane 1 negative
Pin 7 L1p Lane 1 positive
Pin 8 ID1 Identification/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。


Redpark:
--------
74:75 08 c0 00 00 00 00 9f 
76:77 01 25 01 00 86 71 35 38 54 3a 39 
78:79 46 31 31 34 31 33 32 31 37 53 31 46 36 39 4b 42 41 00 5e 88 7e 
7a:7b 43 30 38 34 32 35 37 41 38 50 39 46 39 34 48 31 45 00 38 08 b8 
72:73 80 00 c0 00 87 

C10C:
--------
74:75 08 c0 00 00 00 00 9f 
76:77 01 25 01 00 a3 2a 49 34 18 0d 6b 
78:79 44 57 48 35 37 31 34 31 52 5a 46 4c 39 35 31 42 5a 00 04 08 99 
7a:7b 46 43 39 34 31 38 35 30 43 4c 37 46 57 4c 38 42 4c 00 30 00 57 
72:73 80 00 c0 00 87 


OTG Orignial:
-----------------
74:75 11 f0 00 00 00 00 d6 
76:77 01 25 01 80 8c 7b 19 25 01 c8 a4 
78:79 44 57 48 32 34 34 35 32 41 36 5a 46 35 4c 34 41 47 00 97 88 7b 
7a:7b 43 30 38 32 34 38 35 30 41 4a 39 44 59 37 50 41 56 00 30 00 32 
72:73 80 00 c0 00 87 


OTG fake (chinese):
--------------
74:75 11 f0 00 00 00 00 d6 
76:77 01 25 01 80 97 01 6f 25 5f 6b 90 
78:79 44 57 48 32 34 34 37 32 5a 30 54 46 35 4c 34 41 46 00 6b 88 01 
7a:7b 43 30 38 32 34 36 36 30 32 37 34 44 59 37 50 41 43 00 30 00 3e 
72:73 00 00 c0 00 5e 


HDMI:
---------------
74:75 0b f0 00 00 00 00 42 
76:77 01 25 01 80 ac 38 af 44 26 3e 25 
78:79 44 59 47 34 32 38 31 35 46 4a 45 46 36 4c 47 32 44 00 fa 88 13 
7a:7b 43 43 34 34 33 31 34 31 30 44 31 44 59 37 48 41 47 00 20 00 de 
72:73 80 00 c0 00 87

Chinese Sync
-----
74:75 10 0c 00 00 00 00 66
76:77 01 25 01 80 b0 25 83 25 5a d0 f2
78:79 46 31 31 32 36 33 35 51 31 58 4b 46 35 56 39 41 36 00 d7 88 cd
7a:7b 43 34 4d 32 34 37 34 30 47 4c 50 46 37 43 30 41 39 00 33 08 ba
72:73 00 00 c0 00 5e

連接器仿真

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

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

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

Leave a Reply