序文:
wpa_cliを使用してwifiに接続する前に、wpa_supplicantについて学習しましょう。
wpa_supplicantと
は: Googleによって変更され、Andriodモバイルプラットフォームに追加されたプロジェクトのオープンソースソースコードです。これは、ワイヤレスネットワークを管理および制御するStationの機能を実現します。Wpa_supplicantは、以下の非常に強力なワイヤレスネットワークカード管理プログラムです。 Linuxシステム
。wpa_supplicantには何がありますか?機能:
主に暗号化に使用され、主にOPEN、WEP、WPA(TKIP)、WPA2(AES)およびその他のタイプのワイヤレスプロトコルと暗号化認証をサポートし
ます。wpa_supplicant作業内容:
ソケットを介して(wpa_supplicantかどうか)上位層またはwpa_supplicantとドライバーはソケット通信を使用します)はドライバーと対話してデータをユーザーに報告し、ユーザーはソケットを介してwpa_supplicantにコマンドを送信して、ドライバーを動員してWiFiチップを操作できます。
wpa_supplicantの3つの成果:
- それはWiFiドライバーとユーザーのためのトランジットポイントです
- 契約のサポート。
- 暗号化された認証のサポート
wap_cliとwpa_supplicantの関係
コンパイルされたwpa_supplicantソースプログラムは、wpa_supplicantとwpa_cliの2つの主要な実行可能ツールを見ることができます。wpa_supplicantはコアプログラムであり、wpa_cliとの関係はサービスとクライアントの関係です。wpa_supplicantはバックグラウンドで実行され、wpa_cliはネットワークの検索、設定、接続に使用されます。
言い換えると:
wpa_supplicantツールには、wpa_supplicantとwpa_cliの2つのプログラムが含まれています。そのうち、wpa_supplicantプログラムは、サーバーとしてバックグラウンドで実行され、wpa_cliクライアントの要求を処理することで、WiFi構成接続を実現します。
wap_supplicantソフトウェアアーキテクチャAndroidwifi
フレームワーク図上の図
からわかるように、wpa_cliはフレームワークにあるWifiServiceであり、wpa_supplicantもはっきりと表示され、カーネルIQにあります。
wap_cliはwifiに接続します
wpa_cliに接続する前に、wpa_supplicantを実行します。wpa_supplicantプログラムはwpa_cliのサーバーとして使用されます。このプログラムは、wpa_cliがアクセスして使用する前に起動する必要があります。
- 独自のネットワークポート(wlan0など)がオンになっているかどうかを確認します。adbシェルに入った後、次のコマンドを使用します
#:ifconfig
オンになっていない場合は、次のコマンドを使用できます(効果はwifi設定をオンにするのと同じです)。
#: ifconfig wlan0 up
ifconfigが正常に実行されると、次のように表示されます。
wlan0 Link encap:Ethernet HWaddr 36:1b:02:76:0b:91 Driver icnss
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3000
RX bytes:0 TX bytes:0
- wpa_supplicantサーバーを起動します。
bash #: /vendor/bin/hw/wpa_supplicant -iwlan0 -c/data/vendor/wifi/wpa/wpa_supplicant.conf -B
上記のコマンドについて説明します。
- / vendor / bin / hw / wpa_supplicant:wpa_supplicant.conf構成ファイルではなく、wpa_supplicant実行可能プログラムを表します
- -B:デーモンプロセスwpa_supplicantをハングさせてバックグラウンドで実行することを意味します
- -iwlan0:ネットワークインターフェースwlan0
- 注:wpa_supplicantのパスが異なり、wpa_supplicant.confのパスも異なります。AndroidPie9.0ではwpa_supplicant.confとctrl_interfaceのパスが変更されているため、wpa_supplicantを正しく開始するための鍵はここで正しいパラメーターパスを指定することです。
- -i:指定されたネットワークポート。
- -D:ドライブタイプを指定します(複数のドライバーは次のようになります:nl80211、wext)
- -c:wpa_supplicantの設定ファイルを指定します。
- -C:ctrl_interfaceパラメーター
wpa_cliを開きます
格式:wpa_cli -i网口 -p socket所在路径
wpa_cli -i wlan0 -p/data/vendor/wifi/wpa/sockets/
もちろん、p/data/vendor/wifi/wpa/sockets/
デフォルトでは省略できます。説明を
わかりやすくするために、これはwpa_cliが正常にオンになったときのwlan0のパスです。
wpa_cli v2.10-devel-11
Copyright (c) 2004-2019, Jouni Malinen <[email protected]> and contributors
This software may be distributed under the terms of the BSD license.
See README for more details.
Interactive mode
- 新しいネットワーク接続を追加します。
add_network
1
set_network 1 SSID「HUAWEI」// SSID
OK
set_network 1 key_mgmt WPA-PSK //設定したパスワードの管理方法
OKの
set_network 1 PSK「xx123456」//設定したパスワード
OKの
SAVE_CONFIG //保存設定
OKの
enable_network 1 //ネットワークを有効に
OKを
list_networkを使用して、参加したネットワーク情報を確認します。
> list_network
network id / ssid / bssid / flags
0 HUAWEI any
この時点でエラーが発生した場合:この時点でネットワークポート(wlan0)が開いていない場合は、wpa_cliがwpa_supplicantとのソケット接続を確立していないことを意味します。
status
wpa_state = INTERFACE_DISABLED
p2p_device_address = 5e:52:ea:b4:8b:c2
address = fa:8a:fa:16:55:bf
uuid = 02e63f31-bd2c-5cc3-9346-5baf6ff11365
<3> CTRL-EVENT-STATE- CHANGE id = 0 state = 1 BSSID = 00:00:00:00:00:00 SSID = thundersoft
正しい場合は、次のようになります。
> status
bssid=9c:3a:9a:87:00:20
freq=2437
ssid=HUAWEI
id=0
mode=station
wifi_generation=4
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
p2p_device_address=5e:52:ea:b4:8b:c2
address=fa:8a:fa:16:55:bf
uuid=02e63f31-bd2c-5cc3-9346-5baf6ff11365
<3>CTRL-EVENT-STATE-CHANGE id=0 state=9 BSSID=9c:3a:9a:87:00:20 SSID=HUAWEI
<3>CTRL-EVENT-CONNECTED - connection to 9c:3a:9a:87:00:20 completed (auth) [id=0 id_str=]
<3>CTRL-EVENT-STATE-CHANGE id=0 state=6 BSSID=9c:3a:9a:87:00:20 SSID=HUAWEI
<3>Associated with 9c:3a:9a:87:00:30
<3>CTRL-EVENT-CONNECTED - Connection to 9c:3a:9a:87:00:30 completed [id=0 id_str=]
<3>CTRL-EVENT-STATE-CHANGE id=0 state=9 BSSID=9c:3a:9a:87:00:30 SSID=HUAWEI
<3>CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
これで接続は成功しました。wpa_cliを介して指定されたAPに接続した後、正しいIPアドレスが割り当てられておらず、正しいIPアドレスを割り当てる必要があるため、現時点ではインターネットにアクセスできません。
- ネットワークに接続されている携帯電話にIPを割り当てます。
# ifconfig wlan0 192.168.18.11
ifconfigを実行します。
# ifconfig
wlan0 Link encap:Ethernet HWaddr fa:8a:fa:16:55:bf Driver icnss
inet addr:192.168.18.11 Bcast:192.168.18.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:266 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3000
RX bytes:37944 TX bytes:750
割り当てたIPを見て、
pingを実行しましょう。
# ping 192.168.18.11
PING 192.168.18.11 (192.168.18.11) 56(84) bytes of data.
64 bytes from 192.168.18.11: icmp_seq=1 ttl=64 time=0.371 ms
64 bytes from 192.168.18.11: icmp_seq=2 ttl=64 time=0.290 ms
64 bytes from 192.168.18.11: icmp_seq=3 ttl=64 time=0.289 ms
64 bytes from 192.168.18.11: icmp_seq=4 ttl=64 time=0.274 ms
64 bytes from 192.168.18.11: icmp_seq=5 ttl=64 time=0.282 ms
64 bytes from 192.168.18.11: icmp_seq=6 ttl=64 time=0.288 ms
--- 192.168.18.11 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5186ms
rtt min/avg/max/mdev = 0.274/0.299/0.371/0.032 ms
パケットロスなし!
この時点で、接続は終了しました
。1つだけ知りたい場合は、以下を確認する必要はありません。次のコマンドはすべてクライアントで実行されます。
- スキャン:近くのAPをスキャンします
- scan_result:最新のスキャンの結果を一覧表示します
- list_networks:追加されたすべてのAPを一覧表示します
- add_network:APを追加します
- set_network:ssid、passwordなど、指定されたAPの関連パラメーターを設定します。詳細については、ファイルwpa_supplicant.confを参照してください。
- enable_network:指定したAPに接続します。このコマンドを正常に実行すると、指定したAPに接続します。接続に失敗した場合は、APパラメータが間違っていないか確認してください。
wpa_cliを入力せず、adbシェルに直接接続します
wpa_cliを開始します
wpa_cli -i wlan0 scan //搜索附件wifi热点
wpa_cli -i wlan0 scan_result //显示搜索wifi热点
wpa_cli -i wlan0 status //当前WPA/EAPOL/EAP通讯状态
wpa_cli -i wlan0 ping //pings wpa_supplicant
新しい接続を追加します
wpa_cli -i wlan0 add_network //添加一个网络连接,会返回<network id>
wpa_cli set_network <network id> ssid '"name"' //ssid名称
wpa_cli set_network <network id> psk '“psk”' //密码
wpa_cli set_network <network id> key_mgmt WPA-PSK
接続を保存します
wpa_cli -i wlan0 save_config //信息保存到默认的配置文件中
切断する
wpa_cli -i wlan0 disable_network <network id>
接続済み
wpa_cli -i wlan0 list_network //列举保存过得连接
wpa_cli -i wlan0 select_network <network id> //连接指定的ssid
指定されたssidを有効にする
wpa_cli -i wlan0 enable_network <network id>