從接觸WIFI到現在,才幾個月左右時間,期間又不斷穿插其它事務,不過總算學了點東西。本文記錄一下學習WIFI的過程。
公司布局移動網絡已很久了,從機頂盒子到無人機到h265、窄寬圖傳。今年安排我的工作計劃只有“移動網絡”這四個字,不過直到只剩下半年時間才能接觸。
起初,得到的任務只是向項目輸出, 必須是5GHz頻段,速率要達到800Mbps。由于事急,也沒什么時間系統地了解WIFI,直接在Linux系統搭建AP服務,個中涉及到無線驅動、無線網卡固件、hostapd、dhcp等,也只是在出現問題時才去搜索。一開始在完整的ubuntu系統上進行,出現問題不多,但放到自己移植后的系統,還是有個別問題卡了很久時間,所幸最后都解決了,但速率一直不理想。從開始的54Mbps,到后來156Mbps,雖然在進步,但領導還是期望達到800Mbps。咨詢無線網卡提供商,別人是基于MIPS的openwrt系統,與我們使用的linux不同。這個問題只好慢慢再找了。
后來完成項目的輸出,領導叫我好好梳理WIFI技術。因此才有了時間重新回顧之前所接觸的,并慢慢展開。如802.11n關鍵技術,802.11ac關鍵技術,無線認證、無線加密算法,等等。但這些都是為了交差而應付了之,因為任何一個話題,都是一大塊領域。
由于我作為“底層員工”,不可能靠幾個PPT混飯吃,所以WIFI的重點方向是Linux的wireless驅動,以及上層服務如hostapd等。考慮難易程度,拿hostapd下手。由于接觸了大量開源項目源碼,對于開源項目代碼的研究有自己的套路,很快就對hostapd有了初步認識。后來無意間看到國外友人的文章,修改了hostapd代碼,將無線傳輸速率提高到300Mbps,達到普通路由器標稱速度。
接著研究了linux下抓包程序hosrt,由于該任務不是安排給我的,所以都是在業余時間進行.很多年前自學過ncurses庫,因此對于hosrt顯示這方面的機制不陌生——人生就是這樣,無法知道所學東西會在什么時候用上。經過一周多的時間,基本上掌握了該程序,并自行添加額外的一些功能。還向程序作者提了bug,這是我在github上首次和國外同道溝通。
后來利用iptables,將一臺x86板子改造為無線熱點,時不時用手機連接上網。這也是學以致用的一方面吧。其實這個主要是想以后有機會有時間進行WIFI破解做準備的。
李遲