移植wpa_supplicant软件与DHCP软件解密WPA/WPA2 加密的无线网络
加qq1126137994與微信:liu1126137994 一起學(xué)習(xí)更多技術(shù)!
現(xiàn)在的無(wú)線(xiàn)網(wǎng)絡(luò)基本都是 WPA/WPA2 加密方式的,當(dāng)我們?cè)谇度胧絃inux平臺(tái)要實(shí)現(xiàn)無(wú)線(xiàn)網(wǎng)卡連接無(wú)線(xiàn)網(wǎng)時(shí),我們需要一些工具來(lái)解密WPA/WPA2 加密方式的無(wú)線(xiàn)網(wǎng)。wpa_supplicant軟件可以解密這種加密的網(wǎng)絡(luò),它同時(shí)提供相關(guān)的命令,供在Linux平臺(tái)使用,當(dāng)使用wpa_supplicant軟件連接上無(wú)線(xiàn)網(wǎng)后,還需要DHCP軟件來(lái)自動(dòng)生成ip地址,這樣才能正常的聯(lián)網(wǎng)。wpa_supplicant軟件還依賴(lài)于openssl庫(kù)。
所以一共需要移植三個(gè)軟件:wpa_supplicant-0.7.3,dhcp-3.1.3,openssl-0.9.8e
百度網(wǎng)盤(pán)下載地址:點(diǎn)擊下載
移植 wpa_supplicant-0.7.3軟件
1、首先解壓wpa_supplicant-0.7.3,在解壓得到的文件夾中找到patches目錄,這里面存放的是openssl的補(bǔ)丁文件,里面有很多個(gè)補(bǔ)丁,也就是與wpa_supplicant-0.7.3匹配的openssl版本,可以在官方網(wǎng)站進(jìn)行選擇:點(diǎn)擊下載。我這里選擇的是openssl-0.9.8e版本。
2、知道了openssl的版本后,下載openssl并解壓,把wpa_supplicant-0.7.3里面的patches文件夾下的openssl-0.9.8e-tls-extensions.patch文件拷貝到openssl-0.9.8e目錄下,運(yùn)行運(yùn)行:patch –p1 <openssl-0.9.8e-tls-extensions.patch 這是打補(bǔ)丁的操作。
3、編譯openssl
首先建立openssl的安裝目錄,建議安裝在openssl-0.9.8e目錄下,因?yàn)樯傻膸?kù)等只在交叉編譯wpa_supplicant時(shí)使用,這樣可以保持系統(tǒng)干凈。我建立的目錄是:openssl-imx6。
進(jìn)入openssl-0.9.8e目錄修改Makefile,修改如下(省略號(hào)代表其他位修改的內(nèi)容):
INSTALLTOP=/home/zsl/work/system/wifi/openssl-0.9.8e/openssl-imx6 ..... OPENSSLDIR=/home/zsl/work/system/wifi/openssl-0.9.8e/openssl-imx6 .... CC= /home/zsl/work/system/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-gcc .... AR=/home/zsl/work/system/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-ar $(ARFLAGS) r RANLIB= /home/zsl/work/system/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-ranlib修改的部分根據(jù)自己的實(shí)際目錄修改!
然后執(zhí)行make和make install
會(huì)在openssl-imx6目錄中生成我們移植wpa_supplicant需要的頭文件和庫(kù)文件。
4、編譯wpa_supplicant
首先進(jìn)入wpa_supplicant目錄,建立配置文件:
cp defconfig .config
然后修改.config,增加以下內(nèi)容:
CC是指定交叉編譯鏈,并且通過(guò)-L指定剛剛編譯好的openssl的庫(kù)文件目錄
CFLAGS是通過(guò)-I指定剛剛編譯好的openssl的頭文件目錄
LIBS通過(guò)-L指定剛剛編譯好的openssl的庫(kù)文件目錄
設(shè)置好了之后就可以保存退出
執(zhí)行make
make后會(huì)在該文件夾下生成我們需要的二進(jìn)制可執(zhí)行文件,需要我們拷貝到開(kāi)發(fā)板的/bin目錄下。其中有3個(gè)需要拷貝的文件:
wpa_supplicant,wpa_cli,wpa_passphrase 這三個(gè)可執(zhí)行文件就是我們生成的命令。將這三個(gè)文件想辦法弄到開(kāi)發(fā)板文件系統(tǒng)的/bin目錄下。
5、編寫(xiě)wpa_supplicant.conf文件
首先說(shuō)明這個(gè)文件,這個(gè)文件里面記錄的是連接的各個(gè)無(wú)線(xiàn)網(wǎng)的信息,比如無(wú)線(xiàn)網(wǎng)的名字,密碼,加密解密方式等,我們需要在這個(gè)文件里面先將我們想要連接的無(wú)線(xiàn)網(wǎng)的信息記錄在內(nèi),以后方便連接。
配置文件加一項(xiàng):
修改完成后就可以保存退出,將該文件想辦法拷貝到開(kāi)發(fā)板的/etc目錄下。
6、移植DHCP軟件
上述前五個(gè)步驟已經(jīng)可以連接無(wú)線(xiàn)網(wǎng),但是還需要一個(gè)DHCP工具來(lái)自動(dòng)生成ip,才能正常使用!
先來(lái)移植DHCP軟件:上述網(wǎng)盤(pán)中的文件dhcp-3.1.3.tar.gz拿到Linux系統(tǒng)解壓
tar -zxvf dhcp-3.1.3.tar.gz
進(jìn)入這個(gè)目錄:
cd dhcp-3.1.3/
因?yàn)橐幾gLinux平臺(tái)的。所以運(yùn)行:
./configure linux
發(fā)現(xiàn)是有錯(cuò)誤的:
這個(gè)地方糾結(jié)了很久,后來(lái)不經(jīng)意間成功了,先不管上面的錯(cuò)誤,直接進(jìn)入到生成 的目錄:
cd work.linux
然后:
make “CC=/home/zsl/work/system/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-gcc -static”
會(huì)出錯(cuò)的,出錯(cuò)信息如下:
這個(gè)地方出錯(cuò)一直不知道怎么解決,后來(lái)發(fā)現(xiàn),重新configure一下就好了:
../configure linux
這次configure 就沒(méi)有出現(xiàn)上述configure 出現(xiàn)過(guò)的錯(cuò)誤,具體原因不知道,然后再一次:
make “CC=/home/zsl/work/system/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-gcc -static”
然后這次編譯就順利了,沒(méi)有出現(xiàn)錯(cuò)誤,看來(lái)始這個(gè)源碼有bug!!!
將在work.linux/client目錄下生成的dhclient可執(zhí)行文件,將這個(gè)可執(zhí)行文件拷貝到開(kāi)發(fā)板文件系統(tǒng)的/usr/bin/下。
拷貝配置文件dhcp-3.1.3/client/dhclient.conf和/dhcp-3.1.3/client/scripts/linux 到開(kāi)發(fā)板的/sbin/目錄下,并將后一個(gè)文件重命名為dhclient-script 并修改該文件的第一行#! /bin/bash 為#! /bin/sh,保存后,修改權(quán)限 chmod +x /sbin/dhclient-script
到這一步軟件的移植就完成了,接下來(lái)我們來(lái)使用移植好的軟件來(lái)連接無(wú)線(xiàn)網(wǎng)!!!
7、連接網(wǎng)絡(luò)
上面還忘了一件事,在開(kāi)發(fā)板文件系統(tǒng)建立一個(gè)目錄:
mkdir –p /var/run/wpa_supplicant
1、首先將之前移植好的無(wú)線(xiàn)驅(qū)動(dòng)程序裝載:
insmod rt5370sta.ko
2、啟動(dòng)網(wǎng)卡:
ifconfig wlan0 up
3、創(chuàng)建連接暗文密碼(PSK密碼),通過(guò)明碼轉(zhuǎn)換:
wpa_passphrase iPhone6s liuyang1234 >> /etc/wpa_supplicant.conf
此時(shí)將在wpa_supplicant.conf文件中生成:
4、然后修改wpa_supplicant.conf配置文件,把 psk=”liuyang123” 這一行明文密碼改成生成的暗文密碼,即改成:
network={ssid="iPhone6s"key_mgmt=WPA-PSKproto=WPApairwise=TKIP CCMPgroup=TKIP CCMPpsk=48cff49bf851d8e073040c6e2a6eaa176ac510faf3d69b6d0daf63aa2d68285f }5、連接AP
wpa_supplicant -iwlan0 -Dwext -c/etc/wpa_supplicant.conf &
(備注:如果使用的是我上一節(jié)中講到的內(nèi)核自帶驅(qū)動(dòng),會(huì)出現(xiàn)一個(gè)rt2x00lib_request_firmware: Error - Failed to request Firmware.問(wèn)題。
意思是找不到無(wú)線(xiàn)網(wǎng)卡的固件,這個(gè)問(wèn)題很好解決,只需要在網(wǎng)卡驅(qū)動(dòng)程序的common/目錄下找到固件rt2870.bin,并放到開(kāi)發(fā)板的/lib/firmware目錄下即可??梢渣c(diǎn)擊下載:點(diǎn)擊下載)
顯示大概如下的話(huà),就是連接上了無(wú)線(xiàn)網(wǎng):
Trying to associate with b6:6d:83:c4:a2:43 (SSID=’iPhone6s’ freq=2462 MHz)
Associated with b6:6d:83:c4:a2:43
WPA: Key negotiation completed with b6:6d:83:c4:a2:43 [PTK=CCMP GTK=CCMP]
CTRL-EVENT-CONNECTED - Connection to b6:6d:83:c4:a2:43 completed (auth) [id=24 id_str=]
此時(shí)是還不能上網(wǎng)的,還需要我們用DHCP工具來(lái)動(dòng)態(tài)分配ip,輸入以下命令:
udhcpc -i wlan0
大概顯示如下:
udhcpc (v1.20.2) started
Sending discover…
Sending select for 192.168.191.3…
Sending select for 192.168.191.3…
Lease of 192.168.191.3 obtained, lease time 3600
Deleting routers
adding dns 192.168.191.1
adding dns 114.114.114.114
則說(shuō)明分配ip成功,當(dāng)然你可以輸入ifconfig wlan0 來(lái)查看是否分配了動(dòng)態(tài)ip。
再來(lái)ping以下www.baidu.com
ping www.baidu.com
顯示如下:
PING www.baidu.com (180.97.33.108): 56 data bytes
64 bytes from 180.97.33.108: seq=0 ttl=47 time=13.221 ms
64 bytes from 180.97.33.108: seq=1 ttl=47 time=15.429 ms
64 bytes from 180.97.33.108: seq=2 ttl=47 time=15.215 ms
64 bytes from 180.97.33.108: seq=3 ttl=47 time=14.273 ms
64 bytes from 180.97.33.108: seq=4 ttl=47 time=16.212 ms
— www.baidu.com ping statistics —
5 packets transmitted, 5 packets received, 0% packet loss
則說(shuō)明我們的無(wú)線(xiàn)網(wǎng)已經(jīng)可以正常聯(lián)網(wǎng)了!!!!
6、連接其他AP
我們不可能只連接一個(gè)無(wú)線(xiàn)網(wǎng),也不可能每次都修改配置文件來(lái)連接無(wú)線(xiàn)網(wǎng),那樣太麻煩了,那么該如何使用命令來(lái)快速連接無(wú)線(xiàn)網(wǎng)呢?
wpa_cli的用法:
首先運(yùn)行wpa_supplicant服務(wù),之后運(yùn)行wpa_cli。
運(yùn)行wpa_cli之后,會(huì)進(jìn)入命令行交互模式,依次執(zhí)行scan和scan_results可以顯示搜索到的周?chē)腁P信息。如下所示:
從中可以得到AP的MAC地址、信號(hào)強(qiáng)度以及加密方式等信息。
按下面的順序依次執(zhí)行指令,可以連接到加密方式為WPA-PSK/WPA2-PSK的AP:
add_network (會(huì)返回一個(gè)值,然后將這個(gè)值寫(xiě)到下面的26的位置)
set_network 26 ssid “LieBaoWiFi503”
set_network 26 psk “00000000”
enable_network 26
上述命令是添加一個(gè)可以連接的wifi信號(hào),然后下面就可以連接了:
輸入:
select_network 26
wpa_cli的其他命令模式:
list 可看到當(dāng)前可連接的的wifi列表。
想一起探討以及獲得各種學(xué)習(xí)資源加我:
qq:1126137994
微信:liu1126137994
可以共同交流關(guān)于嵌入式,操作系統(tǒng),C++語(yǔ)言,C語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)等技術(shù)問(wèn)題。
總結(jié)
以上是生活随笔為你收集整理的移植wpa_supplicant软件与DHCP软件解密WPA/WPA2 加密的无线网络的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: AD20学习笔记3---PCB封装库的创
- 下一篇: python打造记账本_Python实现