SmartConfig 技術(shù)原理_第1頁
SmartConfig 技術(shù)原理_第2頁
SmartConfig 技術(shù)原理_第3頁
SmartConfig 技術(shù)原理_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、SmartConfig技術(shù)原理簡單來說,這是一種讓你可以在沒有和其他設(shè)備(支持SmartConfig技術(shù))建立任何性質(zhì)的通訊鏈路的情況下,配置該設(shè)備接入wifi網(wǎng)絡(luò)虛構(gòu)一個實際場景的話,會是這樣:你購買了一個帶有wifi的攝像頭,不過這個攝像頭沒有usb,沒有以太網(wǎng),沒有藍牙,沒有nfc,gsm就更不可能了,只有wifi,那么問題來了:你如何配置這個攝像頭接入你家的wifi?乍一想,沒有數(shù)據(jù)鏈路,如何進行數(shù)據(jù)交換?對的,SmartConfig就是用在這種場景下的,如果這個攝像頭的wifi支持SmartConfig技術(shù),那么你只需這樣幾個步驟攝像頭插上電源安裝制造商提供的手機app(應(yīng)用無需任何

2、特殊權(quán)限,只需要手機當前是接入wifi的)在攝像頭附近打開app,輸入你家wifi的密碼,點擊確認,稍等片刻,?不出意外的話,攝像頭已經(jīng)接入你家wifi了這項技術(shù)由德州儀器提出,并且應(yīng)用在自己的CC300O系列芯片上.不過,從原理上來說,支持混雜模式的wifi芯片都可以應(yīng)用該技術(shù)猜想首先,你可能會聯(lián)想到是不是這個app控制了手機,讓手機主動接入攝像頭的wifi網(wǎng)絡(luò),然后交換數(shù)據(jù).這確實是一個行得通的辦法,但是卻不實用,控制操作系統(tǒng)更換當前的網(wǎng)絡(luò)連接是敏感操作,普通的app沒這個權(quán)限,那么就需要用戶參與其中,對于一般的用戶而言,這樣的流程就顯得復(fù)雜且難以理解了這樣看來,攝像頭并沒有和你控制的任何

3、一個設(shè)備建立任何性質(zhì)的連接一般來說,我們潛意識里會默認通訊都是雙向的,以這個習(xí)慣來看待SmartConfig似乎覺得匪夷所思其實,在這種場景下,我們只需要能夠把wifi的名稱和密碼告訴攝像頭就行了,攝像頭有沒有回饋并不重要順著這個思路,我們發(fā)現(xiàn)可以這么做,手機app上生成一個包含wifi名稱和密碼的二維碼,然后放置在攝像頭前,攝像頭只要識別了二維碼自然就可以接入wifi但是,掃二維碼的方式依賴視頻信號輸入,并不是通用的手段(因為現(xiàn)實場景中的設(shè)備并不都是攝像頭),而且場景里也沒有采用這種做法這么分析下來,傳播wifi信息的渠道只可能是wifi本身了攝像頭尚未接入wifi,況且wifi也是加密的,

4、app并沒有能力控制wifi的底層通訊,app又是如何將信息成功外泄給攝像頭的?共識理解SmartConfig原理前需要說兩個共識無線數(shù)據(jù)的傳播形式必定是廣播至少目前是這樣,因為我所知道的能做到點對點的無線傳輸只有量子隱形傳輸,可惜還在實驗室中既然是廣播,那么必然可以被監(jiān)聽,就像一個酒吧里有兩個中國人和兩個俄羅斯人,中國人和中國人說話,俄羅斯人聽得到,只不過聽不懂,反之亦然任何可控的模式都可以被用于編碼,用于數(shù)據(jù)交換當前wifi應(yīng)用的幾種主流加密方式都存在一個特點,明文的長度和加密后的密文長度之間是線性關(guān)系即:密文長度=明文長度+算法相關(guān)的常量C,也就是說,只要明文長度可控,密文的長度即是可控

5、的這個特點是SmartConfig的核心原理原理如果了解的幀格式,你就知道,鏈路層載荷數(shù)據(jù)(即網(wǎng)絡(luò)層頭部及網(wǎng)絡(luò)層數(shù))在數(shù)據(jù)幀中是清晰可辨的,只要接收到幀就可以立刻提取出載荷數(shù)據(jù),計算載荷數(shù)據(jù)的長度自不用說,而這里的載荷數(shù)據(jù),通常就是密文常見的兩種數(shù)據(jù)幀格式:=顧:阪tF-JffAPtoStation密文長度有了,接下來我們看一下明文的結(jié)構(gòu)普通權(quán)限的應(yīng)用程序是沒有能力完全控制和定義傳輸層及下層所有協(xié)議數(shù)據(jù)的,唯一可以完全控制的就是應(yīng)用層數(shù)據(jù),那就繼續(xù)分析一下TCP/IP協(xié)議棧中的網(wǎng)絡(luò)層和傳輸層的數(shù)據(jù)結(jié)構(gòu)常用的網(wǎng)絡(luò)層協(xié)議非IPv4莫屬,IPv4的頭部絕大多數(shù)情況下都是定長的20字節(jié),長度幾乎完全可

6、控傳輸層協(xié)議我們選擇UDP,因為UDP協(xié)議頭部為定長的8字節(jié),完全可控(當然,選擇UDP還有別的原因)這么看來,我們有能力完全控制明文的長度明文長度=20+8+應(yīng)用層數(shù)據(jù)長度密文長度也脫口而出密文長度=20+8+應(yīng)用層數(shù)據(jù)長度+?算法相關(guān)的常量C如果我需要你發(fā)出一個密文長度為1000字節(jié)的幀,那么你只需要在UDP中塞滿任意(1000-20-8-C)個字節(jié)即可接下來,只要我們利用可控的密文長度定義一張編碼表即可將數(shù)據(jù)告訴任何知道這張編碼表的設(shè)備了原理說完了,按照這個原理,幾乎可以實現(xiàn)任意數(shù)據(jù)的傳播,至于SmartConfig采用何種編碼,沒必要關(guān)心流程示例我們定義一張編碼表,簡單示意一下整個過程

7、:密文長度=映射釋義1234=起始符;連續(xù)的3個起始符,用于表示數(shù)據(jù)傳輸開始1324=結(jié)束符;連續(xù)的3個結(jié)束符,用于表示數(shù)據(jù)傳輸結(jié)束110=間隔符;連續(xù)的2個間隔符,用于表示數(shù)據(jù)符之間的間隔=數(shù)據(jù)符;表示ASCII0 x00=數(shù)據(jù)符;表示ASCII0 x011127=數(shù)據(jù)符;表示ASCII0 x7F假設(shè)我們要把字符串”CJey”(密碼)告訴攝像頭,整個流程大致如下:(假設(shè)常量C為16)手機app部分:打開手機app,在輸入框中填入要發(fā)送的字符串”CJey”,點擊發(fā)送app連續(xù)發(fā)送三個UDP廣播包,填充數(shù)據(jù)為1190個0 x00字節(jié)(1234-16-20-8=1190),表示傳輸開始app發(fā)送一

8、個UDP廣播包,填充數(shù)據(jù)為1023個0 x00字節(jié)(1067-16-20-8=1023),傳輸字符Capp連續(xù)發(fā)送兩個UDP廣播包,填充數(shù)據(jù)為66個0 x00字節(jié)(110-16-20-8=66),表示數(shù)據(jù)間隔app發(fā)送一個UDP廣播包,填充數(shù)據(jù)為1030個0 x00字節(jié)(1074-16-20-8=1030),傳輸字符Japp連續(xù)發(fā)送兩個UDP廣播包,填充數(shù)據(jù)為66個0 x00字節(jié)(110-16-20-8=66),表示數(shù)據(jù)間隔app發(fā)送一個UDP廣播包,填充數(shù)據(jù)為1057個0 x00字節(jié)(1101-16-20-8=1057),傳輸字符eapp連續(xù)發(fā)送兩個UDP廣播包,填充數(shù)據(jù)為66個0 x00字

9、節(jié)(110-16-20-8=66),表示數(shù)據(jù)間隔app發(fā)送一個UDP廣播包,填充數(shù)據(jù)為1077個0 x00字節(jié)(1121-16-20-8=1077),傳輸字符yapp連續(xù)發(fā)送三個UDP廣播包,填充數(shù)據(jù)為1280個0 x00字節(jié)(1324-16-20-8=1280),表示傳輸結(jié)束從1開始循環(huán)多次,直到超時或者攝像頭成功接入wifi,向app匯報成功攝像頭部分:攝像頭通電,沒有可用的wifi,進入混雜模式,開始監(jiān)聽信號覆蓋范圍內(nèi)的所有wifi數(shù)據(jù)幀捕獲數(shù)據(jù)幀,如果連續(xù)收到3個密文長度為1234,且來自于同一個發(fā)射源X的數(shù)據(jù)幀,則進入下一步,否則重復(fù)2捕獲發(fā)射源X的數(shù)據(jù)幀,持續(xù)捕獲密文長度為110或

10、者1000-1127之間的數(shù)據(jù)幀,直到捕獲到連續(xù)3個密文長度為1324的數(shù)據(jù)幀將上述數(shù)據(jù)幀按照編碼表進行映射,由于手機app并非是獨占網(wǎng)絡(luò),所以捕獲到的數(shù)據(jù)可能有噪音,比如解碼出來的結(jié)果可能是(/表示分隔符):ACX/J/oe/ymmm如果沒有噪音,記為候選數(shù)據(jù)RC,重復(fù)捕獲X,進行二次驗證,通過則表示接收完成,沒通過也重復(fù)捕獲X,將這次所得結(jié)果同上一次做交集,循環(huán)如此直到得出唯一結(jié)果,即RC,之后再重復(fù)5由于捕獲的數(shù)據(jù)幀頭部信息中已經(jīng)包含了wifi的bssid信息,使用”CJey”作為密碼去嘗試連接相應(yīng)的wifi,成功則向app報告,失敗則繼續(xù)重復(fù)2混雜模式(PromiscuousMode)

11、混雜模式(PromiscuousMode)是指一臺機器能夠接收所有經(jīng)過它的數(shù)據(jù)流,而不論其目的地址是否是他。是相對于通常模式(又稱“非混雜模式”)而言的。這被員使用來診斷網(wǎng)絡(luò)問題,但是也被無認證的想偷聽(其可能包括和其它敏感的信息)的人利用。一個非路由選擇節(jié)點在混雜模式下一般僅能夠在相同的(對和無線)內(nèi)監(jiān)控通信到和來自其它節(jié)點或環(huán)(對令牌環(huán)或FDDI),其是為什么網(wǎng)絡(luò)被用于對抗惡意的混雜模式?;祀s模式就是接收所有經(jīng)過網(wǎng)卡的,包括不是發(fā)給本機的包。默認情況下網(wǎng)卡只把發(fā)給本機的包(包括廣播包)傳遞給上層程序,其它的包一律丟棄。簡單的講,混雜模式就是指網(wǎng)卡能接受所有通過它的數(shù)據(jù)流,不管是什么格式,什

12、么地址的。事實上,計算機收到數(shù)據(jù)包后,由網(wǎng)絡(luò)層進行判斷,確定是遞交上層(傳輸層),還是丟棄,還是遞交下層(數(shù)據(jù)鏈路層、MAC子層)轉(zhuǎn)發(fā)。通常在需要用到,例如、capsa時,需要把網(wǎng)卡置于混雜模式,需要用到軟件Winpcap。winpcap是windows平臺下一個免費,公共的網(wǎng)絡(luò)訪問系統(tǒng)。開發(fā)winpcap這個項目的目的在于為Win32應(yīng)用程序提供訪問網(wǎng)絡(luò)底層的能力。對于廣播式集線器(Hub)來說,假如PC1、PC2、PC3接在同一個Hub上,當PC1給PC3發(fā)送包時,Hub將廣播這個包,所以PC2實際上也可以看到這個包,但一般情況下它會將這個發(fā)給PC3的包丟棄,但如果處于混雜模式,PC2的網(wǎng)

13、卡驅(qū)動程序就不會丟棄這個包,而是把這個包送給上層的驅(qū)動程序,應(yīng)用程序。簡單的說,網(wǎng)卡的混雜模式是為而提供的。網(wǎng)卡具有如下的幾種工作模式:1)廣播模式(BroadCastModel):它的物理地址(MAC)地址是OXffffff的幀為廣播幀,工作在廣播模式的網(wǎng)卡接收廣播幀。2)多播傳送(MultiCastModel):多播傳送地址作為目的物理地址的幀可以被組內(nèi)的其它主機同時接收,而組外主機卻接收不到。但是,如果將網(wǎng)卡設(shè)置為多播傳送模式,它可以接收所有的多播傳送幀,而不論它是不是組內(nèi)成員。3)直接模式(DirectModel):工作在直接模式下的網(wǎng)卡只接收目地址是自己Mac地址的幀。4)混雜模式(

14、PromiscuousModel):工作在混雜模式下的網(wǎng)卡接收所有的流過網(wǎng)卡的幀,信包捕獲程序就是在這種模式下運行的。網(wǎng)卡的缺省工作模式包含廣播模式和直接模式,即它只接收廣播幀和發(fā)給自己的幀。如果采用混雜模式,一個站點的網(wǎng)卡將接受同一網(wǎng)絡(luò)內(nèi)所有站點所發(fā)送的數(shù)據(jù)包這樣就可以到達對于網(wǎng)絡(luò)信息監(jiān)視捕獲的目的。Sniffer類的軟件一般都采用將網(wǎng)卡設(shè)置成混雜模式來獲取數(shù)據(jù)包,設(shè)為混雜模式之后,因為網(wǎng)卡會接收所有能夠接收到的數(shù)據(jù),所以這個時候的數(shù)據(jù)量非常大,所以在設(shè)置為混雜模式同時,一般要設(shè)置過濾條件。sniffer之類的軟件將網(wǎng)卡設(shè)置為混雜模式,只是供自己監(jiān)聽數(shù)據(jù)(根據(jù)用戶的要求自動設(shè)置過濾條件),在這類軟件退出之后會自動將網(wǎng)卡還原為正常工作模式。具體到編程實現(xiàn)上,這種對網(wǎng)卡混雜模式的設(shè)置是通過原始套接字(rawsocket)來實現(xiàn)的,這也有別于通常經(jīng)常使用的數(shù)據(jù)流套接字和數(shù)據(jù)報套接字。在創(chuàng)建了原始套接字后,需要通過setsockopt()函數(shù)來設(shè)置IP頭操作選項,然后再通過bind()函數(shù)將原始套接字綁定到本地網(wǎng)卡。為了讓原始套接字能接受所有的數(shù)據(jù),還需要通過ioctlsocket()來進行設(shè)置,而且還可以

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論