wpa_cli扫描后中文ssid无法正确显示问题

一.问题说明

wpa_cli scan扫描周围热点后,通过wpa_cli -i wlan0 scan_result查询扫描到的热点,发现中文显示是\xe9\xa3等无法识别字符

wpa_cli scan
Selected interface 'wlan0'
OK

wpa_cli -i wlan0 scan_result
bssid / frequency / signal level / flags / ssid
34:71:46:f2:a2:5d       2412    -56     [WPA2-PSK-CCMP][ESS]    \xe9\xa3\x9e\xe6\xbe\x9c_Wi-Fi5
80:ea:07:1a:90:50       2462    -57     [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      TP-LINK_9050
 

二.问题分析

可能是scan_result扫描结果后,打印时做了转换,需要分析wpa_supplicant工具的源代码解决

三.代码流程说明

scan_result 获取过程:(wpa_cli.c)

wpa_request

        wpa_cli_commands.wpa_cli_cmd_scan_results

static int wpa_cli_cmd_scan_results(struct wpa_ctrl *ctrl, int argc,char *argv[])
   wpa_ctrl_command(ctrl, "SCAN_RESULTS");

        _wpa_ctrl_command(ctrl, cmd, 1);

                ret = wpa_ctrl_request(ctrl, cmd, os_strlen(cmd), buf, &len,
                   wpa_cli_msg_cb);

                        send(ctrl->s, _cmd, _cmd_len, 0)      //通过local socket 发送给wpa_supplicant进程

wpa_supplicant 处理

 else if (os_strcmp(buf, "SCAN_RESULTS") == 0) {
        reply_len = wpa_supplicant_ctrl_iface_scan_results(
            wpa_s, reply, reply_size);

wpa_supplicant_ctrl_iface_scan_results   

     ret = os_snprintf(pos, end - pos, "***bssid / frequency / signal level / "
              "flags / ssid***\n");

    dl_list_for_each(bss, &wpa_s->bss_id, struct wpa_bss, list_id) {
        ret = wpa_supplicant_ctrl_iface_scan_result(wpa_s, bss, pos,

                                end - pos)

最终修改点

//ret = os_snprintf(pos, end - pos, "\t%s",
 //             wpa_ssid_txt(bss->ssid, bss->ssid_len));

修改为
 ret = os_snprintf(pos, end - pos, "\t%s",(char*)bss->ssid);


四.更新wpa_cli与wpa_supplicant工具后测试正常

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值