加qq1126137994与微信:liu1126137994 一起学习更多技术!

现在的无线网络基本都是 WPA/WPA2 加密方式的,当我们在嵌入式Linux平台要实现无线网卡连接无线网时,我们需要一些工具来解密WPA/WPA2 加密方式的无线网。wpa_supplicant软件可以解密这种加密的网络,它同时提供相关的命令,供在Linux平台使用,当使用wpa_supplicant软件连接上无线网后,还需要DHCP软件来自动生成ip地址,这样才能正常的联网。wpa_supplicant软件还依赖于openssl库。

所以一共需要移植三个软件:wpa_supplicant-0.7.3,dhcp-3.1.3,openssl-0.9.8e
百度网盘下载地址:点击下载

移植 wpa_supplicant-0.7.3软件

1、首先解压wpa_supplicant-0.7.3,在解压得到的文件夹中找到patches目录,这里面存放的是openssl的补丁文件,里面有很多个补丁,也就是与wpa_supplicant-0.7.3匹配的openssl版本,可以在官方网站进行选择:点击下载。我这里选择的是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时使用,这样可以保持系统干净。我建立的目录是:openssl-imx6。

进入openssl-0.9.8e目录修改Makefile,修改如下(省略号代表其他位修改的内容):

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

修改的部分根据自己的实际目录修改!

然后执行make和make install
会在openssl-imx6目录中生成我们移植wpa_supplicant需要的头文件和库文件。

4、编译wpa_supplicant
首先进入wpa_supplicant目录,建立配置文件:
cp defconfig .config
然后修改.config,增加以下内容:

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的库文件目录
设置好了之后就可以保存退出
执行make

make后会在该文件夹下生成我们需要的二进制可执行文件,需要我们拷贝到开发板的/bin目录下。其中有3个需要拷贝的文件:
wpa_supplicant,wpa_cli,wpa_passphrase 这三个可执行文件就是我们生成的命令。将这三个文件想办法弄到开发板文件系统的/bin目录下。

5、编写wpa_supplicant.conf文件
首先说明这个文件,这个文件里面记录的是连接的各个无线网的信息,比如无线网的名字,密码,加密解密方式等,我们需要在这个文件里面先将我们想要连接的无线网的信息记录在内,以后方便连接。
配置文件加一项:

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1
network={ssid="iPhone6s"    #无线网名字,最好写成英文#key_mgmt=WPA-PSK    proto=WPApairwise=TKIP CCMPgroup=TKIP CCMP psk="liuyang123"   #无线网密码#
}

修改完成后就可以保存退出,将该文件想办法拷贝到开发板的/etc目录下。

6、移植DHCP软件
上述前五个步骤已经可以连接无线网,但是还需要一个DHCP工具来自动生成ip,才能正常使用!
先来移植DHCP软件:上述网盘中的文件dhcp-3.1.3.tar.gz拿到Linux系统解压
tar -zxvf dhcp-3.1.3.tar.gz
进入这个目录:
cd dhcp-3.1.3/
因为要编译Linux平台的。所以运行:
./configure linux
发现是有错误的:

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

这个地方纠结了很久,后来不经意间成功了,先不管上面的错误,直接进入到生成 的目录:
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  

这个地方出错一直不知道怎么解决,后来发现,重新configure一下就好了:
../configure linux

这次configure 就没有出现上述configure 出现过的错误,具体原因不知道,然后再一次:
make “CC=/home/zsl/work/system/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-gcc -static”

然后这次编译就顺利了,没有出现错误,看来始这个源码有bug!!!

将在work.linux/client目录下生成的dhclient可执行文件,将这个可执行文件拷贝到开发板文件系统的/usr/bin/下。

拷贝配置文件dhcp-3.1.3/client/dhclient.conf和/dhcp-3.1.3/client/scripts/linux 到开发板的/sbin/目录下,并将后一个文件重命名为dhclient-script 并修改该文件的第一行#! /bin/bash 为#! /bin/sh,保存后,修改权限 chmod +x /sbin/dhclient-script

到这一步软件的移植就完成了,接下来我们来使用移植好的软件来连接无线网!!!

7、连接网络

上面还忘了一件事,在开发板文件系统建立一个目录:
mkdir –p /var/run/wpa_supplicant

1、首先将之前移植好的无线驱动程序装载:
insmod rt5370sta.ko
2、启动网卡:
ifconfig wlan0 up
3、创建连接暗文密码(PSK密码),通过明码转换:
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 &
(备注:如果使用的是我上一节中讲到的内核自带驱动,会出现一个rt2x00lib_request_firmware: Error - Failed to request Firmware.问题。
意思是找不到无线网卡的固件,这个问题很好解决,只需要在网卡驱动程序的common/目录下找到固件rt2870.bin,并放到开发板的/lib/firmware目录下即可。可以点击下载:点击下载)

显示大概如下的话,就是连接上了无线网:

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=]

此时是还不能上网的,还需要我们用DHCP工具来动态分配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 来查看是否分配了动态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

则说明我们的无线网已经可以正常联网了!!!!

6、连接其他AP
我们不可能只连接一个无线网,也不可能每次都修改配置文件来连接无线网,那样太麻烦了,那么该如何使用命令来快速连接无线网呢?

wpa_cli的用法:
首先运行wpa_supplicant服务,之后运行wpa_cli。
运行wpa_cli之后,会进入命令行交互模式,依次执行scan和scan_results可以显示搜索到的周围的AP信息。如下所示:

从中可以得到AP的MAC地址、信号强度以及加密方式等信息。
按下面的顺序依次执行指令,可以连接到加密方式为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
可以共同交流关于嵌入式,操作系统,C++语言,C语言,数据结构等技术问题。

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

  1. 使用Aircrack-ng工具破解WEP、WPA/WPA2加密的无线网络

    特别声明:本文是参照"9.2 使用Aircrack-ng工具破解无线网络"进行实验的.链接为:https://wizardforcel.gitbooks.io/daxueba-ka ...

  2. 【2】Kali破解家用WI-FI密码 - WPA/WPA2加密

    [学习记录] 本人小白一枚,文章用来记录自己目前的学习进度,希望能够用最通俗易懂的语言和命令来为大家讲清楚我的实验过程和经验,同时期待我的学习经验也可以帮助到大家.还望各位大佬能不吝朱玉,指出我的错误 ...

  3. WEP/WPA/WPA2加密标准有什么区别?

    WEP/WPA/WPA2加密标准有什么区别? 大多数的公共场合 WiFi 是不加密的,但居住区却是常见一些使用 WAP 和 WAP2 加密标准的 Wi-Fi 信号.可能很多用户在设置路由器加密标准的时 ...

  4. 破解WEP和WPA加密的无线网络

    今天讲讲Aircrack-ng,这是一个基于破解无线802.11协议的wep及wpa-psk加密的工具.补充一点,这种破解方法是在网卡的基础上进行的. 破解wep加密的无线网络:现在命令行输入airm ...

  5. WPA/WPA2加密破解

    WPA/WPA2无线密码破解这里主要介绍两种方法:穷举PIN码.穷举密码 穷举PIN码(共11000种组合)破解速度快,需要一些条件(路由器支持WPS.QSS功能),路由器信号良好.无论密码多复杂,条 ...

  6. 在Kali中 利用工具Fluxion渗透wpa/wpa2加密WiFi 详细步骤(小白适用) 2020.1

    希望借这篇文章提醒大家 切勿在不确定的网页上随意输入自己的隐私信息 FLUXION渗透测试 链接:本次测试(前言:网卡选择,工具,环境介绍). 链接: Kali网卡驱动安装及相关问题解决(2020.1 ...

  7. U盘安装Kali linux进行抓包破解或阻断wpa/wpa2加密WIFI

    如何破解隔壁邻居WIFI亦或者阻断你隔壁WIFI--未被发现 需要的工具 1.kali-linux-2020.1b-live-amd64.iso 连接https://www.kali.org/down ...

  8. WIFI WPA/WPA2加密方式

    文章目录 1.1 准备无线网卡 1.2 无线网卡接入虚拟机 1.3 查看无线网卡信息 1.4 开启无线网卡监听模式 1.5 监听周围无线网络信息 1.6 如果不能监听,需要设置Monitor模式 1. ...

  9. 破解WIFI(wpa/wpa2)

    破解WiFi密码(WPA/WPA2) 如今,绝大部分的WiFi网络都采用了 WPA/WPA2 加密,WEP 加密已经极为罕见.所以本文就给大家介绍如何用 Aircrack-ng 工具包破解 WPA/W ...

最新文章

  1. Python基础笔记1
  2. javascript调试_如何提高JavaScript调试技能
  3. 测评结果_刚刚,2018全国文明城市测评结果重磅公布!你的家乡排第几?
  4. Composer 本地路径加载 laravel-admin 扩展包
  5. 用vue开发顶端粘滞效果的页面
  6. Educational Codeforces Round 25 E. Minimal Labelshdu1258
  7. CentOS 6.6系统安装
  8. java 记录用户_JavaWeb学习记录(六)——用户登录功能
  9. php发布文章时 未定义索引,php – 上传文件时未定义的索引
  10. MySQL重做日志(redo log)总结
  11. 爱普生Epson L1118/1119打印机清零步骤
  12. java导入shp数据并解析
  13. Weex Playground APP 源码下载编译运行预览
  14. VUE实现SQL在线编辑器,SQL分析器,SQL代码关键字提示
  15. 富士通Fujitsu DPK9500GA Pro 打印机驱动
  16. selenium自动化学习--截取长图的方法
  17. HTML5射击鸭子小游戏
  18. 关于微信小程序开发过程中的页面刷新的解决方案
  19. 什么是信息增益(Information Gain)
  20. Keil(MDK)STM32和51版本详细安装

热门文章

  1. python流量监控_用python中的pcapy实现网络流量监控
  2. Android 一直往文件写数据_( 十 ) 小众但好用:通过 Google drive 备份与同步 Keepass 数据库...
  3. 背景透明度 下拉菜单
  4. 作业-python常用库类 numpy+pandas
  5. android开发之 SQLite(数据库)
  6. linux备份mysql部分表数据,linux mysql 数据按表名称备份
  7. 使用 bat 文件管理计算机服务
  8. mybatis 一对一 一对多 级联查询
  9. elasticsearch 6.x (四) 单一文档 API 介绍和使用 index和get API
  10. apollo报:系统出错,请重试或联系系统负责人