nmcliを使用してWiFiスクリプトに無差別パスワードを書き込むには?

nmcliを使用してWiFiスクリプトに無差別パスワードを書き込むには?

list-of-pwds 次のスクリプトの目的は、WiFiに接続するためにファイル内の正しいパスワードを見つけることです。正しいパスワードを見つけたら、検索を中止してください。

#!/usr/bin/bash

nmcli d wifi list

echo "Give me the SSID."
read ssid

if [[ -f $HOME/list-of-pwds ]]; then
    :
else
    >>$HOME/list-of-pwds
fi

echo -e "Place the passwords in $HOME/list-of-pwds.\nPress 'y' when ready to proceed?[Y/n]"
read proceed

if [[ "${proceed}" == 'y' ]]; then
  
      while IFS="" read -u 7 -r l || [[ -n "${l}" ]]; do    
      nmcli connection add type wifi ifname wlp3s0 ssid "${ssid}" con-name "${ssid}" +802-11-wireless-security.key-mgmt WPA-PSK +802-11-wireless-security.psk "${l}"
      if [[ "${?}" -eq 0 ]]; then
        echo "Found password for  ${ssid}: ${l}."
        break
      fi
    done 7<$HOME/list-of-pwds    
  
fi

#nmcli con show --active seems to return always 0 irrespectively on the connection status
#but nmcli con show --active|grep whatever returns 0 only when there is an active connection

list-of-pwds次のようになります。

ana
game
bondage
domination
submission
masochism
thecorrrectPassword
tordfasre

最初の行に正しいパスワードがない場合は、 list-of-pwds次のような結果が出力されます。

Error: Failed to add 'net' connection: 802-11-wireless-security.psk: property is invalid
Error: Failed to add 'net' connection: 802-11-wireless-security.psk: property is invalid
Error: Failed to add 'net' connection: 802-11-wireless-security.psk: property is invalid
Connection 'net' (66ab5db1-a662-43a0-bfbe-ee353a7e14d6) successfully added.
Found password for  net: domination.

netssidはどこにありますか?私のWiFiのセキュリティはWPA2です。パスワードの長さは正しいが正しくない場合、 パスワードを求めるポップアップウィンドウが表示されます。。スクリプトが正しいパスワードを見つけた場合、そのようなポップアップは表示されません。たとえば、dominationパスワードの長さが正確であっても(ポップアップ表示)、正しいパスワードではなく(ポップアップ表示)、正しい thecorrrectPasswordパスワードです(ポップアップは表示されません)。交換したのはまさにこのポップアップでしたが、nmcli d wifi connect "${ssid}" password "${l}" 問題nmcli connection add type wifi ifname wlp3s0 ssid "${ssid}" con-name "${ssid}" +802-11-wireless-security.key-mgmt WPA-PSK +802-11-wireless-security.psk "${l}" は続いていました。

@tripleeeのヒントに従って、パスワードを含むファイルをコマンドライン引数として渡そうとしましたが、次のように修正しました。

802-11-wireless-security.psk:ana
802-11-wireless-security.psk:game
802-11-wireless-security.psk:bondage
802-11-wireless-security.psk:domination
802-11-wireless-security.psk:submission
802-11-wireless-security.psk:masochism
802-11-wireless-security.psk:thecorrectPassword
802-11-wireless-security.psk:torture

スクリプトを再作成します。

#!/usr/bin/bash


nmcli d wifi list

echo "Give me the SSID."
read ssid

if [[ -f $HOME/list-of-pwds ]]; then
    :
else
    >>$HOME/list-of-pwds
fi

echo -e "Place the passwords in $HOME/list-of-pwds.\nReady to proceed?[Y/n]"
read proceed

if [[ "${proceed}" == 'y' ]]; then
  nmcli con add type wifi con-name "${ssid}" ssid "${ssid}"
  nmcli con mod "${ssid}" wifi-sec.key-mgmt wpa-psk
  nmcli connection up "${ssid}" ifname wlp3s0 passwd-file "$HOME/list-of-pwds"
fi

認証を要求するポップアップと次の標準出力を受け取りました。

Connection 'net' (dcaab1be-4d54-49f6-ac3b-30bc153806ae) successfully added.
Error: Connection activation failed: Secrets were required, but not provided
Hint: use 'journalctl -xe NM_CONNECTION=dcaab1be-4d54-49f6-ac3b-30bc153806ae + NM_DEVICE=wlp3s0' to get more details.

私は台本を知っていますnmcli 良い無差別代入ツールになる可能性は低いです。。つまり、無差別代入ツールのように動作するようにスクリプトを再構築できるかどうか疑問に思います。問題の分布は特定ですか(Ubuntu Desktop 22.04 LTSを使用していますか?)

ベストアンサー1

おすすめ記事