wpa_supplicant コードで遊んだ経験のある人の助けが必要です。
私が理解しているのは、サプリカントが AP に接続するために wpa_supplicant がすべてを投与するということです (それが何なのか)。したがって、手順は次のとおりです。
- スキャン
- スキャン結果を取得する
- 認証
- アソック
- 4ハンドシェイク
- データ交換
私がこれを理解しているように、最初の 4 つのステップは wpa_supplicant によってのみ管理されます。つまり、wpa_supplicant は、メイン イベント ループが EVENT_ASSOC メッセージを受信した後に、これらの手順を実行するために下層のドライバーを呼び出すだけです。4 ハンドシェイクを開始します。
私の場合、最初の 2 つのステップがドライバーで実行されても問題ありません。つまり、wpa_supplicant がスキャン要求を送信し、ドライバーがスキャンを実行し、スキャン結果をフィードします。
私の質問は、wpa_supplicant が必要なパケットを生成できず、たとえばレイヤー 2 (rawsocket) を使用して認証要求を AP に送信できないということですか? 続いて関連付け要求が続きますか?...これらをドライバ層からのハンドルとして単純に提供しますか?
wpa_supplicant.c のコードからわかるように (void wpa_supplicant_associate(struct wpa_supplicant *wpa_s, struct wpa_bss *bss, struct wpa_ssid *ssid))
この関数は、選択したドライバーへの関数ポインターを呼び出します。".associate = wpa_driver_nl80211_associate" ここでドライバーはこれを udnerlaying nl80211 ドライバー コードに送信しますか? .... wpa_supplicant は、これらのパケットを自分で生成できませんか?
これが意味をなすことを願っています。そうでない場合は、お尋ねください:)