Import WPA from FreeBSD
来源:互联网 发布:九阴绝学精灵升级数据 编辑:程序博客网 时间:2024/06/11 17:06
对于WPA 加密WiFi,我们需要的是wpa_supplicant 软件,该软件广泛应用于BSD, Linux, Windows等操作系统,主要功能是WiFi管理功能,多用于WPA/WPA2协议的加密WiFi。因此需要从FreeBSD中移植该软件到RTEMS上。注意:该文章是从我的英文博客中翻译过来,因此多数是英文。
We can get the wpa source code from their web site:
https://w1.fi/wpa_supplicant/
For RTEMS-libbsd, we can directly import it from FreeBSD.
1.Firstly, we need add these imported files in libbsd.py.
We create a new module named :usr_sbin_wpa_supplicant, and add files in this module:
+# /usr/sbin/wpa_supplicant+#+def usr_sbin_wpa_supplicant(mm):+ mod = builder.Module('usr_sbin_wpa_supplicant')+ mod.addUserSpaceHeaderFiles(+ [+ 'contrib/wpa/wpa_supplicant/ap.h',+ 'contrib/wpa/wpa_supplicant/blacklist.h',+ 'contrib/wpa/wpa_supplicant/bss.h',+ 'contrib/wpa/wpa_supplicant/config.h',+ 'contrib/wpa/wpa_supplicant/config_ssid.h',+ 'contrib/wpa/wpa_supplicant/ctrl_iface.h',+ 'contrib/wpa/wpa_supplicant/driver_i.h',+ 'contrib/wpa/wpa_supplicant/gas_query.h',+ 'contrib/wpa/wpa_supplicant/hs20_supplicant.h',+ 'contrib/wpa/wpa_supplicant/interworking.h',+ 'contrib/wpa/wpa_supplicant/mesh.h',+ 'contrib/wpa/wpa_supplicant/mesh_mpm.h',+ 'contrib/wpa/wpa_supplicant/mesh_rsn.h',+ 'contrib/wpa/wpa_supplicant/notify.h',+ 'contrib/wpa/wpa_supplicant/offchannel.h',+ 'contrib/wpa/wpa_supplicant/scan.h',+ 'contrib/wpa/wpa_supplicant/autoscan.h',+ 'contrib/wpa/wpa_supplicant/wmm_ac.h',+ 'contrib/wpa/wpa_supplicant/wnm_sta.h',+ 'contrib/wpa/wpa_supplicant/wpas_glue.h',......+ ]+ )+ mod.addUserSpaceSourceFiles(+ [+ 'contrib/wpa/wpa_supplicant/blacklist.c',+ 'contrib/wpa/wpa_supplicant/bss.c',+ 'contrib/wpa/wpa_supplicant/config.c',+ 'contrib/wpa/wpa_supplicant/config_file.c',+ 'contrib/wpa/wpa_supplicant/ctrl_iface.c',+ 'contrib/wpa/wpa_supplicant/ctrl_iface_unix.c',+ 'contrib/wpa/wpa_supplicant/eap_register.c',+ 'contrib/wpa/wpa_supplicant/events.c',+ 'contrib/wpa/wpa_supplicant/gas_query.c',+ 'contrib/wpa/wpa_supplicant/hs20_supplicant.c',+ 'contrib/wpa/wpa_supplicant/interworking.c',+ 'contrib/wpa/wpa_supplicant/main.c',+ 'contrib/wpa/wpa_supplicant/notify.c',+ ],
2.Add the configure macro in mm.generator['source'], we need configure the source files to make sure it can run normally on RTEMS. For these configure macro, we can take the FreeBSD config files as a reference.
The configure file in FreeBSD/usr.sbin/wpa/wpa_supplicant/Makefile
CFLAGS+=-DCONFIG_BACKEND_FILE \ -DCONFIG_DEBUG_SYSLOG \ -DCONFIG_DRIVER_BSD \ -DCONFIG_DRIVER_NDIS \ -DCONFIG_DRIVER_WIRED \ -DCONFIG_GAS \ -DCONFIG_HS20 \ -DCONFIG_IEEE80211R \ -DCONFIG_INTERWORKING \ -DCONFIG_PEERKEY \ -DCONFIG_PRIVSEP \ -DCONFIG_SMARTCARD \ -DCONFIG_TERMINATE_ONLASTIF \ -DCONFIG_TLS=openssl \ -DCONFIG_WPS \ -DCONFIG_WPS2 \ -DCONFIG_WPS_UPNP \ -DPKCS12_FUNCS
+ mm.generator['source'](['-D__FreeBSD__=1',+ '-DCONFIG_BACKEND_FILE=1',+ '-DCONFIG_DEBUG_SYSLOG=1',+ '-DCONFIG_DRIVER_BSD=1',+ '-DCONFIG_DRIVER_NDIS=1',+ '-DCONFIG_DRIVER_WIRED=1',+ '-DCONFIG_GAS=1',+ '-DCONFIG_HS20=1',+ '-DCONFIG_IEEE80211R=1',+ '-DCONFIG_INTERWORKING=1',+ '-DCONFIG_PEERKEY=1',+ '-DCONFIG_PRIVSEP=1',+ '-DCONFIG_SMARTCARD=1',+ '-DCONFIG_TERMINATE_ONLASTIF=1',+ '-DCONFIG_TLS=openssl',+ '-DCONFIG_WPS=1',+ '-DCONFIG_WPS2=1',+ '-DCONFIG_WPS_UPNP=1',+ '-DPKCS12_FUNCS=1',+ '-DCONFIG_SHA256=1',+ '-DCONFIG_CTRL_IFACE=1',+ '-DCONFIG_CTRL_IFACE_UNIX=1',+ '-DIEEE8021X_EAPOL=1',+ '-DEAP_MD5=1',+ '-DEAP_GTC=1',+ '-DEAP_LEAP=1',+ '-DEAP_MSCHAPv2=1',+ '-DEAP_OTP=1',+ '-DEAP_PEAP=1',+ '-DEAP_PSK=1',+ '-DEAP_TLS=1',+ '-DEAP_TTLS=1'],+ ['freebsd/contrib/wpa/src',+ 'freebsd/contrib/wpa/src/utils',+ 'freebsd/contrib/wpa/src/eap_peer',+ 'freebsd/usr.sbin/wpa/wpa_supplicant',+ 'freebsd/crypto/openssl/crypto'])+ )
3. We need configure a wpa_supplicant command for RTEMS, so we add a command files in rtemsbsd.
+ mod.addRTEMSSourceFiles(+ [+ 'rtems/rtems-bsd-shell-wpa_supplicant.c',+ ],+ mm.generator['source']()+ )+ return mod+
4. Last we need add this module into compile in libbsd.py
mm.addModule(contrib_expat(mm)) mm.addModule(contrib_libpcap(mm)) mm.addModule(usr_sbin_tcpdump(mm))+ mm.addModule(usr_sbin_wpa_supplicant(mm)) mm.addModule(crypto_openssl(mm))
阅读全文
0 0
- Import WPA from FreeBSD
- from import
- import 和 from...import
- import与from...import....
- from.....import 与 import
- python import、from import
- import与from...import....
- import & from ... import
- import ,from import
- python import 与from ... import
- import 与import ... from 区别
- Python3 import 与 from...import
- Python import 与 from import
- Python Gossip: import、import as、from import
- WPA
- 【python】from...import ...
- from flask_babelex import lazy_gettext
- from math import ceil
- 谈谈对Spring IOC的理解
- 系统编程函数之文件目录操作
- 排除工作日计算任务是否超期
- 一位ACM过来人的心得
- 初学文件IO
- Import WPA from FreeBSD
- Mysql 引擎
- bootstrap datetimepicker 日期插件超详细使用方法
- 私服Nexus-maven
- Property or field 'str' cannot be found on object of type 'com.yubai.EL.DemoService'
- 不用加减乘除做加法
- 8-13教务管理系统
- Tendermint: 什么是 ABCI (应用区块链接口)
- 服务安装(tomcat为例)