精华内容
下载资源
问答
  • hostapd_cli 使用命令

    2021-01-27 11:51:31
    hostapd_cli 软件介绍 1、功能介绍 hostapd_cli是一款用作无线 AP 功能的客户端程序。它需要与hostapd主程序配置使用。hostapd 的使用可以参考 《hostapd 使用手册》。 注:本篇文档均是针对 SylixOS 下的 ...

    hostapd_cli 软件介绍


    1、功能介绍

    hostapd_cli 是一款用作无线 AP 功能的客户端程序。它需要与 hostapd 主程序配置使用。hostapd 的使用可以参考 《hostapd 使用手册》。

    注:本篇文档均是针对 SylixOS 下的 hostapd_cli 的使用说明。


    2、工具使用

    hostapd_cli 的编译

    hostapd_cli 用于设置或修改hostapd的相关服务,因此其源码就在 hostapd 工程中。在SylixOS下,如果需要编译hostapd_cli,只需要将 hostapd 工程根目录中 deconfig 文件里 CONFIG_COMPILE_CLI=y 注释掉,那么编译出来的就是hostapd_cli,否则就是hostapd。如下图所示:
    在这里插入图片描述

    注意事项:

    要启动 hostapd_cli ,就必须先在 hostapd 的配置文件中,指定好一个控制接口的路劲。即需要在配置文件中,对 ctrl_interface 进行设置

    主要流程:

    hostapd_cli 作为 hostapd 的客户端,使用时,首先需要先启动 hostapd 主程序。hostapd 启动后,运行 cli 客户端时,会自动去连接当前正在工作的 hostapd 进程,连接成功后,cli 客户端就可以对 hostapd 应用程序进行参数的获取和控制。

    1. 配置方式一: shell 交互方式

    使用此方式,可以借助 hostapd_cli 提供的交互命令与 hostapd 进行通信,从而获取当前 AP 的状态,或者对 AP 的配置进行动态修改。这种方式的启动,无需跟任何参数,直接运行 hostapd_cli 即可。如下所示:

    [root@sylixos:/root]# 
    [root@sylixos:/root]# hostapd_cli
    hostapd_cli v2.9
    Copyright (c) 2004-2019, Jouni Malinen <j@w1.fi> and contributors
    
    This software may be distributed under the terms of the BSD license.
    See README for more details.
    
    
    Selected interface 'wl3'
    
    Interactive mode
    
    > 
    > 
    > 
    > 
    
    

    2. 配置方式二: 带参数运行

    如果不想使用第一种 shell 交互式的操作,则可以使用带参数运行 hostapd_cli 的方式去使用 hostapd_cli。如想要修改 ssid ,那在使用第一种方式时,操作如下:
    在这里插入图片描述
    如果使用第二种方式,那么可以直接跟上需要配置的内容作参数即可,使用方法如下:
    在这里插入图片描述

    3、hostapd_cli 常用 AP 操作

    hostapd 可以使用 set 命令,在 hostapd 启动后,对 hostapd 配置文件,即 hostapd.conf
    内所有的配置项进行配置,从而实现动态修改配置的目的。

    注意:

    • 使用 set 命令进行修改时,修改的内容是对应的内存里变量的内容,并不是修改 hostapd 配置文件的内容,因此在使用 set命令完成所有的配置修改后,需要使用 reload 命令将这些配置重新加载。
    • 有些配置内容即使按照 set 、reload 配置后,也是无法更新的。比如隐藏 ssid 功能,此时需要再 set 命令配置完成后,先使用 disable 命令,禁用 hostapd,然后再使用 enable 启动 hostapd,从而实现配置更新。

    以下是常用的一些 AP 配置操作,本节借助第二种方式进行配置说明:

    • 修改无线热点名称
    [root@sylixos:/root]# hostapd_cli set ssid Test
    Selected interface 'wl3'
    OK
    [root@sylixos:/root]# hostapd_cli reload       
    Selected interface 'wl3'
    OK
    

    配置内容:修改 ssid 为 “Test”

    • 修改无线密码
    [root@sylixos:/root]# hostapd_cli set wpa_passphrase 12345678
    Selected interface 'wl3'
    OK
    [root@sylixos:/root]# hostapd_cli reload       
    Selected interface 'wl3'
    OK
    

    配置内容:修改密码为 “12345678”

    • 设置 AP 热点 channel
    [root@sylixos:/root]# hostapd_cli set channel 11
    Selected interface 'wl3'
    OK
    [root@sylixos:/root]# hostapd_cli reload        
    Selected interface 'wl3'
    OK
    

    配置内容:修改通道为 11

    • 设置 AP 热点隐藏
    [root@sylixos:/root]# hostapd_cli set ignore_broadcast_ssid 1
    Selected interface 'wl3'
    OK
    [root@sylixos:/root]# hostapd_cli disable                    
    Selected interface 'wl3'
    OK
    [root@sylixos:/root]# hostapd_cli enable 
    Selected interface 'wl3'
    OK
    

    配置内容:修改 ignore_broadcast_ssid 属性为 1(或者为 2),则会隐藏当前的 ssid,这里不能使用 reload 去重新加载配置,因为隐藏 ssid 需要做更多的操作修改,因此这里先使用 disable 关闭 hostapd,然后再使用 enable 使能 hostapd,从而实现隐藏功能。

    注意:上述修改均不会修改 hostapd.conf 配置文件

    当然对于热点的 ssid 密码及加密方式,也有一种方式可以设置完后,自动修改 hostapd.conf ,其shell 交互操作如下:

    > help
    commands:
      ping = pings hostapd
      mib = get MIB variables (dot1x, dot11, radius)
      relog = reload/truncate debug log output file
      status = show interface status info
      sta <addr> = get MIB variables for one station
      all_sta = get MIB variables for all stations
      list_sta = list all stations
      new_sta <addr> = add a new station
      deauthenticate <addr> = deauthenticate a station
      disassociate <addr> = disassociate a station
      sa_query <addr> = send SA Query to a station
      wps_pin <uuid> <pin> [timeout] [addr] = add WPS Enrollee PIN
      wps_check_pin <PIN> = verify PIN checksum
      wps_pbc = indicate button pushed to initiate PBC
      wps_cancel = cancel the pending WPS operation
      wps_nfc_tag_read <hexdump> = report read NFC tag with WPS data
      wps_nfc_config_token <WPS/NDEF> = build NFC configuration token
      wps_nfc_token <WPS/NDEF/enable/disable> = manager NFC password token
      wps_ap_pin <cmd> [params..] = enable/disable AP PIN
      wps_config <SSID> <auth> <encr> <key> = configure AP
      wps_get_status = show current WPS status
      disassoc_imminent = send Disassociation Imminent notification
      ess_disassoc = send ESS Dissassociation Imminent notification
      bss_tm_req = send BSS Transition Management Request
      get_config = show current configuration
      help = show this usage help
      interface [ifname] = show interfaces/select interface
      raw <params..> = send unprocessed command
      level <debug level> = change debug level
      license = show full hostapd_cli license
      quit = exit hostapd_cli
      set <name> <value> = set runtime variables
      get <name> = get runtime info
      set_qos_map_set <arg,arg,...> = set QoS Map set element
      send_qos_map_conf <addr> = send QoS Map Configure frame
      chan_switch <cs_count> <freq> [sec_channel_offset=] [center_freq1=]
        [center_freq2=] [bandwidth=] [blocktx] [ht|vht]
        = initiate channel switch announcement
      hs20_wnm_notif <addr> <url>
        = send WNM-Notification Subscription Remediation Request
      hs20_deauth_req <addr> <code (0/1)> <Re-auth-Delay(sec)> [url]
        = send WNM-Notification imminent deauthentication indication
      vendor <vendor id> <sub command id> [<hex formatted data>]
        = send vendor driver command
      enable = enable hostapd on current interface
      reload = reload configuration for current interface
      disable = disable hostapd on current interface
      erp_flush = drop all ERP keys
      log_level [level] = show/change log verbosity level
      pmksa  = show PMKSA cache entries
      pmksa_flush  = flush PMKSA cache
      set_neighbor <addr> <ssid=> <nr=> [lci=] [civic=] [stat]
        = add AP to neighbor database
      remove_neighbor <addr> <ssid=> = remove AP from neighbor database
      req_lci <addr> = send LCI request to a station
      req_range  = send FTM range request
      driver_flags  = show supported driver flags
      accept_acl =Add/Delete/Show/Clear accept MAC ACL
      deny_acl =Add/Delete/Show/Clear deny MAC ACL
      poll_sta <addr> = poll a STA to check connectivity with a QoS null frame
    > 
    > 
    > 
    

    此时,这些命令里 wps_config 命令可以用于修改无线热点的名称,密码和加密方式。命令格式如下:

    hostapd_cli wps_config <new SSID> <auth> <encr> <new key>
    examples:
      hostapd_cli wps_config testing WPA2PSK CCMP 12345678
      hostapd_cli wps_config "no security" OPEN NONE ""
    
    <auth> must be one of the following: OPEN WPAPSK WPA2PSK WPAPSKALL
    <encr> must be one of the following: NONE WEP TKIP CCMP
    

    注意, WPAPSKALL 是 SylixOS 添加的,原始版本的 hostapd_cli 只支持 wpa 和 wpa2,即对应 hostapd.conf 文件中的 wpa 参数只能设置为 1 和 2, 不能设置为 3。而在 Spirit 产品中,需要让 AP 同时支持 wpa 和 wpa2,因此此处添加了 WPAPSKALL 这个选项

    综上,在 hostapd_cli 的命令行界面里可以使用如下命令修改 ssid 和密码,如下命令会将 hostapd 开启的无线热点的名称和密码分别修改成:EdgerOS 和 987654321。其加密信息为 CCMP 的 WPA2PSK 加密。

    >wps_config EdgerOS WPA2PSK CCMP 987654321
    

    当然,如果只想借助 hostapd_cli 修改一下 ssid 和密码,不想进入其命令操作界面,那么也可以直接在 hostapd_cli 启动时跟上面的命令即可,此时 hostapd_cli 只会去配置 ssid 和密码,不会进入命令行界面,操作如下:

    [root@sylixos:/root]# hostapd_cli wps_config testAP WPAPSKALL CCMP 12345678
    
    • 实时获取无线热点相关状态信息

    获取无线热点信息以及相关状态有两种方式:

    • 最常见的一种就是使用 hostapd_cli 提供的相关命令来获取,比如 status ,get_config 等命令。具体使用方法,可以参考上一节内容。
      以下是 使用这两个命令,获取到的一个无线信息:

      > status
      state=ENABLED
      phy=phy0
      freq=2462
      num_sta_non_erp=0
      num_sta_no_short_slot_time=0
      num_sta_no_short_preamble=0
      olbc=0
      num_sta_ht_no_gf=0
      num_sta_no_ht=0
      num_sta_ht_20_mhz=0
      num_sta_ht40_intolerant=0
      olbc_ht=0
      ht_op_mode=0x0
      cac_time_seconds=0
      cac_time_left_seconds=N/A
      channel=11
      secondary_channel=0
      ieee80211n=1
      ieee80211ac=0
      beacon_int=100
      dtim_period=2
      ht_caps_info=000e
      ht_mcs_bitmask=ffff0000000000000000
      supported_rates=02 04 0b 16 0c 12 18 24 30 48 60 6c
      max_txpower=20
      bss[0]=wl3
      bssid[0]=20:32:33:59:28:04
      ssid[0]=EdgerOS
      num_sta[0]=1
      
      > get_config
      bssid=20:32:33:59:28:04
      ssid=EdgerOS
      wps_state=configured
      passphrase=987654321
      psk=d1b952932f9c3c4db8fe39930c2b88d6849a01a66a7e58a2c41f82c3724549c8
      wpa=2
      key_mgmt=WPA-PSK
      group_cipher=CCMP
      rsn_pairwise_cipher=CCMP
      > 
      
    • 另一种方式,是如果使用的无线网卡本身具备 proc 文件系统功能,那么也可以采用访问 proc 文件的方式去获取无线相关信息。如SylixOS 目前支持的 RTL8192EU 无线网卡,就是支持 proc 文件系统的,此时在SylixOS 下,可以使用如下方式,去获取无线网卡的相关信息:

      获取射频信息

      [root@sylixos:/root]# cat /proc/net/rtl8192eu/wl3/rf_info
      cur_ch=11, cur_bw=0, cur_ch_offet=0
      oper_ch=11, oper_bw=0, oper_ch_offet=0
      

      获取 ap 信息

      [root@sylixos:/root]# cat /proc/net/rtl8192eu/wl3/ap_info 
      SSID=EdgerOS
      sta's macaddr:20:32:33:59:28:04
      cur_channel=11, cur_bwmode=0, cur_ch_offset=0
      wireless_mode=0xb, rtsen=0, cts2slef=0
      state=0x10, aid=0, macid=32, raid=0
      qos_en=1, ht_en=1, init_rate=0
      bwmode=0, ch_offset=0, sgi_20m=1,sgi_40m=1
      ampdu_enable = 1
      agg_enable_bitmap=0, candidate_tid_bitmap=0
      ldpc_cap=0x0, stbc_cap=0x0, beamform_cap=0x0
      

      获取发送参数信息

      [root@sylixos:/root]# cat /proc/net/rtl8192eu/wl3/tx_info_msg
      status=AP mode
      ==============================
      macaddr=9c:2e:a1:fa:5f:77
      Tx_Data_Rate=MCS15
      BW=20M,sgi=1
      

      获取所有 STA 信息

      [root@sylixos:/root]# cat /proc/net/rtl8192eu/wl3/all_sta_info
      ==============================
      sta's macaddr:ff:ff:ff:ff:ff:ff
      rtsen=0, cts2slef=0
      state=0x1, aid=0, macid=1, raid=0
      qos_en=0, ht_en=0, init_rate=22
      bwmode=0, ch_offset=0, sgi_20m=0,sgi_40m=0
      ampdu_enable = 0
      tx_amsdu_enable = 0
      agg_enable_bitmap=0, candidate_tid_bitmap=0
      sleepq_len=0
      sta_xmitpriv.vo_q_qcnt=0
      sta_xmitpriv.vi_q_qcnt=0
      sta_xmitpriv.be_q_qcnt=0
      sta_xmitpriv.bk_q_qcnt=0
      capability=0x0
      flags=0x0
      wpa_psk=0x0
      wpa2_group_cipher=0x0
      wpa2_pairwise_cipher=0x0
      qos_info=0x0
      dot118021XPrivacy=0x4
      rx_data_uc_pkts=0
      rx_data_mc_pkts=0
      rx_data_bc_pkts=0
      rx_uc_bytes=0
      rx_mc_bytes=0
      rx_bc_bytes=0
      rx_tp =0 (Kbps)
      tx_data_pkts=0
      tx_bytes=0
      tx_tp =0 (Kbps)
      ==============================
      ==============================
      sta's macaddr:00:e0:4c:b7:91:5d
      rtsen=0, cts2slef=0
      state=0x10, aid=0, macid=32, raid=0
      qos_en=1, ht_en=1, init_rate=0
      bwmode=1, ch_offset=2, sgi_20m=1,sgi_40m=1
      ampdu_enable = 1
      tx_amsdu_enable = 0
      agg_enable_bitmap=0, candidate_tid_bitmap=0
      sleepq_len=0
      sta_xmitpriv.vo_q_qcnt=0
      sta_xmitpriv.vi_q_qcnt=0
      sta_xmitpriv.be_q_qcnt=0
      sta_xmitpriv.bk_q_qcnt=0
      capability=0x0
      flags=0x0
      wpa_psk=0x0
      wpa2_group_cipher=0x0
      wpa2_pairwise_cipher=0x0
      qos_info=0x0
      dot118021XPrivacy=0x0
      rx_data_uc_pkts=0
      rx_data_mc_pkts=0
      rx_data_bc_pkts=0
      rx_uc_bytes=0
      rx_mc_bytes=0
      rx_bc_bytes=0
      rx_tp =0 (Kbps)
      tx_data_pkts=0
      tx_bytes=0
      tx_tp =0 (Kbps)
      ==============================
    展开全文
  • hostapd_cli 使用手册

    千次阅读 2020-05-19 14:53:38
    hostapd_cli 无线AP工具SylixOS hostapd_cli 软件介绍1、功能介绍2、工具使用hostapd_cli 的编译注意事项:主要流程:1. 配置方式一: shell 交互方式2. 配置方式二: 带参数运行3、hostapd_cli 常用 AP 操作 Sylix...

    SylixOS hostapd_cli 软件介绍


    1、功能介绍

    hostapd_cli 是一款用作无线 AP 功能的客户端程序。它需要与 hostapd 主程序配置使用。hostapd 的使用可以参考 《hostapd 使用手册》。

    注:本篇文档均是针对 SylixOS 下的 hostapd_cli 的使用说明。


    2、工具使用

    hostapd_cli 的编译

    hostapd_cli 用于设置或修改hostapd的相关服务,因此其源码就在 hostapd 工程中。在SylixOS下,如果需要编译hostapd_cli,只需要将 hostapd 工程根目录中 deconfig 文件CONFIG_COMPILE_CLI=y 注释掉,那么编译出来的就是hostapd_cli,否则就是hostapd。如下图所示:
    在这里插入图片描述

    注意事项:

    要启动 hostapd_cli ,就必须先在 hostapd 的配置文件中,指定好一个控制接口的路劲。即需要在配置文件中,对 ctrl_interface 进行设置

    主要流程:

    hostapd_cli 作为 hostapd 的客户端,使用时,首先需要先启动 hostapd 主程序。hostapd 启动后,运行 cli 客户端时,会自动去连接当前正在工作的 hostapd 进程,连接成功后,cli 客户端就可以对 hostapd 应用程序进行参数的获取和控制。

    1. 配置方式一: shell 交互方式

    使用此方式,可以借助 hostapd_cli 提供的交互命令与 hostapd 进行通信,从而获取当前 AP 的状态,或者对 AP 的配置进行动态修改。这种方式的启动,无需跟任何参数,直接运行 hostapd_cli 即可。如下所示:

    [root@sylixos:/root]# 
    [root@sylixos:/root]# hostapd_cli
    hostapd_cli v2.9
    Copyright (c) 2004-2019, Jouni Malinen <j@w1.fi> and contributors
    
    This software may be distributed under the terms of the BSD license.
    See README for more details.
    
    
    Selected interface 'wl3'
    
    Interactive mode
    
    > 
    > 
    > 
    > 
    
    

    2. 配置方式二: 带参数运行

    如果不想使用第一种 shell 交互式的操作,则可以使用带参数运行 hostapd_cli 的方式去使用 hostapd_cli。如想要修改 ssid ,那在使用第一种方式时,操作如下:
    在这里插入图片描述
    如果使用第二种方式,那么可以直接跟上需要配置的内容作参数即可,使用方法如下:
    在这里插入图片描述

    3、hostapd_cli 常用 AP 操作

    hostapd 可以使用 set 命令,在 hostapd 启动后,对 hostapd 配置文件,即 hostapd.conf
    内所有的配置项进行配置,从而实现动态修改配置的目的。

    注意:

    • 使用 set 命令进行修改时,修改的内容是对应的内存里变量的内容,并不是修改 hostapd 配置文件的内容,因此在使用 set 命令完成所有的配置修改后,需要使用 reload 命令将这些配置重新加载。
    • 有些配置内容即使按照 set 、reload 配置后,也是无法更新的。比如隐藏 ssid 功能,此时需要再 set 命令配置完成后,先使用 disable 命令,禁用 hostapd,然后再使用 enable 启动 hostapd,从而实现配置更新。

    以下是常用的一些 AP 配置操作,本节借助第二种方式进行配置说明:

    • 修改无线热点名称
    [root@sylixos:/root]# hostapd_cli set ssid Test
    Selected interface 'wl3'
    OK
    [root@sylixos:/root]# hostapd_cli reload       
    Selected interface 'wl3'
    OK
    

    配置内容:修改 ssid 为 “Test”

    • 修改无线密码
    [root@sylixos:/root]# hostapd_cli set wpa_passphrase 12345678
    Selected interface 'wl3'
    OK
    [root@sylixos:/root]# hostapd_cli reload       
    Selected interface 'wl3'
    OK
    

    配置内容:修改密码为 “12345678”

    • 设置 AP 热点 channel
    [root@sylixos:/root]# hostapd_cli set channel 11
    Selected interface 'wl3'
    OK
    [root@sylixos:/root]# hostapd_cli reload        
    Selected interface 'wl3'
    OK
    

    配置内容:修改通道为 11

    • 设置 AP 热点隐藏
    [root@sylixos:/root]# hostapd_cli set ignore_broadcast_ssid 1
    Selected interface 'wl3'
    OK
    [root@sylixos:/root]# hostapd_cli disable                    
    Selected interface 'wl3'
    OK
    [root@sylixos:/root]# hostapd_cli enable 
    Selected interface 'wl3'
    OK
    

    配置内容:修改 ignore_broadcast_ssid 属性为 1(或者为 2),则会隐藏当前的 ssid,这里不能使用 reload 去重新加载配置,因为隐藏 ssid 需要做更多的操作修改,因此这里先使用 disable 关闭 hostapd,然后再使用 enable 使能 hostapd,从而实现隐藏功能。

    注意:上述修改均不会修改 hostapd.conf 配置文件

    当然对于热点的 ssid 密码及加密方式,也有一种方式可以设置完后,自动修改 hostapd.conf ,其shell 交互操作如下:

    > help
    commands:
      ping = pings hostapd
      mib = get MIB variables (dot1x, dot11, radius)
      relog = reload/truncate debug log output file
      status = show interface status info
      sta <addr> = get MIB variables for one station
      all_sta = get MIB variables for all stations
      list_sta = list all stations
      new_sta <addr> = add a new station
      deauthenticate <addr> = deauthenticate a station
      disassociate <addr> = disassociate a station
      sa_query <addr> = send SA Query to a station
      wps_pin <uuid> <pin> [timeout] [addr] = add WPS Enrollee PIN
      wps_check_pin <PIN> = verify PIN checksum
      wps_pbc = indicate button pushed to initiate PBC
      wps_cancel = cancel the pending WPS operation
      wps_nfc_tag_read <hexdump> = report read NFC tag with WPS data
      wps_nfc_config_token <WPS/NDEF> = build NFC configuration token
      wps_nfc_token <WPS/NDEF/enable/disable> = manager NFC password token
      wps_ap_pin <cmd> [params..] = enable/disable AP PIN
      wps_config <SSID> <auth> <encr> <key> = configure AP
      wps_get_status = show current WPS status
      disassoc_imminent = send Disassociation Imminent notification
      ess_disassoc = send ESS Dissassociation Imminent notification
      bss_tm_req = send BSS Transition Management Request
      get_config = show current configuration
      help = show this usage help
      interface [ifname] = show interfaces/select interface
      raw <params..> = send unprocessed command
      level <debug level> = change debug level
      license = show full hostapd_cli license
      quit = exit hostapd_cli
      set <name> <value> = set runtime variables
      get <name> = get runtime info
      set_qos_map_set <arg,arg,...> = set QoS Map set element
      send_qos_map_conf <addr> = send QoS Map Configure frame
      chan_switch <cs_count> <freq> [sec_channel_offset=] [center_freq1=]
        [center_freq2=] [bandwidth=] [blocktx] [ht|vht]
        = initiate channel switch announcement
      hs20_wnm_notif <addr> <url>
        = send WNM-Notification Subscription Remediation Request
      hs20_deauth_req <addr> <code (0/1)> <Re-auth-Delay(sec)> [url]
        = send WNM-Notification imminent deauthentication indication
      vendor <vendor id> <sub command id> [<hex formatted data>]
        = send vendor driver command
      enable = enable hostapd on current interface
      reload = reload configuration for current interface
      disable = disable hostapd on current interface
      erp_flush = drop all ERP keys
      log_level [level] = show/change log verbosity level
      pmksa  = show PMKSA cache entries
      pmksa_flush  = flush PMKSA cache
      set_neighbor <addr> <ssid=> <nr=> [lci=] [civic=] [stat]
        = add AP to neighbor database
      remove_neighbor <addr> <ssid=> = remove AP from neighbor database
      req_lci <addr> = send LCI request to a station
      req_range  = send FTM range request
      driver_flags  = show supported driver flags
      accept_acl =Add/Delete/Show/Clear accept MAC ACL
      deny_acl =Add/Delete/Show/Clear deny MAC ACL
      poll_sta <addr> = poll a STA to check connectivity with a QoS null frame
    > 
    > 
    > 
    

    此时,这些命令里 wps_config 命令可以用于修改无线热点的名称,密码和加密方式。命令格式如下:

    hostapd_cli wps_config <new SSID> <auth> <encr> <new key>
    examples:
      hostapd_cli wps_config testing WPA2PSK CCMP 12345678
      hostapd_cli wps_config "no security" OPEN NONE ""
    
    <auth> must be one of the following: OPEN WPAPSK WPA2PSK WPAPSKALL
    <encr> must be one of the following: NONE WEP TKIP CCMP
    

    注意, WPAPSKALL 是 SylixOS 添加的,原始版本的 hostapd_cli 只支持 wpa 和 wpa2,即对应 hostapd.conf 文件中的 wpa 参数只能设置为 1 和 2, 不能设置为 3。而在 Spirit 产品中,需要让 AP 同时支持 wpa 和 wpa2,因此此处添加了 WPAPSKALL 这个选项

    综上,在 hostapd_cli 的命令行界面里可以使用如下命令修改 ssid 和密码,如下命令会将 hostapd 开启的无线热点的名称和密码分别修改成:EdgerOS 和 987654321。其加密信息为 CCMP 的 WPA2PSK 加密。

    >wps_config EdgerOS WPA2PSK CCMP 987654321
    

    当然,如果只想借助 hostapd_cli 修改一下 ssid 和密码,不想进入其命令操作界面,那么也可以直接在 hostapd_cli 启动时跟上面的命令即可,此时 hostapd_cli 只会去配置 ssid 和密码,不会进入命令行界面,操作如下:

    [root@sylixos:/root]# hostapd_cli wps_config testAP WPAPSKALL CCMP 12345678
    
    • 实时获取无线热点相关状态信息

    获取无线热点信息以及相关状态有两种方式:

    • 最常见的一种就是使用 hostapd_cli 提供的相关命令来获取,比如 statusget_config 等命令。具体使用方法,可以参考上一节内容。
      以下是 使用这两个命令,获取到的一个无线信息:

      > status
      state=ENABLED
      phy=phy0
      freq=2462
      num_sta_non_erp=0
      num_sta_no_short_slot_time=0
      num_sta_no_short_preamble=0
      olbc=0
      num_sta_ht_no_gf=0
      num_sta_no_ht=0
      num_sta_ht_20_mhz=0
      num_sta_ht40_intolerant=0
      olbc_ht=0
      ht_op_mode=0x0
      cac_time_seconds=0
      cac_time_left_seconds=N/A
      channel=11
      secondary_channel=0
      ieee80211n=1
      ieee80211ac=0
      beacon_int=100
      dtim_period=2
      ht_caps_info=000e
      ht_mcs_bitmask=ffff0000000000000000
      supported_rates=02 04 0b 16 0c 12 18 24 30 48 60 6c
      max_txpower=20
      bss[0]=wl3
      bssid[0]=20:32:33:59:28:04
      ssid[0]=EdgerOS
      num_sta[0]=1
      
      > get_config
      bssid=20:32:33:59:28:04
      ssid=EdgerOS
      wps_state=configured
      passphrase=987654321
      psk=d1b952932f9c3c4db8fe39930c2b88d6849a01a66a7e58a2c41f82c3724549c8
      wpa=2
      key_mgmt=WPA-PSK
      group_cipher=CCMP
      rsn_pairwise_cipher=CCMP
      > 
      
    • 另一种方式,是如果使用的无线网卡本身具备 proc 文件系统功能,那么也可以采用访问 proc 文件的方式去获取无线相关信息。如SylixOS 目前支持的 RTL8192EU 无线网卡,就是支持 proc 文件系统的,此时在SylixOS 下,可以使用如下方式,去获取无线网卡的相关信息:

      获取射频信息

      [root@sylixos:/root]# cat /proc/net/rtl8192eu/wl3/rf_info
      cur_ch=11, cur_bw=0, cur_ch_offet=0
      oper_ch=11, oper_bw=0, oper_ch_offet=0
      

      获取 ap 信息

      [root@sylixos:/root]# cat /proc/net/rtl8192eu/wl3/ap_info 
      SSID=EdgerOS
      sta's macaddr:20:32:33:59:28:04
      cur_channel=11, cur_bwmode=0, cur_ch_offset=0
      wireless_mode=0xb, rtsen=0, cts2slef=0
      state=0x10, aid=0, macid=32, raid=0
      qos_en=1, ht_en=1, init_rate=0
      bwmode=0, ch_offset=0, sgi_20m=1,sgi_40m=1
      ampdu_enable = 1
      agg_enable_bitmap=0, candidate_tid_bitmap=0
      ldpc_cap=0x0, stbc_cap=0x0, beamform_cap=0x0
      

      获取发送参数信息

      [root@sylixos:/root]# cat /proc/net/rtl8192eu/wl3/tx_info_msg
      status=AP mode
      ==============================
      macaddr=9c:2e:a1:fa:5f:77
      Tx_Data_Rate=MCS15
      BW=20M,sgi=1
      

      获取所有 STA 信息

      [root@sylixos:/root]# cat /proc/net/rtl8192eu/wl3/all_sta_info
      ==============================
      sta's macaddr:ff:ff:ff:ff:ff:ff
      rtsen=0, cts2slef=0
      state=0x1, aid=0, macid=1, raid=0
      qos_en=0, ht_en=0, init_rate=22
      bwmode=0, ch_offset=0, sgi_20m=0,sgi_40m=0
      ampdu_enable = 0
      tx_amsdu_enable = 0
      agg_enable_bitmap=0, candidate_tid_bitmap=0
      sleepq_len=0
      sta_xmitpriv.vo_q_qcnt=0
      sta_xmitpriv.vi_q_qcnt=0
      sta_xmitpriv.be_q_qcnt=0
      sta_xmitpriv.bk_q_qcnt=0
      capability=0x0
      flags=0x0
      wpa_psk=0x0
      wpa2_group_cipher=0x0
      wpa2_pairwise_cipher=0x0
      qos_info=0x0
      dot118021XPrivacy=0x4
      rx_data_uc_pkts=0
      rx_data_mc_pkts=0
      rx_data_bc_pkts=0
      rx_uc_bytes=0
      rx_mc_bytes=0
      rx_bc_bytes=0
      rx_tp =0 (Kbps)
      tx_data_pkts=0
      tx_bytes=0
      tx_tp =0 (Kbps)
      ==============================
      ==============================
      sta's macaddr:00:e0:4c:b7:91:5d
      rtsen=0, cts2slef=0
      state=0x10, aid=0, macid=32, raid=0
      qos_en=1, ht_en=1, init_rate=0
      bwmode=1, ch_offset=2, sgi_20m=1,sgi_40m=1
      ampdu_enable = 1
      tx_amsdu_enable = 0
      agg_enable_bitmap=0, candidate_tid_bitmap=0
      sleepq_len=0
      sta_xmitpriv.vo_q_qcnt=0
      sta_xmitpriv.vi_q_qcnt=0
      sta_xmitpriv.be_q_qcnt=0
      sta_xmitpriv.bk_q_qcnt=0
      capability=0x0
      flags=0x0
      wpa_psk=0x0
      wpa2_group_cipher=0x0
      wpa2_pairwise_cipher=0x0
      qos_info=0x0
      dot118021XPrivacy=0x0
      rx_data_uc_pkts=0
      rx_data_mc_pkts=0
      rx_data_bc_pkts=0
      rx_uc_bytes=0
      rx_mc_bytes=0
      rx_bc_bytes=0
      rx_tp =0 (Kbps)
      tx_data_pkts=0
      tx_bytes=0
      tx_tp =0 (Kbps)
      ==============================
      
    展开全文
  • supplicant5.1 wpa_supplicant —— 连接AP热点5.2 wpa_cli —— wpa_supplicant的客户端6、动态获取IP地址6.2 方式1:使用busybox自带的udhcpc工具(推荐)6.2 方式2:dhclient7、hostapd7.1 hostapd —— ...

    1、编译步骤

    https://blog.csdn.net/weixin_44498318/article/details/107369662

    2、iwlist

    iwlist wlan0 scan[ning]					列出WiFi扫描结果
    iwlist wlan0 freq[uency]/channel		列出当前地区可用频率
    iwlist wlan0 rate/bit[rate]		 		列出支持的连接速度
    iwlist wlan0 keys/enc[ryption]			列出所支持的加密密钥大小
    iwlist wlan0 power						列出电源模式
    iwlist wlan0 txpower					列出传输功耗
    iwlist wlan0 retry						列出重连限制与次数
    iwlist wlan0 ap/accesspoint/peers		列出热点信息
    iwlist wlan0 event						列出设备支持的无线事件
    iwlist wlan0 auth						列出当前设置的WPA认证参数
    iwlist wlan0 wpa[keys]					列出设备中设置的所有WPA加密密钥
    iwlist wlan0 genie						列出设置的通用信息元素
    iwlist wlan0 modu[lation]				列出设备支持的调制和当前启用的调制
    iwlist --version						列出版本信息
    iwlist --help							列出帮助信息
    

    3、iwconfig

    iwconfig wlan0 freq 2422000000			设置频率
    iwconfig wlan0 freq 2.422G				设置频率
    iwconfig wlan0 channel 3				设置信道
    iwconfig wlan0 channel auto				设置信道
    iwconfig wlan0 modu 11g					强制设置调制方式
    iwconfig wlan0 modu CCK OFDMa			强制设置调制方式
    iwconfig wlan0 modu auto				强制设置调制方式
    iwconfig wlan0 txpower 15				设置发射功率为15dBm
    iwconfig wlan0 txpower 30mW				设置发射功率:dBm=30+log(W)
    iwconfig wlan0 txpower auto				设置自动选择发射功率
    iwconfig wlan0 txpower off				关闭发射单元
    iwconfig wlan0 sens -80					负数为接收灵敏度下限,低则表信号差,网卡会采取措施
    iwconfig wlan0 sens 2					正数表示百分比
    iwconfig wlan0 retry 16					设置最大重传次数
    iwconfig wlan0 retry lifetime 300m		设置最长重试时间,默认单位为秒
    iwconfig wlan0 retry min limit 8		若支持自动模式,min和max指定上下限
    iwconfig wlan0 rts 250					设置握手最小包的大小,等于最大值表禁止该机制
    iwconfig wlan0 rts off					auto/off/fixed禁止RTS/CTS握手方式
    iwconfig wlan0 frag 512					设置发送数据包的分片大小
    iwconfig wlan0 frag off					auto/fixed/off允许Burst模式
    iwconfig wlan0 power period 2			指定唤醒的周期,默认单位为秒
    iwconfig wlan0 power 500m unicast		all/unicast/multicast指定允许唤醒的数据包类型
    iwconfig wlan0 power timeout 300u all	all/unicast/multicast指定允许唤醒的数据包类型
    iwconfig wlan0 power off				off/on参数指定是否允许电源管理
    iwconfig wlan0 power min period 2 power max period 4 指定唤醒的周期
    

    4、iw

    iw --debug												使能netlink调试
    iw --version											查看版本信息
    iw help													显示帮助信息
    iw event [-t] [-r] [-f]									监听内核事件
    iw list/phy												列出设备性能
    iw dev													列出无线硬件的所有网络接口
    iw dev wlan0 scan										搜索周围WiFi信息
    iw dev wlan0 link										获得连接状态
    iw dev wlan0 info										显示接口信息
    iw dev wlan0 station dump								列出所有STA信息
    iw dev wlan0 connect wifi名称							连接至OPEN方式的AP
    iw dev wlan0 connect wifi名称 2432						有同名热点AP时指定特定频段
    iw dev wlan0 connect wifi名称 key 0:密码 d:1:默认密码	连接至WEP加密方式的AP
    iw dev wlan0 disconnect									断开连接
    

    5、wpa_supplicant

    5.1 wpa_supplicant —— 连接AP热点

    前面iwlist、iwconfig属于wireless tools的程序,iw是iwconfig的替代者,都仅支持连接OPEN与WEP加密方式的WiFi;而wpa_supplicant支持在802.11规范中定义的各种安全连接和WPS。

    wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf -B
    

    配置文件/etc/wpa_supplicant.conf内容参考:

    <OPEN模式>:

    ctrl_interface=/var/run/wpa_supplicant
    
    network={
     ssid="WiFi-1"
     key_mgmt=NONE
    }
    

    <WEP模式>:

    ctrl_interface=/var/run/wpa_supplicant
    
    network={
     ssid="WiFi-1"
     key_mgmt=NONE
     wep_key0="abcde"
     wep_key1=0102030405
     wep_tx_keyidx=0
    }
    

    <WPA模式>:

    ctrl_interface=/var/run/wpa_supplicant
    
    network={
     ssid="WiFi-1"
     key_mgmt=WPA-PSK
     proto=WPA
     pairwise=TKIP
     group=TKIP
     psk="123123123"
    }
    

    <WPA2模式>:

    ctrl_interface=/var/run/wpa_supplicant
    
    network={
     ssid="WiFi-1"
     psk="123123123"
    }
    

    5.2 wpa_cli —— wpa_supplicant的客户端

    wpa_cli程序的运行需要依赖于wpa_supplicant的后台运行,属于服务器端和客户端的关系。

    wpa_cli help											打印帮助信息
    wpa_cli -i wlan0 status									显示当前连接信息
    wpa_cli -i wlan0 scan									搜索周围WiFi信息
    wpa_cli -i wlan0 scan_result							显示上一次的搜索结果
    wpa_cli -i wlan0 list_networks							显示已配置的网络与信息
    wpa_cli -i wlan0 add_network							添加一个网络返回一个数字n
    wpa_cli -i wlan0 set_network n ssid '"name"'			输入要连接的WiFi名称
    wpa_cli -i wlan0 set_network n key_mgmt NONE			输入加密方式OPEN/WEP
    wpa_cli -i wlan0 set_network n wep_key0 '"psk"'			输入加密方式WEP的密码
    wpa_cli -i wlan0 set_network n psk '"psk"'				输入加密方式WPA/WPA2的密码
    wpa_cli -i wlan0 enable_network n						设置后需要启用WiFi
    wpa_cli -i wlan0 save_config							保存WiFi配置
    wpa_cli -i wlan0 select_network n						有多个WiFi时选择其中一个
    wpa_cli -i wlan0 reconfigure							重新加载配置文件
    wpa_cli -i wlan0 disconnect								断开WiFi连接
    wpa_cli -i wlan0 reconnect								重新连接
    wpa_cli -i wlan0 remove_network n						移除WiFi配置
    wpa_cli -i wlan0 terminate								关闭后台服务器程序
    wpa_cli [-i wlan0]										进入交互模式,命令可以为status等
    

    6、动态获取IP地址

    6.2 方式1:使用busybox自带的udhcpc工具(推荐)

    udhcpc -i wlan0 -b
    

    如果没有获取到IP地址请参考 ==>【嵌入式Linux:解决busybox udhcpc获取IP但没有设置系统DNS的问题】

    6.2 方式2:dhclient

    dhclient wlan0					获取IP地址
    dhclient -r						释放IP地址
    dhclient -s 192.168.1.123		从指定的服务器获取ip地址
    

    7、hostapd

    7.1 hostapd —— 创建AP热点

    hostapd /etc/myhostapd.conf -B
    

    hostapd依赖于dhcpd后台运行给连接的设备动态分配IP地址,配置文件/etc/myhostapd.conf内容如下:

    <OPEN模式>:

    ctrl_interface=/var/run/hostapd
    #change wlan0 to your wireless device
    interface=wlan0
    driver=nl80211
    ssid=WiFi-1
    channel=1
    macaddr_acl=0
    auth_algs=1
    ignore_broadcast_ssid=0
    

    <WEP模式>:

    ctrl_interface=/var/run/hostapd
    #change wlan0 to your wireless device
    interface=wlan0
    driver=nl80211
    ssid=WiFi-1
    channel=1
    macaddr_acl=0
    auth_algs=2
    ignore_broadcast_ssid=0
    wep_key0="123123123"
    wep_default_key=0
    

    <WPA/WPA2模式>:

    ctrl_interface=/var/run/hostapd
    #change wlan0 to your wireless device
    interface=wlan0
    driver=nl80211
    ssid=WiFi-1
    channel=1
    macaddr_acl=0
    auth_algs=1
    ignore_broadcast_ssid=0
    wpa=3
    wpa_passphrase=123123123
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP
    

    7.2 hostapd_cli —— hostapd的客户端

    hostapd_cli -h									显示帮助信息
    hostapd_cli -v									显示版本信息
    hostapd_cli -p <path>							指定socket的路径						
    hostapd_cli -i wlan0 all_sta					显示所有连接设备
    hostapd_cli -i wlan0 sta <addr>					查看某个设备信息
    hostapd_cli -i wlan0 interface					显示网卡接口
    hostapd_cli -i wlan0 interface [ifname]			指定网卡接口
    hostapd_cli -i wlan0 get_config					获得配置
    hostapd_cli -i wlan0 disassociate <addr>		断开某个设备的连接
    hostapd_cli -i wlan0 level n					设置打印级别
    hostapd_cli -i wlan0 license					显示证书
    hostapd_cli [-i wlan0]							进入交互模式,命令可以为all_sta等
    

    8、动态分配IP地址

    8.1 方式1:使用busybox自带的udhcpd工具(推荐)

    # 提示没有哪些文件就去给它创建
    touch /etc/udhcpd.leases
    udhcpd -f /etc/dhcpd.conf &
    

    配置文件/etc/dhcpd.conf内容如下:

    start 192.168.1.100
    end 192.168.1.199
    interface wlan0
    max_leases 32
    remaining yes
    auto_time 7200
    decline_time 3600
    conflict_time 3600
    offer_time 60
    min_lease 60
    pidfile /etc/dhcpd_wlan0_pid.txt
    lease_file /etc/udhcpd.leases
    opt dns 192.168.1.1
    opt subnet 255.255.255.0
    opt router 192.168.1.1
    opt wins 192.168.1.1
    opt domain local
    opt lease 3600
    

    8.2 方式2:dhcpd

    touch /var/db/dhcpd.leases
    ifconfig wlan0 192.168.1.1
    dhcpd -cf /etc/dhcpd.conf wlan0
    

    其中,dhcpd.conf内容可以添加内容实现分配IP范围:

    subnet 192.168.1.0 netmask 255.255.255.0 {                       
      range 192.168.1.10 192.168.1.100;                              
      option domain-name-servers 192.168.1.1;                        
      option routers 192.168.1.1;                                    
    }  
    
    展开全文
  • hostapd_cli命令源码分析

    千次阅读 2017-02-15 14:33:43
    hostapd提供了控制命令hostapd_cli,使用方法可以查看usage。源码中的main函数:int main(int argc, char *argv[]) { int warning_displayed = 0; int c; int daemonize = 0; if (os_program_init())//不同操作...

    hostapd提供了控制命令hostapd_cli,使用方法可以查看usage。

    这里写图片描述

    源码中的main函数:

    int main(int argc, char *argv[])
    {
        int warning_displayed = 0;
        int c;
        int daemonize = 0;
    
        if (os_program_init())//不同操作体统平台下执行不同的环境初始化
            return -1;
    
        for (;;) {   //执行getopt的选择,h则显示usage
            c = getopt(argc, argv, "a:BhG:i:p:P:s:v");
            if (c < 0)
                break;
            switch (c) {
            case 'a':
                action_file = optarg;
                break;
            case 'B':    //后台执行
                daemonize = 1;
                break;
            case 'G':
                ping_interval = atoi(optarg);
                break;
            case 'h':
                usage();
                return 0;
            case 'v':
                printf("%s\n", hostapd_cli_version);
                return 0;
            case 'i':    //选择控制的网络接口
                os_free(ctrl_ifname);
                ctrl_ifname = os_strdup(optarg);
                break;
            case 'p':
                ctrl_iface_dir = optarg;
                break;
            case 'P':
                pid_file = optarg;
                break;
            case 's':
                client_socket_dir = optarg;
                break;
            default:
                usage();
                return -1;
            }
        }
    
        interactive = (argc == optind) && (action_file == NULL);
    
        if (interactive) {
            printf("%s\n\n%s\n\n", hostapd_cli_version, cli_license);
        }
    
        if (eloop_init())//创建和初始化epoll
            return -1;
    
        for (;;) {
            if (ctrl_ifname == NULL) {
                struct dirent *dent;
                DIR *dir = opendir(ctrl_iface_dir);
                if (dir) {
                    while ((dent = readdir(dir))) {
                        if (os_strcmp(dent->d_name, ".") == 0
                            ||
                            os_strcmp(dent->d_name, "..") == 0)
                            continue;
                        printf("Selected interface '%s'\n",
                               dent->d_name);
                        ctrl_ifname = os_strdup(dent->d_name);
                        break;
                    }
                    closedir(dir);
                }
            }
            ctrl_conn = hostapd_cli_open_connection(ctrl_ifname);//连接hostapd进程
            if (ctrl_conn) {
                if (warning_displayed)
                    printf("Connection established.\n");
                break;
            }
    
            if (!interactive) {
                perror("Failed to connect to hostapd - "
                       "wpa_ctrl_open");
                return -1;
            }
    
            if (!warning_displayed) {
                printf("Could not connect to hostapd - re-trying\n");
                warning_displayed = 1;
            }
            os_sleep(1, 0);
            continue;
        }
    
        if (interactive || action_file) {
            if (wpa_ctrl_attach(ctrl_conn) == 0) {
                hostapd_cli_attached = 1;
                register_event_handler(ctrl_conn);
            } else {
                printf("Warning: Failed to attach to hostapd.\n");
                if (action_file)
                    return -1;
            }
        }
    
        if (daemonize && os_daemonize(pid_file) && eloop_sock_requeue())
            return -1;
    //以下是控制操作的核心
        if (interactive)
            hostapd_cli_interactive();
        else if (action_file)
            hostapd_cli_action(ctrl_conn);
        else
            wpa_request(ctrl_conn, argc - optind, &argv[optind]);
    
        unregister_event_handler(ctrl_conn);
        os_free(ctrl_ifname);
        eloop_destroy();
        hostapd_cli_cleanup();
        return 0;
    }

    如果是交互状态则,执行交换式的命令行操作hostapd_cli_interactive,执行是文件操作,则执行hostapd_cli_action 函数,其它情况,执行wpa_request 函数。

    hostapd_cli_interactive 函数操作如下:

    static void hostapd_cli_interactive(void)
    {
        printf("\nInteractive mode\n\n");
    
        eloop_register_signal_terminate(hostapd_cli_eloop_terminate, NULL);
        edit_init(hostapd_cli_edit_cmd_cb, hostapd_cli_edit_eof_cb,
              hostapd_cli_edit_completion_cb, NULL, NULL, NULL);
        eloop_register_timeout(ping_interval, 0, hostapd_cli_ping, NULL, NULL);
    
        eloop_run();
    
        cli_txt_list_flush(&stations);
        edit_deinit(NULL, NULL);
        eloop_cancel_timeout(hostapd_cli_ping, NULL, NULL);
    }
    

    主要是调用了edit_init 函数,关联了hostapd_cli_edit_cmd_cbhostapd_cli_edit_eof_cbhostapd_cli_edit_completion_cb三个操作函数:

    edit_init(hostapd_cli_edit_cmd_cb, hostapd_cli_edit_eof_cb,
          hostapd_cli_edit_completion_cb, NULL, NULL, NULL); 
    

    最后的执行还是调用操作了wpa_request

    
    
    static void wpa_request(struct wpa_ctrl *ctrl, int argc, char *argv[])
    {
        const struct hostapd_cli_cmd *cmd, *match = NULL;
        int count;
    
        count = 0;
        cmd = hostapd_cli_commands;
        while (cmd->cmd) {
            if (strncasecmp(cmd->cmd, argv[0], strlen(argv[0])) == 0) {
                match = cmd;
                if (os_strcasecmp(cmd->cmd, argv[0]) == 0) {
                    /* we have an exact match */
                    count = 1;
                    break;
                }
                count++;
            }
            cmd++;
        }
    
        if (count > 1) {
            printf("Ambiguous command '%s'; possible commands:", argv[0]);
            cmd = hostapd_cli_commands;
            while (cmd->cmd) {
                if (strncasecmp(cmd->cmd, argv[0], strlen(argv[0])) ==
                    0) {
                    printf(" %s", cmd->cmd);
                }
                cmd++;
            }
            printf("\n");
        } else if (count == 0) {
            printf("Unknown command '%s'\n", argv[0]);
        } else {
            match->handler(ctrl, argc - 1, &argv[1]);
        }
    }

    其中结构体hostapd_cli_cmd是对应命令行不同命令的操作项目集合:

    struct hostapd_cli_cmd {
        const char *cmd;
        int (*handler)(struct wpa_ctrl *ctrl, int argc, char *argv[]);
        char ** (*completion)(const char *str, int pos);
        const char *usage;
    } 
    

    最后执行的是操作函数handler()completion()

    以下是最新稳定版hostapd提供的hostapd_cli操作条目和操作函数集合:

    
    static const struct hostapd_cli_cmd hostapd_cli_commands[] = {
        { "ping", hostapd_cli_cmd_ping, NULL,
          "= pings hostapd" },
        { "mib", hostapd_cli_cmd_mib, NULL,
          "= get MIB variables (dot1x, dot11, radius)" },
        { "relog", hostapd_cli_cmd_relog, NULL, NULL },
        { "status", hostapd_cli_cmd_status, NULL, NULL },
        { "sta", hostapd_cli_cmd_sta, NULL,
          "<addr> = get MIB variables for one station" },
        { "all_sta", hostapd_cli_cmd_all_sta, NULL,
           "= get MIB variables for all stations" },
        { "new_sta", hostapd_cli_cmd_new_sta, NULL,
          "<addr> = add a new station" },
        { "deauthenticate", hostapd_cli_cmd_deauthenticate,
          hostapd_complete_deauthenticate,
          "<addr> = deauthenticate a station" },
        { "disassociate", hostapd_cli_cmd_disassociate,
          hostapd_complete_disassociate,
          "<addr> = disassociate a station" },
    #ifdef CONFIG_TAXONOMY
        { "signature", hostapd_cli_cmd_signature, NULL,
          "<addr> = get taxonomy signature for a station" },
    #endif /* CONFIG_TAXONOMY */
    #ifdef CONFIG_IEEE80211W
        { "sa_query", hostapd_cli_cmd_sa_query, NULL,
          "<addr> = send SA Query to a station" },
    #endif /* CONFIG_IEEE80211W */
    #ifdef CONFIG_WPS
        { "wps_pin", hostapd_cli_cmd_wps_pin, NULL,
          "<uuid> <pin> [timeout] [addr] = add WPS Enrollee PIN" },
        { "wps_check_pin", hostapd_cli_cmd_wps_check_pin, NULL,
          "<PIN> = verify PIN checksum" },
        { "wps_pbc", hostapd_cli_cmd_wps_pbc, NULL,
          "= indicate button pushed to initiate PBC" },
        { "wps_cancel", hostapd_cli_cmd_wps_cancel, NULL,
          "= cancel the pending WPS operation" },
    #ifdef CONFIG_WPS_NFC
        { "wps_nfc_tag_read", hostapd_cli_cmd_wps_nfc_tag_read, NULL,
          "<hexdump> = report read NFC tag with WPS data" },
        { "wps_nfc_config_token", hostapd_cli_cmd_wps_nfc_config_token, NULL,
          "<WPS/NDEF> = build NFC configuration token" },
        { "wps_nfc_token", hostapd_cli_cmd_wps_nfc_token, NULL,
          "<WPS/NDEF/enable/disable> = manager NFC password token" },
        { "nfc_get_handover_sel", hostapd_cli_cmd_nfc_get_handover_sel, NULL,
          NULL },
    #endif /* CONFIG_WPS_NFC */
        { "wps_ap_pin", hostapd_cli_cmd_wps_ap_pin, NULL,
          "<cmd> [params..] = enable/disable AP PIN" },
        { "wps_config", hostapd_cli_cmd_wps_config, NULL,
          "<SSID> <auth> <encr> <key> = configure AP" },
        { "wps_get_status", hostapd_cli_cmd_wps_get_status, NULL,
          "= show current WPS status" },
    #endif /* CONFIG_WPS */
        { "disassoc_imminent", hostapd_cli_cmd_disassoc_imminent, NULL, NULL },
        { "ess_disassoc", hostapd_cli_cmd_ess_disassoc, NULL, NULL },
        { "bss_tm_req", hostapd_cli_cmd_bss_tm_req, NULL, NULL },
        { "get_config", hostapd_cli_cmd_get_config, NULL,
          "= show current configuration" },
        { "help", hostapd_cli_cmd_help, hostapd_cli_complete_help,
          "= show this usage help" },
        { "interface", hostapd_cli_cmd_interface, hostapd_complete_interface,
          "[ifname] = show interfaces/select interface" },
    #ifdef CONFIG_FST
        { "fst", hostapd_cli_cmd_fst, NULL, NULL },
    #endif /* CONFIG_FST */
        { "raw", hostapd_cli_cmd_raw, NULL, NULL },
        { "level", hostapd_cli_cmd_level, NULL,
          "<debug level> = change debug level" },
        { "license", hostapd_cli_cmd_license, NULL,
          "= show full hostapd_cli license" },
        { "quit", hostapd_cli_cmd_quit, NULL,
          "= exit hostapd_cli" },
        { "set", hostapd_cli_cmd_set, NULL, NULL },
        { "get", hostapd_cli_cmd_get, NULL, NULL },
        { "set_qos_map_set", hostapd_cli_cmd_set_qos_map_set, NULL, NULL },
        { "send_qos_map_conf", hostapd_cli_cmd_send_qos_map_conf, NULL, NULL },
        { "chan_switch", hostapd_cli_cmd_chan_switch, NULL, NULL },
        { "hs20_wnm_notif", hostapd_cli_cmd_hs20_wnm_notif, NULL, NULL },
        { "hs20_deauth_req", hostapd_cli_cmd_hs20_deauth_req, NULL, NULL },
        { "vendor", hostapd_cli_cmd_vendor, NULL, NULL },
        { "enable", hostapd_cli_cmd_enable, NULL, NULL },
        { "reload", hostapd_cli_cmd_reload, NULL, NULL },
        { "disable", hostapd_cli_cmd_disable, NULL, NULL },
        { "erp_flush", hostapd_cli_cmd_erp_flush, NULL, NULL },
        { "log_level", hostapd_cli_cmd_log_level, NULL, NULL },
        { "pmksa", hostapd_cli_cmd_pmksa, NULL, NULL },
        { "pmksa_flush", hostapd_cli_cmd_pmksa_flush, NULL, NULL },
        { "set_neighbor", hostapd_cli_cmd_set_neighbor, NULL, NULL },
        { "remove_neighbor", hostapd_cli_cmd_remove_neighbor, NULL, NULL },
        { "req_lci", hostapd_cli_cmd_req_lci, NULL, NULL },
        { "req_range", hostapd_cli_cmd_req_range, NULL, NULL },
        { "driver_flags", hostapd_cli_cmd_driver_flags, NULL, NULL },
        { NULL, NULL, NULL, NULL }
    };
    

    可以通过查找相应的调用执行函数了解hostapt_cli相应操作的详细执行过程。

    展开全文
  • hostapd_cli

    千次阅读 2017-10-31 10:44:27
    hostapd_cli命令源码分析 hostapd_cli 命令介绍
  • linux wifi wpa_clihostapd_cli命令总结 linux wifi wpa_clihostapd_cli命令总结 posted on 2017-02-28 19:40 xuhaohunter 阅读(...) 评论(...) 编辑 收藏 ...
  • hostapd_cli 命令介绍

    万次阅读 2014-04-30 19:31:25
    hostapd_cli –h Options:  -h help (show this usage text)  -v shown version information  -p path to findcontrol sockets (default: /var/run/hostapd)  -a run in daem

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 841
精华内容 336
关键字:

hostapd_cli