gpt4 book ai didi

linux - 如何构建一个脚本来使用 bash 以可访问的方式为每个网络单独存储 channel 、BSSID 和 ESSID

转载 作者:太空宇宙 更新时间:2023-11-04 05:25:40 25 4
gpt4 key购买 nike

我目前正在使用 kali Linux 2.0 开发 bash 脚本项目。我的脚本基本上扫描网络,当它找到一个网络时,它应该以某种方式将其 ESSID、BSSID 和 channel 存储在一起。然后它在每个网络的命令中使用 BSSID、ESSID 和 channel 。我已经尽我所能地进行了最好的研究,以找到如何存储每个网络的这些详细信息。我知道这可以通过创建数据库或表来完成,尽管我对他们的了解非常有限。所以我尝试使用 grep 和 awk -

`b=$(iwlist <interface> scan|grep Address|awk '{ print $5 }')
echo $b`

按以下顺序输出 bssids -

`xx:xx:xx:xx:xx:xx xx:xx:xx:xx:xx:xx xx:xx:xx:xx:xx:xx xx:xx:xx:xx:xx:xx xx:xx:xx:xx:xx:xx`

并且不使用 grep 和 awk 进行过滤:

`wlan2 Scan completed : 
Cell 01 - Address: xx:xx:xx:xx:xx:xx
Channel:xx
Frequency:2.462 GHz (Channel xx)
Quality=24/70
Signal level=-86 dBm
Encryption key:on
ESSID:"xxxx"
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s 24 Mb/s; 36 Mb/s; 54 Mb/s Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
Mode:Master`

但这对我没有太大帮助。相反,我希望它是这样的:

`bssid1=xx:xx:xx:xx:xx:xx
chan1=X
bssid2=xx:xx:xx:xx:xx:xx
chan2=x
.
.
.
.`

脚本中这些变量的数量将随着扫描的网络数量的增加而增加。我的问题是,如何构建一个脚本来使用 bash 将 Channel、BSSID 和 ESSID 分别存储为每个网络的变量?

最佳答案

一种可能的方法是使用 bash 数组和 while 循环。这是一种方法:

declare -a bsids
declare -a channels
declare -a essids

ind=-1
while read line; do
case $line in
Cell*)
((ind++))
bsids[$ind]=${line##* }
;;
Channel*)
channels[$ind]=${line##*:}
;;
ESSID*)
essids[$ind]=${line##*:}
;;
esac
done < <(iwlist <iface> scan)

然后你将拥有 3 个可以访问的数组

printf "BSID 1: %s\n" "${bsids[0]}"
printf "CHANNEL 1: %s\n" "${channels[0]}"
printf "ESSID 1: %s\n" "${essids[0]}"

关于linux - 如何构建一个脚本来使用 bash 以可访问的方式为每个网络单独存储 channel 、BSSID 和 ESSID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32437954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com