基于arm的無線局域網安全監(jiān)測系統(tǒng)設計與開發(fā)_第1頁
已閱讀1頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  本科畢業(yè)設計</b></p><p><b> ?。?013屆)</b></p><p> 題 目基于ARM的無線局域網安全監(jiān)測系統(tǒng)設計與開發(fā)</p><p> 學 院</p><p> 專 業(yè)</p><p> 班 級&

2、lt;/p><p> 學 號</p><p> 學生姓名</p><p> 指導教師</p><p> 完成日期</p><p><b>  摘 要</b></p><p>  近幾年來,網絡技術發(fā)展日新月異,正向著更快、更穩(wěn)定和更安全的方向發(fā)展。其中以無線技術為依

3、托的無線網絡的發(fā)展尤其引人注目。無線接入技術在國內外得到了迅速的發(fā)展,無線接入技術的產品目前已經得到了廣泛應用。但是,由于無線網絡的特殊性,攻擊者無須物理連線就可以對其進行攻擊,使WLAN的安全問題顯得尤為突出。</p><p>  本次設計實現了一個基于ARM嵌入式平臺的非法Access Point檢測系統(tǒng)。文章將詳細敘述基于ARM11的嵌入式Linux系統(tǒng)平臺的搭建工作,如何編寫基于Linux的WIFI字符驅

4、動,如何利用ARM的外設WIFI模塊實現對非法AP的檢測與報警。選擇ARM平臺的原因是目前在便攜式嵌入式設備中ARM是其中比較出色的一個(目前基本上占據了手持終端市場)。Linux是一個開放源代碼的系統(tǒng),幾乎支持所有主流的CPU,移植性相當好,十分利于開發(fā),大大地縮短了開發(fā)的周期。</p><p>  關鍵詞:無線局域網;嵌入式Linux;ARM;非法AP</p><p><b>

5、;  ABSTRACT</b></p><p>  Nowdays, the network technology has a rapid development and is becoming faster, more stable and safer. Wireless LAN technology as the basis of the development of wireless netwo

6、rks is particularly noteworthy. Wireless access technology at home and abroad has been rapid development of wireless access technology products has been widely used. However, due to the special nature of the wireless net

7、work, the attackers can attack the network without a physical connection, so WLAN security problem is pa</p><p>  The aim of this design is to detect rogue Access Point with an ARM-based embedded platform. T

8、he article will describe in detail about the ARM11 embedded Linux system platform`s implementation, how to write the WIFI character Linux-based drive, how to use ARM peripherals WiFi module on rogue AP detection and alar

9、m. Select the ARM platform, for ARM is a good portable embedded devices (basically occupied the handset market). Linux is an open source system and supports almost all CPUs, transplantati</p><p>  Key words:

10、Wireless LAN;embedded linux;ARM;rogue AP</p><p><b>  目 錄</b></p><p><b>  1 引言1</b></p><p><b>  1.1 背景1</b></p><p>  1.2 目的及意

11、義1</p><p>  1.3 主要研究內容4</p><p>  2 系統(tǒng)開發(fā)平臺5</p><p>  2.1 系統(tǒng)平臺選擇5</p><p>  2.2 嵌入式Linux平臺搭建6</p><p>  3 系統(tǒng)分析與設計15</p><p>  3.1 系統(tǒng)設計思

12、路15</p><p>  3.2 系統(tǒng)需求分析16</p><p>  3.3 系統(tǒng)設計17</p><p>  4 系統(tǒng)功能實現19</p><p>  4.1 文件功能模塊分析19</p><p>  4.2 傳輸與接收功能模塊分析21</p><p>  4.3

13、報警功能模塊分析24</p><p>  4.4 系統(tǒng)總體功能分析26</p><p>  5 系統(tǒng)測試34</p><p>  5.1 文件獲取測試34</p><p>  5.2 文件發(fā)送測試34</p><p>  5.3 文件接收測試35</p><p>  5.4

14、 目標區(qū)域IP顯示測試35</p><p>  5.5 短信報警測試35</p><p>  6 總結與展望37</p><p><b>  致謝38</b></p><p><b>  參考文獻39</b></p><p><b>  1 引言&

15、lt;/b></p><p><b>  1.1 背景</b></p><p>  20世紀90年代以來,網絡技術的應用直接影響著億萬人的生活方式。尤其在近幾年,隨著智能化、信息化的快速發(fā)展,物聯(lián)網技術應用于各個領域,其中對信息的傳輸以射頻技術為主,無線局域網絡(WLAN)是相當便利的數據傳輸系統(tǒng),它利用射頻技術,取代銅線所構成的有線網絡,能夠利用簡單的存取架

16、構,使用戶透過它可以達到“信息隨身化、便利走天下”的境界,所以WLAN技術無疑是一個比較理想的選擇。如今,在大規(guī)模的企業(yè)、學校中,使用無線局域網技術解決數據傳輸的問題,相比于其他方案有著巨大的優(yōu)勢,導致其迅速得到普及。</p><p>  Wireless LAN的優(yōu)點:</p><p><b>  安裝部署靈活性好;</b></p><p>

17、  即插即用,接入方便;</p><p><b>  自由移動;</b></p><p><b>  應用前景廣。</b></p><p>  最有前景的Internet接入網技術:</p><p>  2005年,有超過80%的筆記本電腦配有WLAN接口;</p><p>

18、  ISP在機場、大型會議中心、商業(yè)中心、甚至咖啡店等熱點場所提供WLAN 接入;</p><p>  很多城市正在大力建設無線城市,在大力普及WLAN。像杭州,2012年已經在很多地段覆蓋了免費的WIFI,人們可以很方便的通過手持終端上網。</p><p>  圖1-1 傳統(tǒng)的WLAN的架構</p><p>  1.2 目的及意義</p><

19、p>  隨著無線局域網(WLAN)廣泛應用于大學校園、各類展覽會、公司內部乃至家用網絡等場合。由于無線網絡的特殊性,攻擊者無須物理連線就可以對其進行攻擊,使WLAN的安全問題顯得尤為突出。對于大部分公司來說,WLAN通常置于防火墻后,黑客一旦攻破防火墻就能以此為跳板,攻擊其他內部網絡,使防火墻形同虛設。與此同時,由于WLAN國家標準WAPI的無限期推遲,IEEE 802.11網絡仍將為市場的主角,但因其安全認證機制存在極大安全隱患

20、,無疑讓WLAN的安全狀況雪上加霜。WLAN的流行主要是由于它為使用者帶來方便,然而正是這種便利性引出了有線網絡中不存在的安全問題。比如,攻擊者無須物理連線就可以連接網絡,而且任何人都可以利用設備竊聽到射頻載波傳輸的廣播數據包。因此,著重考慮的安全問題主要有:</p><p>  針對IEEE 802.11網絡采用的有線等效保密協(xié)議(WEP)存在的漏洞,進行破解攻擊。</p><p>  

21、惡意的媒體訪問控制(MAC)地址偽裝,這種攻擊在有線網中同樣存在。</p><p>  對于含AP模式,攻擊者只要接入非授權的假冒AP,就可登錄欺騙合法用戶。</p><p>  攻擊者可能對AP進行泛洪攻擊,使AP拒絕服務,這是一種后果嚴重的攻擊方式。此外,對移動自組網模式內的某個節(jié)點進行攻擊,讓它不停地提供服務或進行數據包轉發(fā),使其能源耗盡而不能繼續(xù)工作,通常稱為能源消耗攻擊。<

22、/p><p>  非法AP是指未經授權而接入有線網絡的802.11無線接入點(Wireless Access Point)。其大多數為內部人員所安裝的未經授權的AP。非法AP一般不為網絡管理員所知,而且往往沒有進行任何安全策略的配置,不遵守本地網絡中的安全協(xié)議,這就導致無線網絡毫無安全性可言,極易受到攻擊。具體的,其危害性主要表現在如下幾個方面:</p><p><b>  (1)惡

23、意攻擊者</b></p><p>  黑客在攻擊無線網絡時無需獲得有線網絡物理通道,也無需通過受防火墻和</p><p>  網關保護的企業(yè)局域網網絡邊界,它可直接通過接入企業(yè)網絡內部任何一個未設</p><p>  置安全策略的AP或安全性較弱的AP進入內部網絡。這樣,他們就與那些已授</p><p>  權使用內部網絡的合法用

24、戶一樣,對整個網絡有一定的訪問權限。入侵者能夠做</p><p>  合法用戶能做的任何事情,從而乘機進入企業(yè)有線網絡,竊取企業(yè)機密信息或發(fā)</p><p>  起惡意攻擊??紤]到無線局域網如此脆弱的安全性,許多涉及機密信息的關鍵機</p><p>  構或金融公司都不在其內部網絡中鋪設無線局域網,并且會禁用無線局域網。然</p><p> 

25、 而,即使在這樣的網絡中,非法設備也是一個需要機構內部網絡管理人員重視的</p><p>  問題,例如由內部人員安裝的未經授權的AP,雖然他們是沒有惡意企圖的,但</p><p>  卻在無意中為惡意攻擊者訪問內部網絡提供了有利機會,這對企業(yè)網安全必造成嚴重的威脅。</p><p><b>  (2)惡意竊聽者</b></p>

26、<p>  非法AP的另一個威脅來自于惡意竊聽者??紤]一個已授權的無線終端周圍存在非法AP的情況,由于802.11無線網卡在自動選擇AP時,會選擇在其信號覆蓋范圍內信號強度最強的AP接入,因而,當非法AP的信號強度超過這個無線終端周圍的已授權AP時,該無線終端就可能會在用戶并不知曉的情況下自動切換至非法AP。由于非法AP大多都是沒有進行任何安全配置的,機構內部人員通過該AP通信時,其信息皆以明文傳輸。此時,當網絡中存在惡意竊聽

27、者時,其敏感信息將因明文傳輸而泄密,這對于企業(yè)和個人的信息安全來說都是非常危險的。</p><p><b>  (3)信號干擾</b></p><p>  非法AP使用者在安裝非法AP時,一般是不會考慮其所在信道是否與相鄰AP存在頻譜相交的問題的,然而,在無線局域網中,如果距離較近的相鄰AP各自所在信道是相交信道時,就會發(fā)生頻譜干擾,WLAN中的通信質量隨之降低。因而

28、,非法AP的存在很可能對與之相鄰的己授權AP的服務質量造成不良影響,干擾正常通信。由以上的分析可以看出,非法AP現已成為無線安全中的重要問題。為了更好的保護無線局域網的網絡安全,非法AP檢測已成為網絡管理的重要內容之一,并得到了學術界和工業(yè)界的重視,提出了一些檢測方法。</p><p>  圖1-2 非法AP示例圖</p><p>  當企業(yè)內部網絡中有用戶未經授權私自安裝無線接入點,即非

29、法AP時,就會在無意中為惡意攻擊者提供入侵企業(yè)內部網絡的后門,給內網安全造成極大的威脅。為了使無線局域網遠離非授權訪問,非法AP檢測已成為機構內網管理的重要內容之一。由此可見,檢測出無線局域網中的非授權AP是保證這個無線局域網內部用戶能夠進行安全的數據通信的必要前提。</p><p>  圖1-3 分布式入侵檢測系統(tǒng)</p><p>  1.3 主要研究內容</p><

30、;p>  1.3.1嵌入式linux的移植</p><p>  通過搭建ARM嵌入式Linux系統(tǒng),學習嵌入式Linux開發(fā)的流程,了解并且編寫硬件相關驅動代碼,深入了解Linux內核相關知識,學習安裝交叉編譯工具,并且按照項目要求配置、裁剪、編譯內核,將二進制zImage文件燒寫到ARM11開發(fā)板上,完成開發(fā)平臺的搭建。</p><p>  (1)驅動程序的編寫</p>

31、<p>  由于本項目要使用到WIFI模塊,要編寫其驅動程序,方便系統(tǒng)在軟件層次就可以操作此模塊。</p><p><b>  (2)內核的配置</b></p><p>  將編寫好的驅動程序添加到linux內核源代碼中,配置內核。</p><p>  (3)內核的編譯與燒寫到開發(fā)板。</p><p>  

32、安裝好交叉編譯工具,修改相關的配置,編譯內核,然后將其移植到ARM11開發(fā)板上。</p><p>  1.3.2非法Access Point的檢測</p><p>  (1)通過偵聽數據包來檢測所有正在使用的AP的ESSID和STA。</p><p>  (2)發(fā)現AP后,根據合法AP認證列表(ACL)判斷該AP是否合法,如果列表中沒有列出該新檢測到的AP的相關參數

33、,就可以判定是非法AP。</p><p>  (3)檢測到非法AP,得到非法AP列表。</p><p>  1.3.3 SOCKET文件傳輸</p><p>  建立socket連接,將此文件傳輸服務器控制臺,啟動報警模塊,通知管理員處理相關問題。</p><p><b>  2 系統(tǒng)開發(fā)平臺</b></p>

34、;<p>  2.1 系統(tǒng)平臺選擇</p><p>  說起嵌入式平臺,目前主流的有ARM和FPGA。FPGA主要用于邏輯控制領域,實現硬件上對數據的處理,包括數據加密解密、數據包的過濾、圖像處理等等,可以搭載軟核如Nios、microblaze、openrisc等來實現比較簡單的系統(tǒng)控制。但是對于實現較為復雜的,系統(tǒng)指令處理速度要求比較高的系統(tǒng),FPGA則達不到要求。ARM處理器是一款哈佛架構(

35、RISC)的處理器,其低功耗、高性能,集成許多IP核,可以應用于眾多領域,使ARM處理器迅速得到普及。最新的Cortex-A系列的芯片,主頻可以達到1.5GHz以上,滿足了許多嵌入式設備對數據處理的要求,ARM的芯片主要包括微處理器、微控制器、DSP、JAVA應用系統(tǒng)、浮點運算處理等等,可以解決眾多領域的問題。本次設計采用S3C6410微處理器,由ARM1176 處理器,幾個多媒體協(xié)處理器和各種外設IP 組成。ARM1176 處理器是通

36、過64 位 AXI 總線連接到幾個內存控制器上的。這樣做是為了滿足帶寬需求。它為2.5G 和3G通信服務提供優(yōu)化的H /W性能,采用了64/32位內部總線架構,該64/32位內部總線結構由AXI、AHB和APB 總線</p><p>  嵌入式操作系統(tǒng)具有通用操作系統(tǒng)的基本特點,但是其有實施高效性、硬件的相關依賴性、軟件固態(tài)化以及應用的專用性等等較為突出的優(yōu)點。當今,嵌入式系統(tǒng)所搭載的操作系統(tǒng)平臺大致如下:<

37、;/p><p>  (1)WinCE。其是微軟開發(fā)的一個開放的、可升級的32位嵌入式操作系統(tǒng),是基于掌上型電腦類的電子設備操作系統(tǒng)。WinCE用戶界面很出色,和桌面版的Windows基本一致。WinCE具有模塊化、結構化和基于Win32應用程序接口以及與處理器無關等特點。WinCE上編程可以像Windows上一樣,基本沒差別。最新版本是WinCE7.0是微軟.NET最新家庭成員,可以使.NET開發(fā)者快速地進行開發(fā)。&

38、lt;/p><p> ?。?)Vxwork。其是美國WindRiver公司開發(fā)的一種嵌入式實時操作系統(tǒng)(RTOS),是嵌入式開發(fā)環(huán)境的關鍵組成部分。良好的持續(xù)發(fā)展能力、高性能的內核以及友好的用戶開發(fā)環(huán)境,在嵌入式實時操作系統(tǒng)領域占有一席之地。憑借其優(yōu)良的性能被應用于軍事、航空航天領域。然而其開發(fā)成本、維護成本過高,支持的硬件數量有限。</p><p> ?。?)Linux。其最早創(chuàng)立于1991

39、年,短短十幾年的發(fā)展。Linux已經成為一個功能強大、穩(wěn)定性可靠的操作系統(tǒng)。嵌入式Linux是標準Linux在嵌入式系統(tǒng)上的移植,繼承了標準Linux的優(yōu)良特征,是近年來發(fā)展的熱點。嵌入式Linux的熱點有:</p><p> ?、匍_放源代碼。Linux最大的特點是源代碼公開并且遵循GPL協(xié)議,人們可以任意修改以滿足自己的應用。其大量優(yōu)秀的開發(fā)工具,同樣遵循GPL協(xié)議。</p><p> 

40、?、诟咝阅?、可裁剪的內核。內核設計十分優(yōu)秀,運行時所需的資源少,而且穩(wěn)定有效。獨特的模塊機制可以將用戶的模塊動態(tài)地插入內核或者卸載,能夠應付復雜的任務需求。</p><p> ?、蹆?yōu)秀的網絡功能。Linux支持所有標準的網絡協(xié)議,并且很容易移植到目標系統(tǒng)。</p><p>  基于Linux系統(tǒng)的眾多優(yōu)勢,本次設計采用Linux系統(tǒng)。</p><p>  2.2

41、嵌入式Linux平臺搭建</p><p>  2.2.1 交叉編譯環(huán)境的搭建</p><p>  交叉編譯的任務主要是在一個平臺上生成可以在另一個平臺上執(zhí)行的程序代碼。不同的CPU需要有不同的編譯器。交叉編譯如同翻譯一樣,它可以把相同的程序代碼翻譯成不同的CPU對應語言。</p><p>  圖2-1 交叉編譯模型</p><p>  本文

42、使用的主機操作系統(tǒng)是CentOS,先安裝標準的C開發(fā)環(huán)境,由于Linux安裝默認是不安裝的,所以需要先安裝一下,終端輸入命令:</p><p>  yum install gcc g++ libgcc1 libg++ make gdb</p><p>  本文使用的是開發(fā)板自帶的交叉編譯器,即cross-4.3.2交叉編譯器,只需將arm-linux-4.3.2.bar.bz2解壓:&l

43、t;/p><p>  tar xvjf arm-linux-4.3.2.bar.bz2</p><p>  創(chuàng)建目錄/usr/local/arm并將解壓好的cross-4.3.2拷貝到此目錄下。</p><p>  mkdir /usr/local/arm</p><p>  cp cross-4.3.2 /usr/local/arm –r<

44、;/p><p>  設置PATH環(huán)境變量,使其可以找到其交叉編譯工具鏈,然后運行:</p><p>  vi ~/.bashrc 添加如下內容:</p><p>  export PATH=/usr/local/armarm-linux-3.3.4/bin:$PATH。</p><p>  執(zhí)行source ~/.bashrc。</p>

45、;<p>  至此交叉編譯環(huán)境搭建完畢??梢栽诮K端中輸入:arm-linux-gcc-4.3.2 –v查看所安裝的交叉編譯器是否安裝及其查看其版本。</p><p>  圖2-2 交叉編譯器信息</p><p>  2.2.2 主機控制目標板的方式</p><p>  控制口采用串口,下載安裝C-kermit工具。在根目錄~下建立配置文件.kermr

46、c。內容如下:</p><p>  set line /dev/ttyUSB0</p><p>  set speed 115200</p><p>  set carrier-watch off</p><p>  set handshake none</p><p>  set flow-control none&

47、lt;/p><p><b>  robust</b></p><p>  set file type bin</p><p>  set file name lit</p><p>  set rec pack 1000</p><p>  set send pack 1000</p>

48、<p>  set window 5</p><p>  保存退出,重新啟動終端,以根用戶運行kermit,就可以自動與目標板連接。</p><p><b>  圖2-3 串口信息</b></p><p>  2.2.3 U-Boot的配置與編譯</p><p>  U-Boot,全稱Universal Bo

49、ot loader,是遵循GPL條款的開放源代碼項目。從FADSROM、8XXROM、PPCBOOT逐步發(fā)展演化而來。其源代碼目錄、編譯形式與Linux和內核很相似,其實,很多U-Boot源碼就是相應的Linux內核源代碼的簡化,尤其是一些設備的驅動。U-Boot源代碼可以從Sourceforge獲得。</p><p>  U-Boot的優(yōu)勢:①開放源碼;②支持多種嵌入式操作系統(tǒng)內核,如Linux、NetBSD,

50、 VxWorks, QNX, RTEMS, ARTOS, LynxOS;③支持多個處理器系列,如PowerPC、ARM、x86、MIPS、XScale;④較高的可靠性和穩(wěn)定性;⑤高度靈活的功能設置,適合U-Boot調試、操作系統(tǒng)不同引導要求、產品發(fā)布等;⑥豐富的設備驅動源碼,如串口、以太網、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、鍵盤等;⑦較為豐富的開發(fā)調試文檔與強大的網絡技術支持;</p>&l

51、t;p>  本文的目標板是S3C6410,要對下載的U-Boot源碼u-boot-2010.03.tar.bz2做一定的修改。具體步驟如下:</p><p>  (1)解壓后進入board/samsun目錄下,建立新文件夾smdk6410,將smdk6400里的所有文件復制到smdk6410中,進入smdk6410文件夾將smdk6400.c更名為smdk6410.c,并且打開此文件,將里面的6400全部改

52、為6410。打開Makfile,將里面的6400改為6410。</p><p>  (2)進入到nand_spl/board/sansung/,新建smdk6410,復制smdk6400內容到smdk6410,將Makefile文件里面的6400全部改成6410。</p><p>  (3)進入到 u-boot-2010.03根目錄,打開Makefile,將CROSS_COMPILE ?=

53、改成為CROSS_COMPILE ?=arm-linux-,然后替換6400為6410。</p><p>  (4)修改啟動代碼。打開cpu/arm1176/start.s,根據芯片文檔,在對應的位置進行修改。</p><p>  (5)修改include/configs/smdk6410.h</p><p>  添加#ifdef CONFIG_ENABLE_MMU

54、</p><p>  #define virt_to_phys(x) virt_to_phy_smdk6410(x)</p><p><b>  #else</b></p><p>  #define virt_to_phys(x) (x)</p><p>  #define NAND_DISABLE_CE() (NFC

55、ONT_REG |= (1 << 1))</p><p>  #define NAND_ENABLE_CE() (NFCONT_REG &= ~(1 << 1))</p><p>  #define NF_TRANSRnB() do { while(!(NFSTAT_REG & (1 << 0))); } while(0)</p&g

56、t;<p>  (6)修改cpu/arm1176下的u-boot.lds,結果如下:</p><p>  (7)修改include\smdk6410.h,添加相關u-boot命令,MAC地址、IP地址、SERVERIP地址、網關、子網掩碼等等信息。</p><p>  (8)執(zhí)行make smdk6410</p><p>  編譯結束,根目錄下會有一個

57、u-boot.bin的文件,將此文件下載到目標板中,斷電,重新啟動板子,會有如下信息:</p><p>  圖2-3 u-boot啟動信息</p><p>  2.2.4 SDIO WIFI驅動</p><p>  SDIO即就是安全數字輸入輸出接口,是本次無線WIFI模塊要用到的接口。SDIO在SD標準上定義了一種外設接口。SDIO總線和USB總線類似,SDIO也

58、有兩端,其中一端是HOST端,另一端是device端。所有的 通信 都是 由HOST端 發(fā)送命令開始的,Device端只要能解析命令,就可以相互通信。</p><p><b>  電路圖如下:</b></p><p>  圖2-4 SDIO_WIFI部分電路圖</p><p>  MMC1_CLK信號是HOST給DEVICE的 時鐘信

59、號,每個時鐘周期傳輸一個命令。</p><p>  MMC1_CMD信號是雙向的信號,用于傳送命令和反應。</p><p>  MMC1_DAT0- MMC1_DAT3 信號是四條用于傳送的數據線。</p><p>  VDD_WIFI信號是電源信號。</p><p>  SDIO總線上都是HOST端發(fā)起請求,然后DEVICE端回應

60、請求。sdio命令由6個字節(jié)組成。Command:用于開始傳輸的命令,是由HOST端發(fā)往DEVICE端的。其中命令是通過CMD信號線傳送的。 Response:回應是DEVICE返回的HOST的命令,作為Command的回應。也是通過CMD線傳送的。Data:數據是雙向的傳送的??梢栽O置為1線模式,也可以設置為4線模式。數據是通過DAT0-DAT3信號線傳輸的。SDIO的每次操作都是由HOST在CMD線上發(fā)起一個CMD,對于有的CMD,

61、DEVICE需要返回Response,有的則不需要。對于讀命令,首先HOST會向DEVICE發(fā)送命令,緊接著DEVICE會返回一個握手信號,此時,當HOST收到回應的握手信號后,會將數據放在4位的數據線上,在傳送數據的同時會跟隨著CRC校驗碼。當整個讀傳送完畢后,HOST會再次發(fā)送一個命令,通知DEVICE操作完畢,DEVICE同時會返回一個響應。對于寫命令,首先HOST會向DEVICE發(fā)送命令,緊接著DEVICE會返回一個握手信號,此

62、時,當HOST收到回應的握手信號后,會將數據放在4位的數據線</p><p>  下面來分析Linux驅動。在/include/linux/mmc/host.h下有幾個重要的結構體,位于core核心層,主要用于核心層與主機驅動層 的數據交換處理。struct mmc_host 用來描述卡控制器,struct mmc_card 用來描述卡,struct mmc_driver 用來描述&

63、#160;mmc卡驅動,struct sdio_func用來描述 功能設備,struct mmc_host_ops 用來描述卡控制器操作接口函數功能,用于從主機控制器層向 core 層注冊操作函數,從而將core 層與具體的主機控制器隔離。也就是說 core 要操作主機控制器,就用這個 ops 當中給的函數指針操作,不能直接調用具體主控制器的函數。</

64、p><p>  編寫Host層驅動程序,可以參考S3C64XX的HOS/drivers/mmc/host/s3cmci.c </p><p>  static struct platform_driver s3cmci_driver = {</p><p>  .driver  = {</p><p>  .name 

65、;   = "s3c-sdi",  //名稱和平臺設備定義中的對應</p><p>  .owner   = THIS_MODULE,</p><p>  .pm  = s3cmci_pm_ops,</p><p><b>  },</b></p>&

66、lt;p>  .id_table = s3cmci_driver_ids,</p><p>  .probe        = s3cmci_probe,  //平臺設備探測接口函數</p><p>  .remove       = __dev

67、exit_p(s3cmci_remove),</p><p>  .shutdown = s3cmci_shutdown,</p><p><b>  };</b></p><p><b>  //……</b></p><p>  wifi驅動是drivers/net/wireless/libert

68、as/目錄下的if_sdio.c文件sdio設備的驅動由sdio_driver結構體定義,sdio_register_driver函數將該設備驅動掛載到sdio_bus_type總線上。設備或者驅動注冊到系統(tǒng)中的過程中,都會調用相應bus上的匹配函數來進行匹配合適的驅動或者設備,對于sdio設備的匹配是由sdio_bus_match和sdio_bus_probe函數來完成。</p><p>  /* SDIO f

69、unction device driver*/</p><p>  struct sdio_driver {</p><p>  char *name;  //設備名</p><p>  const struct sdio_device_id *id_table; //設備驅動ID</p><p>  int (*probe)(st

70、ruct sdio_func *, const struct sdio_device_id *);//匹配函數</p><p>  void (*remove)(struct sdio_func *); </p><p>  struct device_driver drv;</p><p><b>  };</b></p>

71、;<p>  static struct sdio_driver if_sdio_driver = {</p><p>  .name         = "libertas_sdio",</p><p>  .id_table = if_sdio_ids, 

72、 //用于設備與驅動的匹配</p><p>  .probe        = if_sdio_probe,</p><p>  .remove       = if_sdio_remove,</p><p><b>  .

73、drv = {</b></p><p>  .pm = &if_sdio_pm_ops,</p><p><b>  },</b></p><p><b>  };</b></p><p>  /* sdio_register_driver - register

74、a function driver*/</p><p>  int sdio_register_driver(struct sdio_driver *drv)</p><p><b>  {</b></p><p>  drv->drv.name = drv->name;</p><p>  drv->

75、drv.bus = &sdio_bus_type;  //設置driver的bus為sdio_bus_type</p><p>  return driver_register(&drv->drv);</p><p><b>  } </b></p><p>  static struct bus_ty

76、pe sdio_bus_type = {</p><p>  .name         = "sdio",</p><p>  .dev_attrs    = sdio_dev_attrs,</p><p>  .match 

77、       = sdio_bus_match,</p><p>  .uevent       = sdio_bus_uevent,</p><p>  .probe        = sdio_bu

78、s_probe,</p><p>  .remove       = sdio_bus_remove,</p><p>  .pm      = SDIO_PM_OPS_PTR,</p><p><b>  };</b></p&g

79、t;<p>  static struct bus_type sdio_bus_type = {</p><p>  .name         = "sdio",</p><p>  .dev_attrs    = sdio_dev_attrs,

80、</p><p>  .match        = sdio_bus_match,</p><p>  .uevent       = sdio_bus_uevent,</p><p>  .probe   

81、;     = sdio_bus_probe,</p><p>  .remove       = sdio_bus_remove,</p><p>  .pm      = SDIO_PM_OPS_PTR,</p><p

82、><b>  };</b></p><p>  SDIO 設備驅動移植:</p><p>  修改SD卡驅動使內核支持SD卡</p><p>  修改文件:arch/arm/mach-s3c6410/mach-smdk6410.c</p><p>  static struct platform_device *s

83、mdk6410_devices[] __initdata = {</p><p>  &s3c_device_ohci,</p><p>  &s3c_device_lcd,</p><p>  &s3c_device_wdt,</p><p>  &s3c_device_i2c0,</p>&l

84、t;p>  &s3c_device_iis,</p><p>  &s3c_device_sdi, ///增加平臺設備對sd卡的支持</p><p><b>  };</b></p><p>  (2)修改arch/arm/mach-s3c6410/mach-smdk6410.c 添加</p><p&g

85、t;  #include<mach/gpio.h></p><p>  #include<linux/mmc/host.h></p><p>  #include<plat/mci.h></p><p>  Static struct s3c64xx_mci_pdata smdk6410_cfg_initdata={</p&

86、gt;<p>  .gpio_detect = S3C6410_GPG(10),</p><p>  .set_power = NULL,</p><p>  .ocr_avail = MMC_VDD_32_33,</p><p><b>  };</b></p><p>  (3)在smdk6410_in

87、it中添加</p><p>  S3c64xx_mci_set_platdata(&smdk6410_mmc_cfg);</p><p>  配置內核使其支持Marvel無線SDIO WIFI。進入Linux內核根文件,運行make menuconfig,得到圖形界面,按照下面的修改并保存。</p><p>  device drivers ---->

88、[*] Network device support ---> [*] Wireless LAN ---><*> Marwell 8xxx Libertas WLAN driver support<*> Marwell Libertas 8385/8686/8688 SDIO 802.11b/g cardsNetworking support --->-*- Wireless ---

89、> <*> cfg80211 - wireless configureation API{*} common routines for IEEE 802.11 drivers</p><p>  2.2.5 Linux內核的編譯</p><p>  按照項目的需求,定制內核。本項目主要用到無線wifi與以太網相關功能,在此基礎上,裁剪內核,節(jié)省內存資源。修改內核目錄樹

90、根下的Makefile,指明處理器類型與交叉編譯器。找到此位置修改Makefile中的內容如下: </p><p>  ARCH? =arm </p><p>  CROSS-COMPILE?=arm-linux-</p><p>  保存退出,執(zhí)行make zImage,大概經過十分鐘左右就可以完成內核的編譯,在根目錄下會有zImage鏡像文件生成。</p&

91、gt;<p>  下載到目標板上,啟動的過程中,可以看到sdio wifi加載的相關信息。</p><p>  圖2-4 SDIO_WIFI驅動加載信息</p><p>  2.2.6根文件系統(tǒng)制作</p><p>  理論上說一個嵌入式設備如果內核能夠運行起來,如果不需要運行用戶進程,不需要文件系統(tǒng)。文件系統(tǒng)簡單的說就是一種目錄結構,由于linux的

92、設備在系統(tǒng)中是以文件的形式存在,將這些文件進行分類管理以及提供和內核交互的接口,就形成一定的目錄結構也就是文件系統(tǒng),文件系統(tǒng)是為用戶反映系統(tǒng)的一種形式,為用戶提供一個檢測控制系統(tǒng)的接口。</p><p>  Cramfs是Linux的創(chuàng)始人 Linus Torvalds參與開發(fā)的一種只讀的壓縮文件系統(tǒng)。它也基于MTD驅動程序。Cramfs文件系統(tǒng)以壓縮方式存儲,在運行時解壓縮,所以不支持應用程序以XIP方式運行,

93、所有的應用程序要求被拷到RAM里去運行,但這并 不代表比 Ramfs需求的RAM空間要大一點,因為Cramfs是采用分頁壓縮的方式存放檔案,在讀取檔案時,不會一下子就耗用過多的內存空間,只針對目前實際讀 取的部分分配內存,尚沒有讀取的部分不分配內存空間,當我們讀取的檔案不在內存時,Cramfs文件系統(tǒng)自動計算壓縮后的資料所存的位置,再即時解壓縮到 RAM中。其制作工具可以從http://sourceforge.net/projects

94、/ cramfs/上下載,編譯后可以獲得mkcramfs和cramfsck兩個工具。</p><p>  下載交叉編譯busybox形成rootfs,執(zhí)行./mkcramfs rootfs/ rootfs.cramfs可以生成cramfs文件系統(tǒng)</p><p>  3 系統(tǒng)分析與設計</p><p>  3.1 系統(tǒng)設計思路</p><p&

95、gt;  在開發(fā)此系統(tǒng)之前,需要了解的是IEEE802.11b無線局域網協(xié)議,了解無線網絡中數據包的發(fā)送與接收的過程。IEEE802.11b無線局域網與我們熟悉的IEEE 802.3以太網的原理很類似,都是采用載波偵聽的方式來控制網絡中信息的傳送。不同之處是以太網采用的是CSMA/CD(載波偵聽/沖突檢測) 技術,網絡上所有工作站都偵聽網絡中有無信息發(fā)送,當發(fā)現網絡空閑時即發(fā)出自己的信息,如同搶答一樣,只能有一臺工作站搶到發(fā)言權,而其余

96、工作站需要繼續(xù) 等待。如果一旦有兩臺以上的工作站同時發(fā)出信息,則網絡中會發(fā)生沖突,沖突后這些沖突信息都會丟失,各工作站則將繼續(xù)搶奪發(fā)言權。而802.11b無線局域網則引進了沖突避免技術,從而避免了網絡中沖突的發(fā)生,可以大幅度提高網絡效率。</p><p>  Wi-Fi是一種可以將個人電腦、手持設備(如PDA、手機)等終端以無線方式互相連接的技術。Wi-Fi是一個無線網路通信技術的品牌,由Wi-Fi聯(lián)盟(Wi-F

97、i Alliance)所持有。目的是改善基于IEEE 802.11標準的無線網路產品之間的互通性。</p><p>  此次畢業(yè)設計所要做的是一個基于WIFI項目。這需要我們去了解WIFI的架構及其工作原理。</p><p>  (1)WiFi網絡結構:</p><p>  * 站點(Station),網絡最基本的組成部分。</p><p>

98、  * 基本服務單元(Basic Service Set,BSS)。網絡最基本的服務單元。最簡單的服務單元可以只由兩個站點組成。站點可以動態(tài)的聯(lián)結(associate)到基本服務單元中。</p><p>  * 分配系統(tǒng)(Distribution System,DS)。分配系統(tǒng)用于連接不同的基本服務單元。分配系統(tǒng)使用的媒介(Medium)邏輯上和基本服務單元使用的媒介是截然分開的,盡管它們 物理上可能會是同一個媒

99、介,例如同一個無線頻段。</p><p>  * 接入點(Access Point,AP)。接入點即有普通站點的身份,又有接入到分配系統(tǒng)的功能。</p><p>  * 擴展服務單元(Extended Service Set,ESS)。由分配系統(tǒng)和基本服務單元組合而成。這種組合是邏輯上,并非物理上的──不同的基本服務單元物有可能在地理位置相去甚遠。分配系統(tǒng)也可以使用各種各樣的技術。<

100、/p><p>  * 關口(Portal),也是一個邏輯成分。用于將無線局域網和有線局域網或其它網絡聯(lián)系起來。</p><p>  這兒有3種媒介,站點使用的無線的媒介,分配系統(tǒng)使用的媒介,以及和無線局域網集成一起的其它局域網使用的媒介。物理上它們可能互相重迭。IEEE 802.11只負責在站點使用的無線的媒介上的尋址(Addressing)。分配系統(tǒng)和其它局域網的尋址不屬無線局域網的范圍。I

101、EEE802.11沒有具體定義分配系統(tǒng),只是定義了分配系統(tǒng)應該提供的服務(Service)。整個無線局域網定義了9種服務:</p><p>  * 5種服務屬于分配系統(tǒng)的任務,分別為,聯(lián)接(Association)、結束聯(lián)接(Diassociation)、分配(Distribution)、集 成(Integration)、再聯(lián)接(Reassociation)。</p><p>  * 4種

102、服務屬于站點的任務,分別為,鑒權(Authentication)、結束鑒權(Deauthentication)、隱私(Privacy)、 MAC 數據傳輸(MSDU delivery)。</p><p>  (2)WiFi工作原理:</p><p>  WiFi的設置至少需要一個Access Point(ap)和一個或一個以上的client(hi)。AP 每100ms將SSID(Servi

103、ce Set Identifier)經由beacons(信號臺)封包廣播一次,beacons封包的傳輸速率是1 Mbit/s,并且長度相當的短,所以這個廣播動作對網絡效能的影響不大。因為WiFi規(guī)定的最低傳輸速率是1 Mbit/s ,所以確保所有的WiFi client端都能收到這個SSID廣播封包,client 可以借此決定是否要和這一個SSID的AP連線。使用者可以設定要連線到哪一個SSID。</p><p>

104、;  作為一個WIFI檢測設備。首先,應該要使WIFI設備正常工作,這一點通過對其驅動的編寫與編譯就可以實現,開機時加載無線網卡就可以實現。其次,要對所檢測的區(qū)域實現實時監(jiān)控,檢測出非法AP寫入特定的文件。再次,無線接入點檢測系統(tǒng)與服務器建立Socket連接,將無線接入點檢測系統(tǒng)所得到的非法AP列表文件,還有所有的AP以及它們的MAC地址文件,通過有線網絡傳輸到服務器。最后,作為整個系統(tǒng)的附加功能,服務器接收到非法AP列表文件、所有的A

105、P以及MAC地址文件這兩文件后,發(fā)送報警短信給管理員,通知管理員啟動相應的應急方案。 </p><p>  綜合以上各項的了解與分析后,在設計必須著重考慮掃描、傳輸、報警各個部分的協(xié)調關系,保證系統(tǒng)的穩(wěn)定運行。</p><p>  3.2 系統(tǒng)需求分析</p><p>  信息安全方面的產品設計應該著重于實踐,仔細觀察以實際生活中,各項技術所暴露出來的Bug及其危

106、害。從其中發(fā)掘出商業(yè)信息,按照社會的需求開始系統(tǒng)的設計,初步達到解決這一問題,在后期暴露的問題,可以通過對系統(tǒng)進行功能的添加與升級,解決Bug。</p><p>  本次設計總體規(guī)劃符合我們系統(tǒng)設計定的目標和要求。主要模塊功能在一般的WLAN中可以初步實現對非法AP的檢測。</p><p>  802.11協(xié)議提供的無線安全性能可以很好地抵御一般性網絡攻擊,但是仍有少數黑客能夠入侵無線網絡

107、,從而無法充分保護包含敏感數據的網絡。下面將對軟件功能的每一部分,做詳細的考慮。AP掃描檢測部分,我們準備實現三部分功能。第一步,掃描并且記錄整個區(qū)域所有AP及其詳細的信息。第二步,刪除文件中的一些內容,只留下有效的ESSID和MAC信息。第三步,把處理過的文件與事先約定好的合法AP列表文件中AP對比,找出其中的非法AP。</p><p>  對于文件傳輸系統(tǒng)來說,我們采用目前TCP網絡通信普遍采用socket機

108、制,通常也稱作"套接字",用于描述IP地址和端口,通過使用套接字來達到進程間通信目的編程就是網絡編程。網絡編程的工作主要就是使信息在發(fā)送端通過規(guī)定好的協(xié)議進行組裝包,在接收端按照規(guī)定好的協(xié)議把包進行解析,從而獲取出對應我們所需要的信息,達到通信的目的。這中間最關鍵的就是數據包的組裝,過濾,捕獲和分析,當然最后還需要再做一些處理。因此雙方通信采用TCP/IP協(xié)議,用IP地址來尋找對方,完成網絡編程的各個環(huán)節(jié)。從而能夠使

109、雙方能過建立通信。</p><p>  對于短信報警,我們采用的GSM模塊是西門子的TC35。GSM模塊主要通過UART(串口)與處理器通信,所以在硬件上只需要將串口的兩個引腳與處理器的串口連接,因為Linux平臺都提供有串口驅動,所以只需要編寫應用程序訪問相應的串口設備,然后通過發(fā)送AT指令控制GSM模塊即可,就可以將報警信息發(fā)送到管理員手機。 </p><p>  圖3-1 短信模塊電

110、路</p><p><b>  3.3 系統(tǒng)設計</b></p><p>  系統(tǒng)設計主要采用C與SHELL混編實現。圖3-2所示。</p><p><b>  圖3-2 系統(tǒng)圖</b></p><p>  非法AP列表文件的獲取</p><p>  本部分的設計,獲取AP

111、信息后,對比合法AP列表文件,如果都合法,就一直檢測,直到有非法AP存在,進而將非法AP寫入文件。</p><p>  IP地址的正確以及顯示連接信息</p><p>  向服務器傳輸文件之前,先檢查服務器IP是否正確,正確后開始連接,連接后顯示出檢測區(qū)域設備的IP地址。</p><p><b>  文件的傳輸</b></p>&

112、lt;p>  整個系統(tǒng)由發(fā)送端和接受端組成,其中發(fā)送端位于ARM開發(fā)板上,接受端位于PC上。發(fā)送端創(chuàng)建的Socket與接受端的ServerSocket進行交互來實現文件傳輸。</p><p><b>  報警系統(tǒng)</b></p><p>  在接收到非法AP列表文件后,啟動報警機制,發(fā)送短信。</p><p><b>  4

113、系統(tǒng)功能實現</b></p><p>  4.1 文件功能模塊分析</p><p>  圖4-1 文件處理模塊流程圖</p><p>  文件功能模塊整個系統(tǒng)主要包括查看設備、檢測AP、判斷文件、對比文件、文件寫入,這五大功能。前兩個功能采用Linux開源項目所維護的wireless_tools。解壓源代碼,修改makefile文件中的CC = arm

114、-linux-gcc-4.3.2;AR = arm-linux-ar;RANLIB = arm-linux-ranlib,編譯結束后就會有iwlist、iwconfig、iwpriv等等幾個有關無線的工具,本次設計主要使用的是iwlist。查看其源代碼可知道其用法大概如下:</p><p>  iwlist[網卡][必要參數]。其中必要的參數有:</p><p>  scanning 搜索

115、當前無線網絡;frequen  顯示頻道信息;rate  顯示連接速度;power  顯示電源模式;txpower 顯示功耗;retry  顯示重試連接次數(網絡不穩(wěn)定查看);ap 顯示熱點信息</p><p>  接下來直接使用shell腳本調用iwlist命令。</p><p>  #!/bin/bash</p><p>

116、  iwlist wlan0 scanning > tmp.txt</p><p><b>  sleep 1</b></p><p>  if [ ` ls -l tmp.txt | awk '{print $5}' ` -eq 0 ];then echo '空' ;else echo '非空';

117、fi</p><p>  使用shell將掃描到的所有AP信息寫入tmp.txt文件中,再采用正則表達式判斷文件是否為空。</p><p>  完成上面的步驟后,如果獲取了非空的tmp.txt,接下來就要對文件的內容進行處理了,寫入tmp.txt文件的內容一般如下:</p><p>  wlan0 Scan completed :</p>

溫馨提示

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

評論

0/150

提交評論