<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                本節將介紹本章第二條分析路線,即通過命令行發送命令的方式觸發wpa_supplicant進行相關工作,使手機加入一個利用WPA-PSK進行認證的無線網絡。 以筆者的Note 2為例,整個過程用到的命令如下所示。 **命令示例** ~~~ adb root #獲取手機root用戶權限。只有root被破解的手機才能成功 adb shell #登錄手機shell #筆者事先已編譯wpa_cli并將其放到/system/bin目錄中。這個命令用于啟動wpa_cli,-i參數指明unix域控制 #socket文件名,它應該和wpa_supplicant啟動時設置的控制接口文件名一致 wpa_cli -iwlan0 #該命令執行后,將進入wpa_cli進程,后續操作都在此進程中開展 #發送ADD_NETWORK命令給wpa_supplicant,它將返回一個新網絡配置項的編號。請參考4.3.3.1"wpas_ssid結構 #體介紹"一節 ADD_NETWORK #假設wpa_supplicant返回的新網絡配置項編號為0 SET_NETWORK 0 ssid "Test" #設置0號網絡的ssid為“Test” SET_NETWORK 0 key_mgmt WPA-PSK #設置0號網絡的key_mgmt為“WPA-PSK” SET_NETWORK 0 psk "12345Test" #設置0號網絡的psk為“12345Test” ENABLE_NETWORK 0 #使能0號網絡,它將觸發wpa_supplicant掃描、關聯等一系列操作直到加入無線網絡“Test” CTRL+C #退出wpa_cli dhcpcd wlan0 #啟動dhcpd,wlan0為無線接口設備名。dhcpcd可為手機從AP那獲取一個IP地址 ~~~ dhcpcd成功執行后,手機將從AP那分配到一個IP地址。至此,手機就可以使用“Test”無線網絡了。 注意:上述命令執行前有幾個注意事項: 1. 先要在Settings中開啟無線網絡。這個操作完成了wlan驅動及相應固件加載的工作。該工作實際上由netd來完成,而wpa_cli無法完成它。 2. 開啟無線網絡后,WifiService和wpa_supplicant都開始工作了。為了避免WifiService的干擾,可以把Settings中的那些已知的無線網絡信息都清除。 3. 由于wpa_supplicant支持多個客戶端,所以wpa_cli可以和WifiService共同工作。只要不操作Settings中無線網絡相關的選項,WifiService就不會干擾wpa_cli。 4. 然后按上述步驟執行wpa_cli。 根據前文所述,所有來自客戶端的命令都由wpa_supplicant_ctrl_iface_receive函數處理(參考4.3.4中“wpa_supplicant_ctrl_iface_init介紹”一節)。該函數代碼非常簡單,就是根據客戶端發送的命令進行對應處理。 **ctrl_iface_unix.c::wpa_supplicant_ctrl_iface_receive** ~~~ static void wpa_supplicant_ctrl_iface_receive(int sock, void *eloop_ctx,void *sock_ctx) { struct wpa_supplicant *wpa_s = eloop_ctx; struct ctrl_iface_priv *priv = sock_ctx; char buf[4096]; int res; struct sockaddr_un from; socklen_t fromlen = sizeof(from); char *reply = NULL; size_t reply_len = 0; int new_attached = 0; res = recvfrom(sock, buf, sizeof(buf) - 1, 0,(struct sockaddr *) &from, &fromlen); ..... buf[res] = '\0'; //客戶端第一次和WPAS連接時,需要發送"ATTACH"命令 if (os_strcmp(buf, "ATTACH") == 0) { ......//略過相關處理 } .....//"DETACH"和"LEVEL"命令處理 else { #if defined(CONFIG_P2P) && defined(ANDROID_P2P) ......//P2P處理。雖然WPAS編譯時打開了CONFIG_P2P和ANDROID_P2P,但本章不討論P2P相關的內容 #endif //大部分的命令處理都在wpa_supplicant_ctrl_iface_process函數中 reply = wpa_supplicant_ctrl_iface_process(wpa_s, buf,&reply_len); } if (reply) {//回復客戶端 sendto(sock, reply, reply_len, 0, (struct sockaddr *) &from,fromlen); os_free(reply); } ...... /* Client成功ATTACH后,將通知EAPOL模塊。因為有些認證流程需要用戶的參與(例如輸入密碼之類的), 所以當客戶端連接上后,EAPOL模塊將判斷是否需要和客戶端交互。讀者可閱讀 eapol_sm_notify_ctrl_attached函數。 */ if (new_attached) eapol_sm_notify_ctrl_attached(wpa_s->eapol); } ~~~ 如上述代碼所示,絕大部分命令都由wpa_supplicant_ctrl_iface_process函數處理。下面將按順序來分析其處理ADD_NETWORK、SET_NETWORK以及ENABLE_NETWORK的代碼。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看