日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

狗汪汪玩转嵌入式——I2C 协议分析

發(fā)布時(shí)間:2023/12/10 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 狗汪汪玩转嵌入式——I2C 协议分析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
雷鋒網(wǎng)(公眾號(hào):雷鋒網(wǎng))按:嵌入式產(chǎn)品Hacking?一直都是備受關(guān)注的議題,而越來越多的攻擊者也瞄上了物聯(lián)網(wǎng)嵌入式設(shè)備。跟以往純軟件安全研究不同的是,這類研究往往需要結(jié)合相應(yīng)的硬件知識(shí)和設(shè)備。如何能快速入門嵌入式系統(tǒng)?雷鋒網(wǎng)邀請(qǐng)了狗汪汪,分享針對(duì)I2C協(xié)議的實(shí)戰(zhàn)案例和相應(yīng)的工具使用。希望可以一起來Hacking?all?the?Things。

本文由阿里云先知社區(qū)小冰推薦。

0x01?I2C協(xié)議基礎(chǔ)

凡是接觸過嵌入式系統(tǒng)的朋友,對(duì)I2C協(xié)議一定不會(huì)陌生。其與UART,SPI和JTAG等并列為最常見調(diào)試協(xié)議。I2C?全稱為Inter-Integrated?Circuit,是由飛利浦公司設(shè)計(jì)的一種多主從架構(gòu)的串口通訊協(xié)議。

I2C協(xié)議非常簡(jiǎn)單,僅有Clock?和?Data?兩條數(shù)據(jù)總線,外加?Ground.?通常是1個(gè)主設(shè)備和多個(gè)從設(shè)備的架構(gòu)。在通訊速度上分別為100khz,400khz,1Mhz,3.2Mhz。在運(yùn)用方面對(duì)速度沒有高要求的,都可以使用I2C進(jìn)行通訊。比如PC風(fēng)扇的溫度和電池的電壓數(shù)據(jù)采集等,每個(gè)I2C設(shè)備都各有一個(gè)讀和寫地址,只有知道了這個(gè)讀寫地址才能跟其通訊。

除此之外許多用來存儲(chǔ)系統(tǒng)配置和參數(shù)的EEPROM芯片自身也支持I2C協(xié)議,比如IBM?Thinkpad?系列用來存儲(chǔ)BIOS?密碼的EEPROM,就是通過I2C協(xié)議在MCU與EEPROM?之間進(jìn)行交互。

0x02?神器BusPirate

工欲善其事必先利其器,擁有一款神器對(duì)嵌入式設(shè)備Hacking將起到事半功倍的作用。BusPirate?是由Dangerous?prototypes?設(shè)計(jì)出品的一款硬件hacking?瑞士軍刀,支持多項(xiàng)常見協(xié)議并可跨平臺(tái)Windows/Linux/MAC,并擁有豐富的幫助文檔。

BusPirate可以Sniffing?和讀寫?I2C等協(xié)議,同時(shí)還可對(duì)AVR?等芯片進(jìn)行編程操作,在操作上也是非常簡(jiǎn)單,只需用minicom?以115200?波特率跟BusPirate連接便可。

BusPirate支持協(xié)議如下:

BusPirate?接口連接示意圖:

BusPirate?命令列表:

0x03?攻擊案例?--?數(shù)字密碼鎖

接下來我們來看一個(gè)通過分析I2C?協(xié)議,從而破解門鎖密碼的實(shí)戰(zhàn)案例,我們的目標(biāo)是這款?型號(hào)為YL99?的數(shù)字密碼鎖。這款密碼鎖完全依賴于用戶設(shè)置的數(shù)字密碼,也許對(duì)某些人來說不需要帶一堆鑰匙的確方便了很多。

因?yàn)閅L99?是完全電子化的的門鎖,所以提供了普通機(jī)械鎖沒有的功能。比如YL99?擁有多?個(gè)功能不同的賬戶,Master?賬戶:可用于設(shè)置管理用戶密碼(默認(rèn)0123#)。普通賬戶:用于存儲(chǔ)普通用戶密碼。YL99?同時(shí)還提供了貼心的防密碼泄漏功能,操作方法:鍵入起始碼(0)?+?跟隨用于掩蓋的任意幾位數(shù)字+?跟隨正確密碼?+?#?(確認(rèn)結(jié)束).?通過這樣的方式就算邊上有人,也不怕被看到正確密碼了。

但是千里之堤,潰于蟻穴。YL99?的設(shè)計(jì)缺陷,竟能讓人從外部將鎖的鍵盤部分分離,從而訪問到內(nèi)部PCB?主板。而玩過硬件Hacking?的朋友都知道,被人輕易訪問到內(nèi)部PCB?主板部分是大忌。

在YL99被打開后主板結(jié)構(gòu)便展現(xiàn)眼前。除了YL99?使用的元器件外,我們還可以清晰看到主板上還標(biāo)有一個(gè)Reset?復(fù)位觸點(diǎn)。那么這個(gè)時(shí)候我們便可以通過短接復(fù)位觸點(diǎn)和Ground?的方式將密碼恢復(fù)到出廠設(shè)置,從而得到bypass?的目的。但這方法的短處也非常明顯,在bypass?的時(shí)候每次都需要卸螺絲,而且如果恢復(fù)到出廠值,很容易就被人發(fā)現(xiàn)了。

演示視頻如下:?https://www.youtube.com/watch?v=4sqDXkUQbqM

不過好戲才剛開始。我們?cè)谥靼迳线€發(fā)現(xiàn)了YL99使用的MCU?em78p156e?和用來存儲(chǔ)密碼信息的EEPROM?24C02。通過閱讀24C02?的datasheet?我們得知其使用I2C?協(xié)議和MCU?通訊,同時(shí)datasheet?也清晰的標(biāo)出了芯片管腳的用途,比如I2C?使用的SCL(時(shí)鐘頻率)?和SDA(數(shù)據(jù)總線)。

終于我們的神器BusPirate要派上用場(chǎng)了。我們首先用數(shù)據(jù)線將24C02的I2C?管腳和BusPirate的對(duì)應(yīng)接口連接起來。

隨后通過minicom?或其他serial?tools?進(jìn)入Buspirate的I2C調(diào)試模式。

在I2C?的調(diào)試模式中,有個(gè)非常有用的功能I2C?sniffer。通過它我們可以監(jiān)控I2C?的數(shù)據(jù),用過WIRESHARK?的朋友一定不會(huì)陌生。

開啟了I2C?Sniffer?模式后,我們便可開始觀察MCU?和?EEPROM之間的密碼交互。比如YL99?的密碼輸入過程為起始碼(0)?+?正確密碼?+?結(jié)束確認(rèn)(#)。


通過觀察發(fā)現(xiàn)在按下結(jié)束確認(rèn)(#)?后,MCU?便向24C02?發(fā)送密碼驗(yàn)證請(qǐng)求。但隨后致命的設(shè)計(jì)錯(cuò)誤出現(xiàn),EPPROM?24C02?將正確的密碼以明文的方式發(fā)回給MCU?以求完成密碼驗(yàn)證過程,而這過程我們通過BusPirate?的I2C?sniffer一覽無遺。

▲如圖:因?yàn)槭褂玫膌ittle?endian?所以密碼?123?和456?會(huì)反著顯示

0X04?總結(jié)

通過本文的介紹和實(shí)踐案例,相信大家對(duì)I2C?協(xié)議和利用方式有了一定的了解。劍走偏鋒,反其道行之。攻擊者往往將系統(tǒng)的短板作為攻擊點(diǎn),倘若某款嵌入式系統(tǒng)的設(shè)計(jì)者僅僅考慮到軟件層面的安全,而攻擊者又能得到物理訪問的話,那些防御方式便形同虛設(shè)。同時(shí)嵌入式產(chǎn)品往往面臨上市后便難以升級(jí)的困難,一旦攻擊方式曝光由此給產(chǎn)品帶來的損失是巨大的,因此安全產(chǎn)品在設(shè)計(jì)之初即應(yīng)將安全考慮進(jìn)去。

本文作者:又田
本文轉(zhuǎn)自雷鋒網(wǎng)禁止二次轉(zhuǎn)載,原文鏈接

總結(jié)

以上是生活随笔為你收集整理的狗汪汪玩转嵌入式——I2C 协议分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。