本文转载自:https://zhuanlan.zhihu.com/p/24246712

一.什么是wpa_spplicant

wpa_supplicant本是开源项目源码,被谷歌修改后加入Android移动平台,它主要是用来支持WEP,WPA/WPA2和WAPI无线协议和加密认证的,而实际上的工作内容是通过socket(不管是wpa_supplicant与上层还是wpa_supplicant与驱动都采用socket通讯)与驱动交互上报数据给用户,而用户可以通过socket发送命令给wpa_supplicant调动驱动来对WiFi芯片操作。 简单的说,wpa_supplicant就是WiFi驱动和用户的中转站外加对协议和加密认证的支持。

二.wpa_supplicant无线网络配置

目前可以使用wireless-tools 或wpa_supplicant工具来配置无线网络。请记住重要的一点是,对无线网络的配置是全局性的,而非针对具体的接口。

wpa_supplicant是一个较好的选择,但缺点是它不支持所有的驱动。请浏览wpa_supplicant网站获得它所支持的驱动列表。另外,wpa_supplicant目前只能连接到那些你已经配置好ESSID的无线网络。wireless-tools支持几乎所有的无线网卡和驱动,但它不能连接到那些只支持WPA的AP。

经过编译后的wpa_supplicant源程序可以看到两个主要的可执行工具:wpa_supplicant和wpa_cli。wpa_supplicant是核心程序,它和wpa_cli的关系就是服务和客户端的关系:后台运行wpa_supplicant,使用wpa_cli来搜索、设置、和连接网络。

三.wpa_supplicant的移植

1.wpa_supplicant2.6的下载:wpa_supplicant-2.6

libnl-3.2.28

OpenSSL-1.0.2j

wpa_supplicant-2.6两个依赖库为 libnl-3.2.28和 OpenSSL-1.0.2j

2.make编译OpenSSL-1.0.2j 产生lib如下图,将OpensslLib_HI下所文件copy到wpa_supplicant-2.6下的ssl文件夹

3编译libnl-3.2.28

./configure --prefix=/usr --sysconfdir=/etc --disable-static

make

make install

完成后在/usr/lib/下能找到以下两件文件

4.编译openssl-1.0.2j

4.1:如下配置makefile

./config no-asm shared --prefix=/usr/lib/ssl --cross-compile-prefix=/opt/hisi-linux/x86-arm/arm-hisiv400-linux/target/bin/arm-hisiv400-linux-

参数说明:

no-asm : Do not use assembler code.

shared : 编译连接成动态库

--prefix : 指定之后make install后生成的执行文件跟库的存放位置

--cross-compile-prefix :指定交叉编译工具位置及其前缀

4.2: 执行 make ;make install


5.编译wpa_supplicant-2.6

1 进入hostapd/wpa_supplicant目录,首先执行cp defconfig .config 拷贝生成编译配置

2 修改配置文件 .config,在"#Uncomment following two linee and fix..."下增加如下语句,用来添加openssl和libnl的头文件和库文件目录,更新编译链接环境变

CFLAGS += -I/usr/local/ssl/include

CFLAGS += -I/usr/local/include/netlink

LIBS += -L/usr/local/ssl/lib

LIBS += -L/usr/local/lib

LIBS_p += -L/usr/local/ssl/lib

3 执行make进行编译,成功后生成三个目标文件wpa_supplicant, wpa_cli, wpa_passphrase,至此编译完成。

三.wpa_supplicant用法

1.iwlist wlan0 scanning扫出可使用的ap

2.wpa_passphrase TP-LINK_8CEA 11111111 > /etc/wpa_supplicant.conf 产生密码的加密conf文件

再根据examples的例子修改

3.wpa_supplicant -i wlan0 -B -Dwext -c /etc/wpa_supplicant.conf 连接网络

4.设定WIFI的IP

wpa_supplicant介绍【转】的更多相关文章

  1. wpa_supplicant是什么?

    /************************************************************************ * wpa_supplicant是什么? * 声明: ...

  2. 使用wifi网卡笔记3---工具wpa_supplicant(STA模式)

    1.  wpa_supplicant介绍 supplicant是恳求者的意思,是wpa的发起者,是发送认证请求的设备(手机),手机--AP--认证服务器,可用于上述4种"认证/加密" ...

  3. Linux 使用wpa_supplicant手动配置连接wifi

    Linux 使用wpa_supplicant手动配置连接wifi wpa_supplicant 简介 wpa_supplicant是Linux BSD, Mac OSX和Windows的WPA的服务, ...

  4. linux 无线网络配置工具wpa_supplicant与wireless-tools

    4.a. 介绍目前您可以使用我们提供的wireless-tools 或wpa_supplicant工具来配置无线网络.请记住重要的一点是,您对无线网络的配置是全局性的,而非针对具体的接口.wpa_su ...

  5. android 源码目录介绍

    Android 4.0源码目录介绍|-- Makefile|-- bionic (bionic C库)|-- bootable  (启动引导相关代码)|-- build (存放系统编译规则及gener ...

  6. wpa_supplicant测试

    Android系统中对于WIFI的设置集成到了“设置”中,其实跟手动设置差不多.这里介绍下如何手动连接WIFI,以方便以后调试WIFI. 第一步要做的就是要加载WIFI模块驱动了.当然如果你的WIFI ...

  7. wpa_supplicant 使用

    (1)通过adb命令行,可以直接打开supplicant,从而运行wpa_cli,可以解决客户没有显示屏而无法操作WIFI的问题,还可以避免UI的问题带到driver.进一步来说,可以用在很多没有键盘 ...

  8. wpa_supplicant 和 802.11g WPA 认证的配置

    # cd /etc/init.d# ln -s net.lo net.eth0 默认的接口名是 wlan0,让它开机时自动 up:cp /etc/init.d/net.lo /etc/init.d/n ...

  9. wpa_supplicant

    一 函数接口介绍 wpa_ctrl_open接口用来打开wpa_supplicant的控制接口,在UNIX系统里使用UNIX domain sockets,而在Windows里则是使用UDP sock ...

随机推荐

  1. Java高级程序员面试题

    1.你认为项目中最重要的过程是那些? 分析.设计阶段  尽量找出进度的优先级 2.如果给你一个4-6人的team,怎么分配? 挑选一技术过硬的人作为我的替补.其它人平均分配任务,每周进行全面的任务分配 ...

  2. HDU 5076 Memory

    Memory Time Limit: 4000ms Memory Limit: 262144KB This problem will be judged on HDU. Original ID: 50 ...

  3. XV6调度

    调度 任何操作系统都可能碰到进程数多于处理器数的情况,这样就需要考虑如何分享处理器资源.理想的做法是让分享机制对进程透明.通常我们对进程造成一个自己独占处理器的假象,然后让操作系统的多路复用机制(mu ...

  4. [HDU4348]To the moon(主席树)

    传送门 对于这个题,显然要打lazy标记了,但是lazy标记pushdown的时候肯定会增加一大堆节点,然后就MLE了.(题解这么说的,我其实不会pushdown) 所以,就换另一种方式,把标记直接打 ...

  5. Linux内核设计与实现——读书笔记1:内核简介

    内核:有的时候被称管理者或者操作系统核心,通常内核负责响应中断的中断服务程序, 负责管理多个进程从而分享处理器时间的调度程序,负责管理进程地址空间德内存管理程序 和网络,进程间通信等系统服务程序共同组 ...

  6. gerrit ssh 登陆设置

    [root@web ~]# cat ~/.ssh/config Host gerrit User deploy-gerrit Port Hostname gerrit.demo.com Identit ...

  7. 离线配置Anaconda3+tensorflow-gpu1.4.0+cuda8.0+cudnn6.0

    1.首先下载anaconda3 ----从官网上下载Anaconda3-5.1.0-Linux-x86_64.sh 直接通过命令 bash Anaconda3-5.1.0-Linux-x86_64.s ...

  8. 下载数据到Excel,工具类

    使用反射将model数据下载到Excel中 package test.upload.utils; import java.lang.reflect.Method; import java.math.B ...

  9. oracle coherence介绍及使用

    网上除了官方用户指南,关于Coherence的介绍文章资料很少,因此总结出此文,从原理到快速指南和基本最佳实践,希望对需要的人提供一个参考. 1 Coherence 概述 1.1 Coherence是 ...

  10. OSChinaclient源代码学习(3)--轮询机制的实现

    主要以OSChina Androidclient源代码中Notice的轮询机制进行解读. 一.基础知识 一般IM(即使通讯)的实现有两种方式:推送和轮询,推送就是server主动向client发送消息 ...