日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

移植wpa_supplicant软件与DHCP软件解密WPA/WPA2 加密的无线网络

發(fā)布時間:2023/12/10 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 移植wpa_supplicant软件与DHCP软件解密WPA/WPA2 加密的无线网络 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

加qq1126137994與微信:liu1126137994 一起學習更多技術(shù)!

現(xiàn)在的無線網(wǎng)絡(luò)基本都是 WPA/WPA2 加密方式的,當我們在嵌入式Linux平臺要實現(xiàn)無線網(wǎng)卡連接無線網(wǎng)時,我們需要一些工具來解密WPA/WPA2 加密方式的無線網(wǎng)。wpa_supplicant軟件可以解密這種加密的網(wǎng)絡(luò),它同時提供相關(guān)的命令,供在Linux平臺使用,當使用wpa_supplicant軟件連接上無線網(wǎng)后,還需要DHCP軟件來自動生成ip地址,這樣才能正常的聯(lián)網(wǎng)。wpa_supplicant軟件還依賴于openssl庫。

所以一共需要移植三個軟件:wpa_supplicant-0.7.3,dhcp-3.1.3,openssl-0.9.8e
百度網(wǎng)盤下載地址:點擊下載

移植 wpa_supplicant-0.7.3軟件

1、首先解壓wpa_supplicant-0.7.3,在解壓得到的文件夾中找到patches目錄,這里面存放的是openssl的補丁文件,里面有很多個補丁,也就是與wpa_supplicant-0.7.3匹配的openssl版本,可以在官方網(wǎng)站進行選擇:點擊下載。我這里選擇的是openssl-0.9.8e版本。
2、知道了openssl的版本后,下載openssl并解壓,把wpa_supplicant-0.7.3里面的patches文件夾下的openssl-0.9.8e-tls-extensions.patch文件拷貝到openssl-0.9.8e目錄下,運行運行:patch –p1 <openssl-0.9.8e-tls-extensions.patch 這是打補丁的操作。
3、編譯openssl
首先建立openssl的安裝目錄,建議安裝在openssl-0.9.8e目錄下,因為生成的庫等只在交叉編譯wpa_supplicant時使用,這樣可以保持系統(tǒng)干凈。我建立的目錄是:openssl-imx6。

進入openssl-0.9.8e目錄修改Makefile,修改如下(省略號代表其他位修改的內(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ù)自己的實際目錄修改!

然后執(zhí)行make和make install
會在openssl-imx6目錄中生成我們移植wpa_supplicant需要的頭文件和庫文件。

4、編譯wpa_supplicant
首先進入wpa_supplicant目錄,建立配置文件:
cp defconfig .config
然后修改.config,增加以下內(nèi)容:

CC=/home/zsl/work/system/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-gcc -L/home/zsl/work/system/wifi/openssl-0.9.8e/openssl-imx6/libCFLAGS += -I/home/zsl/work/system/wifi/openssl-0.9.8e/openssl-imx6/includeLIBS += -L/home/zsl/work/system/wifi/openssl-0.9.8e/openssl-imx6/lib

CC是指定交叉編譯鏈,并且通過-L指定剛剛編譯好的openssl的庫文件目錄
CFLAGS是通過-I指定剛剛編譯好的openssl的頭文件目錄

LIBS通過-L指定剛剛編譯好的openssl的庫文件目錄
設(shè)置好了之后就可以保存退出
執(zhí)行make

make后會在該文件夾下生成我們需要的二進制可執(zhí)行文件,需要我們拷貝到開發(fā)板的/bin目錄下。其中有3個需要拷貝的文件:
wpa_supplicant,wpa_cli,wpa_passphrase 這三個可執(zhí)行文件就是我們生成的命令。將這三個文件想辦法弄到開發(fā)板文件系統(tǒng)的/bin目錄下。

5、編寫wpa_supplicant.conf文件
首先說明這個文件,這個文件里面記錄的是連接的各個無線網(wǎng)的信息,比如無線網(wǎng)的名字,密碼,加密解密方式等,我們需要在這個文件里面先將我們想要連接的無線網(wǎng)的信息記錄在內(nèi),以后方便連接。
配置文件加一項:

ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 update_config=1 network={ssid="iPhone6s" #無線網(wǎng)名字,最好寫成英文#key_mgmt=WPA-PSK proto=WPApairwise=TKIP CCMPgroup=TKIP CCMP psk="liuyang123" #無線網(wǎng)密碼# }

修改完成后就可以保存退出,將該文件想辦法拷貝到開發(fā)板的/etc目錄下。

6、移植DHCP軟件
上述前五個步驟已經(jīng)可以連接無線網(wǎng),但是還需要一個DHCP工具來自動生成ip,才能正常使用!
先來移植DHCP軟件:上述網(wǎng)盤中的文件dhcp-3.1.3.tar.gz拿到Linux系統(tǒng)解壓
tar -zxvf dhcp-3.1.3.tar.gz
進入這個目錄:
cd dhcp-3.1.3/
因為要編譯Linux平臺的。所以運行:
./configure linux
發(fā)現(xiàn)是有錯誤的:

System Type: linux No build directory for unknown - please run ./configure.

這個地方糾結(jié)了很久,后來不經(jīng)意間成功了,先不管上面的錯誤,直接進入到生成 的目錄:
cd work.linux

然后:
make “CC=/home/zsl/work/system/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-gcc -static”
會出錯的,出錯信息如下:

Making all in common make[1]: Entering directory `/home/ghye/Downloads/dhcp-3.1.3/work.linux/common' make[1]: *** No rule to make target `raw.o', needed by `libdhcp.a'. Stop. make[1]: Leaving directory `/home/ghye/Downloads/dhcp-3.1.3/work.linux/common' make: *** [all] Error 1

這個地方出錯一直不知道怎么解決,后來發(fā)現(xiàn),重新configure一下就好了:
../configure linux

這次configure 就沒有出現(xiàn)上述configure 出現(xiàn)過的錯誤,具體原因不知道,然后再一次:
make “CC=/home/zsl/work/system/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-gcc -static”

然后這次編譯就順利了,沒有出現(xiàn)錯誤,看來始這個源碼有bug!!!

將在work.linux/client目錄下生成的dhclient可執(zhí)行文件,將這個可執(zhí)行文件拷貝到開發(fā)板文件系統(tǒng)的/usr/bin/下。

拷貝配置文件dhcp-3.1.3/client/dhclient.conf和/dhcp-3.1.3/client/scripts/linux 到開發(fā)板的/sbin/目錄下,并將后一個文件重命名為dhclient-script 并修改該文件的第一行#! /bin/bash 為#! /bin/sh,保存后,修改權(quán)限 chmod +x /sbin/dhclient-script

到這一步軟件的移植就完成了,接下來我們來使用移植好的軟件來連接無線網(wǎng)!!!

7、連接網(wǎng)絡(luò)

上面還忘了一件事,在開發(fā)板文件系統(tǒng)建立一個目錄:
mkdir –p /var/run/wpa_supplicant

1、首先將之前移植好的無線驅(qū)動程序裝載:
insmod rt5370sta.ko
2、啟動網(wǎng)卡:
ifconfig wlan0 up
3、創(chuàng)建連接暗文密碼(PSK密碼),通過明碼轉(zhuǎn)換:
wpa_passphrase iPhone6s liuyang1234 >> /etc/wpa_supplicant.conf
此時將在wpa_supplicant.conf文件中生成:

network={ssid="iPhone6s"#psk="liuyang1234"psk=48cff49bf851d8e073040c6e2a6eaa176ac510faf3d69b6d0daf63aa2d68285f }

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ū)動,會出現(xiàn)一個rt2x00lib_request_firmware: Error - Failed to request Firmware.問題。
意思是找不到無線網(wǎng)卡的固件,這個問題很好解決,只需要在網(wǎng)卡驅(qū)動程序的common/目錄下找到固件rt2870.bin,并放到開發(fā)板的/lib/firmware目錄下即可。可以點擊下載:點擊下載)

顯示大概如下的話,就是連接上了無線網(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=]

此時是還不能上網(wǎng)的,還需要我們用DHCP工具來動態(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

則說明分配ip成功,當然你可以輸入ifconfig wlan0 來查看是否分配了動態(tài)ip。

再來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

則說明我們的無線網(wǎng)已經(jīng)可以正常聯(lián)網(wǎng)了!!!!

6、連接其他AP
我們不可能只連接一個無線網(wǎng),也不可能每次都修改配置文件來連接無線網(wǎng),那樣太麻煩了,那么該如何使用命令來快速連接無線網(wǎng)呢?

wpa_cli的用法:
首先運行wpa_supplicant服務,之后運行wpa_cli。
運行wpa_cli之后,會進入命令行交互模式,依次執(zhí)行scan和scan_results可以顯示搜索到的周圍的AP信息。如下所示:

從中可以得到AP的MAC地址、信號強度以及加密方式等信息。
按下面的順序依次執(zhí)行指令,可以連接到加密方式為WPA-PSK/WPA2-PSK的AP:
add_network (會返回一個值,然后將這個值寫到下面的26的位置)
set_network 26 ssid “LieBaoWiFi503”
set_network 26 psk “00000000”
enable_network 26

上述命令是添加一個可以連接的wifi信號,然后下面就可以連接了:
輸入:
select_network 26

wpa_cli的其他命令模式:
list 可看到當前可連接的的wifi列表。

想一起探討以及獲得各種學習資源加我:
qq:1126137994
微信:liu1126137994
可以共同交流關(guān)于嵌入式,操作系統(tǒng),C++語言,C語言,數(shù)據(jù)結(jié)構(gòu)等技術(shù)問題。

總結(jié)

以上是生活随笔為你收集整理的移植wpa_supplicant软件与DHCP软件解密WPA/WPA2 加密的无线网络的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。