范魯寧 張世波 艾雨兵
摘要:該文是《網(wǎng)絡(luò)信息安全》課程教學(xué)改革研究的階段性研究報告。該課題研究目的:為了更方便的實施網(wǎng)絡(luò)實驗,加強學(xué)生軟硬件動手能力,提高教學(xué)效果。研究方法:根據(jù)現(xiàn)有的樹莓派開發(fā)板、nodejs服務(wù)器以及App Inventor2安卓開發(fā)平臺等相關(guān)技術(shù)資料和設(shè)備,課題組教師開發(fā)大型實驗,并拍攝教學(xué)視頻。階段性研究結(jié)果:目前已經(jīng)成功開發(fā)了兩個大型實驗:無線監(jiān)控樹莓派和樹莓派上的打地鼠游戲。結(jié)論:基于樹莓派開發(fā)板的對于《網(wǎng)絡(luò)信息安全》的實驗開發(fā)是完全可行的,并且具有無限擴展性。
關(guān)鍵詞:網(wǎng)絡(luò);樹莓派;安卓;服務(wù)器端
中圖分類號:TP3 文獻標(biāo)識碼:A 文章編號:1009-3044(2015)35-0058-03
《網(wǎng)絡(luò)信息安全》這門課涉及計算機科學(xué)、網(wǎng)絡(luò)技術(shù)、通信技術(shù)、密碼技術(shù)、信息安全技術(shù)、應(yīng)用數(shù)學(xué)、數(shù)論、信息論等綜合性知識。為了讓學(xué)生能夠系統(tǒng)性地將這些知識串聯(lián)起來,需要有一個統(tǒng)一的集成化的平臺去實現(xiàn)或者印證這些理論。
從學(xué)校教學(xué)來看,普通本科單純的課堂理論化教學(xué)和分散的小型實驗對大專、高職院校來說并不是十分適合。首先,學(xué)生不具備很強的理論學(xué)習(xí)能力,他們對深奧的數(shù)學(xué)理論和復(fù)雜的編程思想缺乏扎實的理論基礎(chǔ)知識,學(xué)習(xí)起來十分費勁。其次,大專、高職院校的學(xué)生將來要直接進入企業(yè)第一線工作,相對實用的成套的技術(shù)對他們來說更有用,經(jīng)過一系列設(shè)備的配置、安裝以及簡單的程序編寫完成一個看得見摸得著的作品會讓他們有強烈的成就感。普通教材中的實驗往往是零時安裝一個現(xiàn)成的程序,然后輸入“配置”數(shù)據(jù)、點擊“下一步”、“確定”。這種模式不能讓學(xué)生掌握到核心的技術(shù),即使要做一些變通也無從下手。另外,普通學(xué)校機房缺乏有效的實驗環(huán)境和實驗平臺,學(xué)生機上安裝的系統(tǒng)比較單一,一般會附帶保護卡和系統(tǒng)恢復(fù)機制,不允許隨便修改系統(tǒng)設(shè)置,不僅安裝不同的系統(tǒng)是不被允許的,而且練習(xí)具備破壞性的網(wǎng)絡(luò)攻防實驗也會對機房的網(wǎng)絡(luò)系統(tǒng)造成破壞,使得其他教學(xué)活動不能順利進行。
樹莓派:
因此針對《網(wǎng)絡(luò)信息安全》這門課,一個新的能夠模仿物聯(lián)網(wǎng)模式連接各種不同設(shè)備、搭載不同系統(tǒng)的教學(xué)平臺以及更加集成化和項目化的教學(xué)模式呼之欲出。為此,本課題組成員計劃采用市面上一款叫樹莓派的新產(chǎn)品作為核心設(shè)備來嘗試實現(xiàn)這個目標(biāo)。
1 研究技術(shù)材料和方法介紹
本文會涉及一些新的技術(shù),如:樹莓派開發(fā)板、基于java script腳本語言的用于小型服務(wù)器開發(fā)的新技術(shù)以及麻省理工大學(xué)出品的用于教育領(lǐng)域的Android應(yīng)用程序開發(fā)平臺,因此先在這個章節(jié)做一些簡單介紹。
1.1 RaspberryPi
樹莓派這個聽起來像一種國外烘培產(chǎn)品的名字其實是一種小型的卡片式的電腦主板,需要另外添加顯示屏、鍵盤、鼠標(biāo)、電源、無線網(wǎng)卡等外部設(shè)備才能夠真正的正常運行[1]。雖然有些折騰,但是能給學(xué)生一個動手的機會,讓他們更好的理解計算機的組成。
除了提供硬件組裝的動手機會,它的軟件運行也具備許多優(yōu)勢。普通學(xué)校機房的裝機實踐證明,即使使用虛擬機等軟件也會和某些教學(xué)管理軟件產(chǎn)生沖突,導(dǎo)致很多實驗不能進行,影響教學(xué)效果。
樹莓派開發(fā)板可以安裝類似于Linux的操作系統(tǒng),并且實現(xiàn)一系列好玩的實驗。例如:配置一個無線的監(jiān)控系統(tǒng),以實現(xiàn)遠程的攝像監(jiān)控記錄動作圖片和視頻,甚至可以通過手機來訪問這個攝像監(jiān)控設(shè)備實現(xiàn)實時監(jiān)控。這當(dāng)中要涉及操作系統(tǒng)安裝、網(wǎng)絡(luò)配置、系統(tǒng)更新和插件安裝配置、攝像頭的安裝配置、自動發(fā)送郵件的配置等等一系列可以進行教學(xué)的內(nèi)容,形成一個完整的大型實驗。讓學(xué)生接觸到軟件和硬件方面的各種知識,不同于以往的簡單操作,可以在不斷地“折騰”當(dāng)中加強動手能力,并可以結(jié)合其他課程的內(nèi)容,達到溫故知新的效果。
另外,低廉的價格也是樹莓派的一大優(yōu)勢,現(xiàn)在市場上成套的教學(xué)設(shè)備動不動就是幾千元、上萬元。一塊最新的第二代樹莓派國內(nèi)售價僅僅二百多元人民幣,并且可以連接筆記本電腦,通過共享網(wǎng)絡(luò)和遠程連接軟件就可以進行操作,可以為學(xué)校節(jié)省大筆教學(xué)設(shè)備采購的費用。
1.2 Appinventor2
App Inventor是由麻省理工和谷歌開發(fā)的一款A(yù)ndroid開發(fā)平臺,目前發(fā)展到第二代,具有操作簡單、可視化、模塊化、事件置頂、正確性高和便于調(diào)試等優(yōu)點。使用App Inventor無需具備編程知識,也不需要記憶和編寫代碼,程序的組件和功能都存儲在模塊編輯庫中,在創(chuàng)建程序時只需將其拖拽到編輯區(qū)域進行組合即可,用戶不需要記憶如何輸入指令或參考任何編程設(shè)計手冊[3]。因此,非常適合用于教學(xué)上的項目快速開發(fā),讓學(xué)生接觸到手機應(yīng)用開發(fā)的全新領(lǐng)域。
1.3 Nodejs
既然是網(wǎng)絡(luò)安全課程,肯定少不了網(wǎng)絡(luò)知識。在這里,課題組采用最新的服務(wù)器后臺框架技術(shù)Nodejs,這是一種用Java script作為編寫語言的服務(wù)器框架,使用事件驅(qū)動,非阻塞I/O模型而得以輕量和高效,非常適合用于小型網(wǎng)站或輕量級數(shù)據(jù)交換應(yīng)用的開發(fā)[4]。
2 實驗項目介紹
課題組研發(fā)了以下兩個較為綜合性的大型實驗,作為課堂教學(xué)所用。一個是偏向硬件和網(wǎng)絡(luò)配置方向的“無線監(jiān)控樹莓派”,另一個是偏向軟件編程和手機應(yīng)用開發(fā)的“樹莓派上的打地鼠游戲”。
2.1 無線監(jiān)控樹莓派
這個大型實驗由兩部分組成,一個是“無線”,另一個是“監(jiān)控”。這里所謂的“無線”,就是可以脫離網(wǎng)線、電源線、顯示屏、鍵盤、鼠標(biāo)的鏈接,獨立運行,并可以通過遠程以可視化或字符狀態(tài)登錄系統(tǒng)。
實現(xiàn)“無線”的操作步驟如下:
1)更新系統(tǒng),首先要保證樹莓派上的系統(tǒng)是最新版的Raspbian,通過命令$sudoapt-get update實現(xiàn)。
2)架設(shè)遠程桌面服務(wù),這一步是為了移除顯示器的連接線,原來我們剛使用樹莓派的時候,都是通過HDMI高清線連接在電視機上的,使用非常不方便。這里我們使用VNC服務(wù)器,通過這個遠程連接,使用者可以在筆記本電腦上可視化登陸樹莓派的操作界面。
3)為樹莓派添加無線網(wǎng)卡。我們從樹莓派專賣店中采購了專用的無線網(wǎng)卡EP-N8508GS,以便開發(fā)板能夠輕松識別它。通過USB接口連接以后,需要通過網(wǎng)絡(luò)配置文件配置無線網(wǎng)卡的IP地址。最好設(shè)置成靜態(tài)的IP地址,以便我們每次登錄的時候直接連接,不需要再通過ARP命令查詢樹莓派的IP地址。
4)最后要移除電源插頭。由于樹莓派使用的是5V的電源和1到2A的電流,我們可以使用充電寶來代替電源插頭。做完以上這些,樹莓派就真的可以揣在口袋里到處走了。
實現(xiàn)“監(jiān)控”則更加有趣和實用一些,它的步驟如下:
1)安裝攝像頭,可以是普通的USB攝像頭,也可以是樹莓派專用的串口攝像頭。連接上以后通過dmesg命令查看設(shè)備連接和辨識情況。一般攝像頭在系統(tǒng)中以文件video0的名字出現(xiàn)。
2)安裝和配置motion運動捕捉應(yīng)用程序。使用sudoapt-get install motion命令,自動從網(wǎng)上下載并安裝程序。安裝完畢后,需要設(shè)置照片和視頻的存放地址、調(diào)整畫面的高度、寬度和幀率,默認是每秒鐘捕捉兩張圖片,圖片大小為320像素×240像素,文件大小約為12KB。另外還要配置捕捉的敏感度threshold,也就是有多大幅度的動作才會被攝像頭抓拍下來,有一個數(shù)值來控制它,當(dāng)motion發(fā)現(xiàn)圖像的變化超過該值時將會捕捉畫面,數(shù)值越大,敏感度越低。
3)為了讓以上這些步驟實現(xiàn)自動化,我們還需要設(shè)計一個腳本程序?qū)崿F(xiàn)以下目標(biāo)[2]:只發(fā)送最新由motion捕捉的圖像,程序可以一直在后臺運行,刪除已經(jīng)發(fā)送的圖片,避免空間浪費。腳本采用系統(tǒng)自帶的shell語言編寫,按順序集成了一系列的系統(tǒng)命令,監(jiān)控存放圖片的文件夾,并及時發(fā)送到設(shè)置好的郵箱地址當(dāng)中,然后刪除已經(jīng)發(fā)送的圖片。
這個大型實驗需要5次課程的實驗來完成,其中涉及操作系統(tǒng)、網(wǎng)絡(luò)、硬件組裝技術(shù)等知識點,是一個較為全面和綜合的內(nèi)容。期間需要學(xué)生大量的動手和解決出現(xiàn)的各種問題。后續(xù)也可以加入其他內(nèi)容,如添加溫度濕度傳感器、被動紅外傳感器,通過命令行的方式遠程測試環(huán)境[2]。
2.2 樹莓派上的打地鼠游戲
本實驗結(jié)合了打地鼠游戲,Nodejs服務(wù)器,MySQL數(shù)據(jù)庫,以及樹莓派這些軟硬件組件。游戲本身由MITAppinventor2開發(fā),它的服務(wù)器現(xiàn)在已經(jīng)移植到廣州教育局的服務(wù)器上(app.gzjkw.net),訪問速度比以前快了很多。Nodejs服務(wù)器和MySQL數(shù)據(jù)庫將會部署在樹莓派上記錄游戲者分?jǐn)?shù)從高到低的排列,保證在WIFI環(huán)境下任何手機都能訪問該服務(wù)器,并保證數(shù)據(jù)記錄不丟失。
1)經(jīng)典老游戲的復(fù)活
“打地鼠”游戲的靈感來自一款經(jīng)典的街機游戲,其中的小動物會突然從洞中冒出,玩家則用木槌擊打它們,擊中得分。
手機上的“打地鼠”應(yīng)用將實現(xiàn)以下功能:一只地鼠隨機出現(xiàn)在屏幕上,每秒鐘移動一次;如果手指觸碰到地鼠,則讓設(shè)備震動,顯示的命中數(shù)加1,地鼠隨機移動到一個新位置;添加另一個地雷的圖片:用戶不許碰到它,如果碰到將會受到懲罰,減少得分或結(jié)束游戲;點擊“重新開始”按鈕,游戲重新開始,命中和失敗的計數(shù)歸零。界面組件設(shè)計如下圖所示,而邏輯設(shè)計部分的功能模塊主要包括:游戲界面初始化、地鼠隨機移動、游戲倒計時和游戲結(jié)束這幾個模塊,充分利用計時器的功能來控制圖片的移動和游戲的計時。
2)在樹莓派上架設(shè)服務(wù)器和部署MySQL數(shù)據(jù)庫
為了讓游戲者的得分紀(jì)錄能夠長期保存,并且讓網(wǎng)絡(luò)中的其他參與人員看到得分排行,就需要用到服務(wù)器端來查詢和存儲數(shù)據(jù)。為了減輕樹莓派的負擔(dān),加快運行速度,我們應(yīng)用了小型的基于Nodejs技術(shù)的服務(wù)器端,并創(chuàng)建MySQL數(shù)據(jù)表來存儲游戲得分,當(dāng)游戲結(jié)束并存儲得分后,服務(wù)器會將重新得到的記錄進行排序[5],得出一個從高到低的得分排名。
樹莓派功耗小,占用體積少,只要在WIFI環(huán)境下連接電源就可以開啟服務(wù)器,當(dāng)然要在系統(tǒng)中設(shè)置好自動啟動服務(wù)器應(yīng)用程序和數(shù)據(jù)庫服務(wù)器。
3 總結(jié)和展望
以上介紹的這兩個實驗都強調(diào)了硬件和軟件的動手能力,從趣味性和實用性兩方面對原有的教學(xué)內(nèi)容進行了改進。為了讓學(xué)生更好地在課后完成實驗,用最新的視頻制作軟件Camtasiastudio8.5錄制的教學(xué)視頻也已經(jīng)完成。實驗課程的成功開發(fā),證明在其他課程內(nèi)容上采用樹莓派作為平臺是可行的。課題組將會繼續(xù)探索和開發(fā)合適的內(nèi)容作為《網(wǎng)絡(luò)信息安全》這門必修課的項目化教學(xué)內(nèi)容。
參考文獻:
[1] [英]Peter Membrey. 樹莓派學(xué)習(xí)指南[M]. 北京: 人民郵電出版社, 2014:151-185.
[2] [美]Brendan Horan.RaspberryPi. 樹莓派實作應(yīng)用[M]. 北京: 人民郵電出版社, 2014:37-58.
[3] 黃仁祥. 人人都能開發(fā)安卓App–AppInventor2應(yīng)用開發(fā)實戰(zhàn)[M]. 北京:機械工業(yè)出版社, 2014:91-97.
[4] [英]TomHugbes-Croucber,Node. 即學(xué)即用[M]. OREILLY, 2013:147-158.
[5] David Flanagan, Java Script. 權(quán)威指南[M]. OREILLY, 2015:487-508.