基于手機的網絡化安全考勤、門禁系統的設計與實現,軟硬件協同
1 前言
門禁系統是最近幾年才在國內廣泛應用的又一高科技安全設施之一,現已成為現代建筑的智能化標志之一。在越來越注重商業情報和安全的今天,對進出一些重要機關、科研實驗室、檔案館、以及關系到國計民生的公用事業單位的控制中心、民航機場等場所的工作人員,給予進出授權控制。這些都使得門禁系統的作用和功能得到進一步擴展和提升。
隨著社會電子化智能程度的深入,市面上出現了不同種類的門禁及考勤系統[1][2]:密碼門禁系統,刷卡門禁系統,生物識別門禁系統。
密碼門禁系統:通過輸入密碼,系統判斷密碼正確就驅動電鎖,打開門放行。它的優點:只需記住密碼,無需攜帶其他介質。成本最低。缺點:速度慢,輸入密碼一般需要好幾秒中,如果進出的人員過多,需要排隊。如果輸入錯誤,還需重新輸入,耗時更長。安全性差,旁邊的人容易通過手勢記住別人的密碼,密碼容易忘記或者泄露。
刷卡門禁系統:根據卡的種類又分為接觸卡門禁系統(磁條卡條碼卡)和非接觸卡(又叫感應卡射頻卡)門禁系統。接觸卡門禁系統由于接觸而是的卡片容易磨損,使用次數不多,卡片容易損壞等,使用的范圍已經越來越少了。非接觸IC卡,由于其耐用性性價比好讀取速度快安全性高等優勢是當前門禁系統的主流。但是人員出入都需要隨身攜帶專用的IC卡,否則無法出入,這也給現代快節奏的生活帶來了一些不便。
生物識別門禁系統:根據人體生物特征的不同而識別身份的門禁系統。常見的有:指紋門禁系統(每個人的指紋紋路特征存在差異性),掌型儀門禁系統(每個人的手掌的骨骼形狀存在差異性)虹膜門禁系統(每個人的視網膜通過光學掃描存在差異性)人像識別門禁系統(每個人的五官特征和位置不同)等。生物識別門禁系統的優點是:無需攜帶卡片等介質,重復的幾率少,不容易被復制,安全性高。缺點是:成本高。由于生物識別需要比對很多參數特征,比對速度慢,不利于人員人數過多的場合。人體的生物特征會隨著環境和時間的變化而變化,因此容易產生拒識率(明明是這個人,但是他的生物特征變了,而認為不是本人),例如:指紋由于季節和干濕度不同而不同,掌型和人像由于年齡的增長而改變,虹膜由于眼部患病而改變等。所以,生物識別門禁系統雖然先進和安全,但是由于他的成本高,應用的范圍有限,不是當前門禁系統的主流。
由于以上各種考勤系統都存在各自的缺陷,使得在使用上述考勤技術的時候會給用戶帶來諸多不便。現在由于具有Wi-Fi功能的手機已日趨普及,因此如果在公司或小區等場合使用帶有Wi-Fi功能的手機進行人員的出入登記管理將更加方便。用戶不需要任何額外的設備,只需要一部具有Wi-Fi功能的手機即可,不僅使用方便,還將大大降低整個系統的部署成本。
手機中Wi-Fi模塊的MAC地址具有唯一性,因此可用于考勤系統,實現人員身份的識別,而且無需使用其他特殊的設備。另外,考勤機與遠程服務器端連接時,如果沒有一些相應的安全措施,就容易受到攻擊而傳輸錯誤、偽裝的信息。本項目以PIC32 Ethernet Starter KIT為基礎,擴充嵌入式Wi-Fi模塊,獲取手機Wi-Fi發送過來的身份認證信息,采用AES安全算法進行加密,實現操作簡單、安全可靠的網絡化身份認證門禁系統。
2相關技術和原理
2.1相關技術
2.1.1無線局域網WLAN
無線局域網WLAN是通過無線設備將兩臺或多臺計算機連接在一起構成的網絡。最早起源于1970夏威夷大學的ALOHA網絡,它是一個雙向星型拓撲,整個系統由分布于四個島嶼上的7臺計算機之間通過無線的方式與中央計算機連接在一起進行通訊。1997年發布了第一個版本,1999年加了兩個補充版本802.11a/b,隨后工業界成立了Wi-Fi聯盟,致力于解決符合802.11標準的產品的生產和設備兼容性問題。
無線局域網具有如下特點:
♦使用方便:由于沒有線纜的限制,用戶可以在網絡資源附近的便利場所訪問這些資源,如家庭、辦公室等場所。
♦移動性好:隨著越來越多的地方開通無線網,用戶甚至可以在工作場所之外隨意接入Internet。如:咖啡廳等地方即可便利的通過無線網接入Internet。
♦部署靈活:與有線網絡相比,無線網絡不需要布線,因此不會受到周圍環境的影響。
♦擴展性好:在原有網絡基礎之上,通過添加AP即可擴展網絡。而有線網絡除了添加交換機等設備外,還要額外布線,不僅成本提高,而且靈活性差。
♦安全:使用共享密鑰加密機制WEP(有線等效加密),WPA、WPA2(Wi-Fi)網絡安全存?。┑燃用軝C制。
無線局域網的網絡類型有:點到點(Ad-hoc)、橋接和分布式三種。
♦點到點:點到點網絡允許無線設備互相直接通訊。在通訊范圍內的無線設備可以互相被發現并且可以不通過AP直接通訊。這種通訊類型廣泛應用于兩臺計算機,它們不需要通過網絡來完成通訊。ad-hoc網絡就是這種網絡。
♦橋接:橋連接不同類型的網絡,無線以太網橋可以連接有線以太網和無線網絡,而橋則充當無線局域網的連接點。
♦無線分布式系統:當很難通過線纜在一個網絡中將所有訪問點都連接在一起的時候,可以用AP作為中繼器。
2.1.2 Wi-Fi
Wi-Fi[3]是目前最成功的無線局域網(WLAN)系統,它基于IEEE802.11技術標準,通過近幾年的快速發展,基礎架構設施已經比較完善,無線接入熱點(AP)覆蓋已經很廣,價格也很便宜。這樣的系統可通過個人權限接入無線互連網,并訪問本地網絡中的其他系統,比如其他計算機,共享打印機和其他類似設備。通常,WLAN的帶寬和傳輸延遲比許多其他類型的用戶互聯網連接(如ADSL、GPRS和3G)要好得多,因為WLAN既提供訪問互聯網服務,也提供本地通信服務。Wi-Fi在許多場合訪問速度更多是受到共享連接和用戶人數的限制,而非技術本身。Wi-Fi的突出優勢是傳輸帶寬、技術成熟度、開放的網絡協議,以及基礎接入產品、設施的完備和廣泛覆蓋。
2.1.3 AES加密
由于現實生活的實際需要及計算機技術的進步,密碼學有了突飛猛進的發展密碼學研究領域出現了許多新的課題新的方向。例如,在分組密碼領域,DES已無法滿足高保密性的要求。美國已征集并選定了Rijndael算法作為新的高級加密標準AES (AdvancedEncryptionStandard)。與3DES相比,AES[4]的安全性更高,算法實現更加靈活、簡單。繼美國征集AES結束之后,歐洲也開始進行名為NESSIE的密碼大計劃,其中候選算法中比較著名的兩個算法就是IDEA算法和Camellia算法,目前,對這兩個算法的研究也僅次AES算法。AES是基于分組的加解密算法,即每次要加密/解密的數據塊大小必須是16字節,算法中大量使用移位操作。
AES算法相關概念
分組密碼是對稱密碼體制的發展趨勢。分組密碼算法通常由密鑰擴展算法和加密(解密)算法兩部分組成。密鑰擴展算法將b字節用戶主密鑰擴展成r個子密鑰。加密算法由一個密碼學上的弱函數f與r個子密鑰迭代r次組成。抵御已知明文的差分和線性攻擊,可變長密鑰和分組是AES的設計要點。
AES算法結構
AES加密算法主要由4個變換構成:字節代換(Byte—Sub)、行移位變換(ShiftRow)、列混淆變換(MixColumn)以及輪密鑰加變換(AddRoundKey),其算法結構如圖1所示。圖1中InvByteSub、InvShiftRow和InvMixColumn分別表示ByteSub、ShiftRow、和MixColumn的逆變換。
圖1 AES加密解密結構圖
加密輪變換
AES加密數據塊大小最大是256bit,但是密鑰大小在理論上沒有上限。AES加密有很多輪的重復和變換。大致步驟如下:1、密鑰擴展(KeyExpansion),2、初始輪(Initial Round),3、重復輪(Rounds),每一輪又包括:SubBytes、ShiftRows、MixColumns、AddRoundKey,4、最終輪(Final Round),最終輪沒有MixColumns。AES加密算法的主體是其實就是加密輪變換,下面依次對以上4個子變換進行分析。
1、ByteSub變換
ByteSub變換對State中的每個字節進行S盒代替變換,變換由兩步構成:
(1)求State中各字節的乘法逆。
(2)對(1)所得的結果做仿射變換y=f(x)。
2、ShiftRow變換
ShiftRow變換將State中的行按不同的偏移量循環移位。偏移量以字節為單位,第一行不變,第二行循環左移1個字節,第三行循環左移兩個字節,第四行循環左移3個字節。
3、MixColumn變換
MixColumn變換是對狀態中各列的混淆變換。在MixCollm1變換中,把一個State的列看作一個32位數據,然后對其進行矩陣乘法變換sj(x)=c(x)·Sj(x),其中c(x)=03x3+01x2+01x+02。
4、AddROundKev變換
AddRoundKey變換將State中的每個字節與本輪子密鑰中對應的字節相異或.所得結果即為State的AddRoundKey變換值。加密輪函數可用偽C代碼表示為:
Round(State,Roundkey[i])
{
ByteSub(State);
ShiftRow(State);
MixColumn(State);
AddROundKey(State,Roundkey[i]);
}
2.2系統原理
本系統在PIC32 Ethernet Starter KIT硬件基礎上,擴充一個嵌入式Wi-Fi模塊,構成本地客戶端,由PC機作為服務器端。當手機打開WLAN掃描時,即可把唯一的MAC地址發送給客戶端,客戶端把MAC地址信息用AES算法進行加密,再將加密后的信息通過Ethernet接口發送給遠程服務器,由服務器對信息進行解密、識別、匹配,并做出相應處理和應答。
圖2系統原理圖
圖3系統模型圖
3硬件設計
3.1 PIC32 Ethernet Starter KIT簡介
PIC32 Ethernet Starter Kit[5]是一個非常簡單易用,低成本的用于體驗PIC3210/100Ethernet等功能的開發工具。PIC32可提供工作頻率80MHz的32位MIPS處理器內核、512KB的編程FLASH、32KB的RAM內存以及眾多的外圍設備。這些設備包括USB控制器、定時器/計數器、串口控制器、A/D轉換器以及更多的設備。該板具有大量的I/O接口和電源選項,其中也包括USB電源。它同時還具有與Microchip MPLAB開發軟件相兼容的內置編程、調試、下載電路。Cerebot32MX4擁有九個DigilentPmod™外圍模塊連接器??蛇B接的DigilentPmod包括H-bridge驅動、模數和數模轉換器、蜂鳴器、滑動開關、按鍵開關、LED指示燈、以及易于連接的轉換器。
PIC32 Ethernet Starter Kit實物圖如下圖4:
圖4 PIC32 Ethernet Starter Kit實物圖
3.2 380模塊簡介
EMW-380-C[6]是一款多功能串口轉Wi-Fi模塊,它內部集成了TCP/IP協議棧和Wi-Fi通訊模塊驅動,可用于串口與Wi-Fi無線網絡之間的數據傳輸,可方便的為串口設備增加無線網絡接口??捎糜诖谠O備與PC機之間,或者多個串口設備之間的遠程通信。
外觀機械尺寸如下圖5。
圖5 EMW-380-C引腳排列頂視圖
EMW-380-C實物圖如下圖6。
圖6 EMW-380-C實物圖
表1接線說明
No. | FUN. | No. | FUN. |
J2 | 天線接線柱 | J3 | NG(暫時不使用) |
模塊上有兩個LED燈用來直觀地指示模塊當前的狀態。可以在配制模式下通過命令來獲得模塊當前的狀態。LED功能如下表2.
表2 EMW-380-C LED指示燈狀態
名稱 | 顏色 | 含義 | 功能 |
D1 | 紅色 | Wi-Fi成功連接指示燈 | |
D2 | 綠色 | 系統初始化成功指示燈 | 常亮:模塊初始化正常,正常工作; 常暗:模塊未初始化,或處于休眠狀態。 |
表3 EMW-380-C引腳功能
J1引腳 | 功能 | 說明 | J2引腳 | 功能 | 說明 |
1 | Wakeup(IN) | WAKE_UP引腳如果產生下降沿使模塊進入休眠狀態,上升沿使模塊進入正常工 作狀態,模塊對該引腳有去噪功能,避免非正常信號的干擾。 | 1 | UART_RTS(OUT) | UART接收準備信號,低電平有效 |
2 | /RESET(IN) | 將該引腳拉低1μs,可以重新初始化模塊 | 2 | UART_CTS(IN) | UART允許發送信號,低電平有效 |
3 | STATUS(IN) | STATUS用來設置模塊的工作狀態。 | 3 | UART_RXD(IN) | UART數據輸入 |
4 | /INT(OUT) | HOST端可以通過查詢EMW-380-C的/INT引腳來確定初始化是否完成。當模塊加電 后,/INT會保持為高,當初始化完成后,/INT會被拉低,此后設備即可向 EMW-380-C發送命令并進行相關操作了。在EMW-380-C中/INT引腳沒有其他功能。 | 4 | UART_TXD(OUT) | UART數據輸出 |
5 | GND | 模塊接地 | 5 | GND | |
6 | NC | 未定義,用戶無須連接 | 6 | NC | |
7 | NC | 7 | NC | ||
8 | NC | 8 | NC | ||
9 | NC | 9 | NC | ||
10 | NC | 10 | VDD | 模塊電源輸入 |
注意:
(1)UART連接包括:UART_TXD,UART_RXD,UART_RTS和UART_CTS。
(2)最簡單應用中只需要連接電源和UART_TXD、UART_RXD。
(3)建議連接UART_RTS和UART_CTS來使能UART的硬件流控制。這樣,網絡阻塞時,模塊可以對嵌入式設備發送給UART接口的數據流量進行自動控制。
3.3典型硬件連接與引腳說明
圖7 典型UART連接圖
系統是通過EMW-380-C Wi-Fi模塊實現了系統的WLAN功能的。EMW-380-C Wi-Fi模塊是一個軟硬件高度封裝的嵌入式Wi-Fi(802.11b/g)應用模塊。硬件模塊由ARM處理器和Wi-Fi射頻芯片組成,軟件集成了Wi-Fi、TCP/IP、UDP、DHCP等網絡協議。模塊提供一個UART/SPI串行接口與主MCU相連,在本系統中,即PIC32 Ethernet Starter KIT通過UART與該模塊相連(如圖7)。并由一個簡單的API命令集來實現網絡控制和基于802.3幀格式的鏈路層數據服務。模塊支持AP和Ad-Hoc工作模式,并支持RF信道自動選擇和WEP加密,適合各種小系統的標準Wi-Fi接入。EMW-380-C Wi-Fi模塊具有TCP Server, TCP Client,UDP,UDP廣播等多種工作模式,支持Web配置方式,方便用戶靈活設定相關配置參數。
該模塊有兩種工作狀態:配置模式和數據透明傳輸模式。在配置模式下,可以使用EMSP通訊協議來對模塊進行操作,配置,簡單測試收發數據等。模塊的一切工作都處于EMSP命令的控制之下。在數據透明傳輸模式下,模塊將通過UART把接收到的數據封裝成TCP/UDP數據包發送到遠端,同時也可以將接收到的遠端TCP/UDP數據包的數據負載通過UART發送給嵌入式設備。
3.4硬件PCB圖
從圖8中可以看出,在本系統設計中,PIC32 Ethernet Starter KIT與EMW-380-C模塊間的UART只連接了基本的兩根線:UART-RXD和UART-TXD。用的是PIC32 Ethernet Starter KIT上的UART1,還有一根RB4連接到該模塊的STATUS引腳上。作為該模塊的狀態檢測線。
圖8考勤系統客戶端硬件PCB圖
3.5硬件實物圖
從圖9中可以看出,左側為PIC32 Ethernet Starter KIT實物圖,右側為擴展的EMW-380-C Wi-Fi模塊。
圖9考勤系統客戶端硬件實物圖
4軟件設計
本系統的整個設計包括下位機軟件設計和上位機軟件設計。下位機主要結合了EMW-380-C Wi-Fi模塊中的Wi-Fi技術,以及Microchip TCP/IP棧。而上位機主要結合了TCP/IP的socket編程以及對數據庫的操作。
4.1下位機軟件設計
圖10 考勤系統客戶端下位機軟件設計
整個下位機的系統設計如上圖。首先是對PIC32 Ethernet Starter KIT進行時鐘配置,必要外設的配置(定時器,按鈕,LED等)。Microchip TCP/IP棧通過處理物理網絡端口與應用程序之間交互,為用戶提供了一些基本的嵌入式網絡應用基礎。包括很多用于應用程的通用模塊,像HTTP(web服務),STMP(發郵件),SNMP(提供狀態和控制),Telnet,TFTP,串口到以太網等。此外,該棧包含了輕量級高性能的TCP和UDP層實現,并且支持IP,ICMP,DHCP,ARP和DNS。而本系統中使用了TCP/IP這部分功能。由于PIC32 Ethernet Starter KIT板子上豐富的資源,我們通過以太網,將PIC32 Ethernet Starter KIT和EMW-380-C Wi-Fi模塊組成的考勤系統作為一個客戶端。而遠程的上位機作為服務器端。當初始化完系統的基本外設后,就要啟動EMW-380-C Wi-Fi模塊的Wi-Fi功能(見一下內容的詳細介紹)。當考勤系統客戶端連接到上位機的服務器之后,那么他們之間就可以正常通訊了。
在本系統設計中EMW-380-C Wi-Fi模塊提供通用UART讀寫功能和EMSP協議的處理功能,來實現與PIC32 Ethernet Starter KIT的通訊。EMSP協議是一個與底層無關的通訊協議,只要EMW-380-C Wi-Fi模塊與PIC32 Ethernet Starter KIT在硬件上連接好之后,利用EMSP協議提供的簡單命令集就可以相互通訊了。PIC32 Ethernet Starter KIT發送給EMW-380-C Wi-Fi模塊的數據包格式如下表4。格式中包含一個協議頭(8個字節)和數據段(不定長,最大256個字節)。并且EMW-380-C Wi-Fi模塊響應PIC32 Ethernet Starter KIT之后,發送給PIC32 Ethernet Starter KIT的數據包格式也是按照表4中的格式。
表4 EMSP數據包格式
headofprotocol | datafield | ||||
command | length | result | headchecksum | data | datachecksum |
從表4中也可以看出,所有請求和應答都進行了校驗和計算,從而保證了數據交換的完整性和可靠性。整個EMSP協議包含12條命令,來完成模塊的控制、網絡控制和網絡通訊。
EMSP_CMD_RESET:對模塊進行復位操作。
EMSP_CMD_GET_CONFIG:獲取模塊中的配置信息,包括TCP/IP和Wi-Fi配置信息。
EMSP_CMD_SET_CONFIG:設置模塊參數。
EMSP_CMD_SCAN_AP:獲取模塊可識別范圍內的AP。
EMSP_CMD_START:啟動模塊的Wi-Fi連接和TCP鏈接。
EMSP_CMD_SEND_DATA:通過模塊向網絡上發送數據。
EMSP_CMD_RECV_DATA:通過模塊從網絡上接收數據。
EMSP_CMD_GET_STATUS:讀取模塊在透明數據傳輸模式的網絡狀態。包括TCP的狀態和Wi-Fi的工作狀態。
EMSP_CMD_GET_VER:獲取模塊版本號,包括硬件版本和固件版本。
EMSP_CMD_GET_MF_INFO:獲取模塊的生產廠家信息。
EMSP_CMD_GET_RF_POWER:獲取模塊無線收發功率。
EMSP_CMD_SET_PF_POWER:設置模塊發射無線功率。
配置模式下命令的發送與響應實現如下:
按照表4的數據包格式,組裝成一個完整的命令之后,把命令數據放入sendbuf緩沖區中,len是發送的數據包長度。 UART_send_buf(sendbuf,len); DelayMs (1500);//responsehasadelay if(cmdcode==EMSP_CMD_SCAN_AP) DelayMs (1500); if(cmdcode==EMSP_CMD_SET_CONFIG) DelayMs (1000); returnrecv_cmd();->recvlen=UART_receive_buf(recvbuf); 在recv_cmd()函數中調用UART_receive_buf函數,將接收到的響應數據包放入recvbuf中,recvlen是響應數據包的長度。之后對響應數據包做進一步的處理。 |
從實現上來說,EMSP協議中各命令的功能不同,處理時所需要的時間也是不同的。因此每條發送的命令等待響應所需的延遲也是不同的。
EMSP接口函數庫
EMSP協議接口函數庫提供了一系列API函數,通過調用這些函數可以輕松地在各種嵌入式設備上實現對EMW-380-C Wi-Fi模塊的控制和參數配置。我們將這些接口函數庫添加到我們的工程中,如下圖11為工程中的文件目錄結構。
圖11 工程目錄結構
EMSP接口函數庫由標準C編寫而成,由以下三個C語言文件及其對應的頭文件構成。
1.em380c_hal.c
該代碼實現了EMW-380-C模塊和嵌入式設備之間的硬件接口。
2.EMSP.c
該代碼實現了EMSP命令的協議處理。
3.EMSP_API.c
該代碼可用于操控模塊的API函數,用戶只需要調用這些函數,就可以對模塊實現配置和操作。
啟動Wi-Fi模塊,建立Ad-hoc網絡
根據自己的硬件環境實現以上EMSP接口函數庫。就可以很容易地使用這些接口函數了。要完成啟動Wi-Fi模塊,建立Ad-hoc網絡這部分功能,首先要配置EMW-380-C與PIC32 Ethernet Starter KIT板子間的接口,即UART的配置。EMW-380-C的UART默認配置為:波特率:115200,數據位:8位,停止位:1位,奇偶校驗:無,硬件流控:無。所以可以調用EMSP_API.c文件中的EM380C_Init()函數對EMW-380-C模塊進行UART的配置。當硬件接口配置完成后,可以給EMW-380-C模塊發送一個EMSP_CMD_GET_VER命令,來測試配置是否成功。成功后將從while循環中跳出來。接著給EMW-380-C模塊發送EMSP_CMD_START命令來啟動模塊。如果想改變EMW-380-C Wi-Fi的一些基本參數,可以通過給該模塊發送EMSP_CMD_SET_CONFIG命令。在本系統中,我們的模塊的基本網絡參數如下:
Wi-Fi Mode:Ad-hoc
Transfer Protocol:TCP
SSID:Microchip
無加密
IP address:192.168.1.5
Net Mask:255.255.255.0
Port Number:8080
通過以太網連接到server
這部分的功能主要用到TCP/IP協議棧的一些API函數。在本系統設計中,我們通過按鈕SW1來觸發該功能。該功能的實現主要在GenericTCPClient()函數中。當按鈕SW1被按下后,考勤系統客戶端進入SM_HOME狀態,通過調用TCPOpen函數來建立與遠程服務器間的socket連接,在本系統中,服務器開啟的偵聽端口為3000。
客戶端與server端的通訊
當考勤系統客戶端與服務器成功建立連接之后,考勤系統客戶端進入SM_SOCKET_OBTAINED狀態。而考勤系統客戶端的EMW-380-C Wi-Fi模塊在UDP 67端口進行偵聽,當手機給EMW-380-C Wi-Fi模塊發送DHCP請求時,EMW-380-C Wi-Fi模塊就可以獲取該手機的MAC地址。EMW-380-C Wi-Fi模塊將獲取的手機MAC地址通過UART將其主動發送給PIC32 Ethernet Starter KIT。比如PIC32 Ethernet Starter KIT收到如下信息:30 00 10 00 01 00 BE FF 00 1D 0F 31 7E 17 72 9A,則前8字節是MAC地址信息的頭部,接著的6字節是MAC地址,最后兩字節表示檢驗和。此時PIC32 Ethernet Starter KIT在SM_SOCKET_OBTAINED狀態下將對這16字節數據進行AES加密,然后將這經過加密的16字節數據發送給遠程的服務器端。一個應用場景為:上班時,只要與考勤系統客戶端建立Ad-hoc點對點連接,然后考勤系統客戶端給服務器發送經過加密的MAC地址信息,當服務器端接收到這些加密的信息后,對加密信息進行相應的解密,提取出MAC地址,從而進行身份認證進入公司。下班時,除了與考勤系統客戶端建立Ad-hoc點對點連接之外,還要按下考勤系統客戶端上的SW2按鈕,這樣考勤系統客戶端給服務器發送了手機的MAC地址和下班的標識信息。這樣可以區別此時是上班還是下班。
4.2上位機軟件設計
4.2.1數據庫設計
為了演示方便,本系統采用ACCESS2007數據庫,建立Mobile_acces_control_system數據庫,里面建有兩張表Presonnel_Info和RecordList,用來保存公司人員信息。
Presonnel_Info表保存公司人員的姓名和其手機WI-FI模塊中的MAC地址(主鍵),如表5。該表主要是由管理人員錄入人員的這兩項基本信息。
表5 Presonnel_Info表
Mac_Addr | 文本 |
Staff_Name | 文本 |
RecordList保留每天公司工作人員的上班出入時間記錄,系統會先查找Presonnel_Info表來核查你的身份信息,若在Presonnel_Info表中有你的基本信息,系統會主動為你添加你每天的上下班時間記錄信息,如表6。
表6 RecordList表
ID | 自動編號 |
Mac_Addr | 文本 |
Staff_Name | 文本 |
In_Time | 文本 |
Out_Time | 文本 |
4.2.2應用程序設計
主要流程概述:應用程序作為服務器端,首先應用程序開啟服務器程序(端口設為3000),用線程實現等待客戶端的連接,可以接受多個客戶端請求。若有客戶端連接上,檢查傳送來的數據包是否合法;利用AES算法對經過加密的身份認證信息進行解密,合法則提取出MAC地址,通過MAC地址到數據庫中查找該人員是否為公司人員;若是公司人員則通過數據包信息判斷是進入還是出去,記錄其出入時間信息。數據庫中只保留人員每天的一次上下班記錄,若有重復會給出提示,你已經有出或入記錄信息。在顯示窗口會實時顯示每個人員的出入記錄。上位機流程如下圖12。
圖12上位機服務器處理流程
如下圖13為我們的PC端服務器界面。當有客戶端與我們的服務器端成功建立TCP連接之后,界面的左下角就會顯示“客戶端連接上”。該服務器端可以顯示人員的出入記錄。如果只想顯示當天的出入記錄,則只要點擊“顯示當天記錄”即可。如果有非公司的人員想要進入公司,由于該人員的手機MAC地址并沒有在我們的數據庫中進行登記,所以將不會通過服務器端的身份認證,從而不會為該人員開門。
圖13 服務器端界面
評論