blob: 891e89388335678530b5e0ee22f970cc29dc16c4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
#!/bin/sh -x
wifi=wlan0
iface=@wifi-iface[0]
radio=$(uci get wireless.${iface}.device)
connect_wifi(){
# channel ssid encryption key
uci set wireless.${iface}.mode=sta
ifconfig $wifi up
uci set wireless.${radio}.channel=$1
uci set "wireless.${iface}.ssid=$2"
if [ $3 == "none" ] ; then
uci set wireless.${iface}.encryption=none
uci -q delete wireless.${iface}.key
else
uci set "wireless.${iface}.key=$4"
uci set wireless.${iface}.encryption=$3
fi
uci commit wireless
wifi up
}
print_iwlist_env(){
# takes environment:
# count
# MAC
# CHANNEL
# QUALITY
# ENCRYPTION
# ESSID
# WPA
# WPA2
for i in ESSID MAC CHANNEL QUALITY ENCRYPTION WPA WPA2;do
eval echo ${i}_${count}=\$${i}
done
}
iwlist_scan(){
ifconfig $wifi up
count=0
iwlist scan ${1:-} 2>/dev/null | ( while read line;
do
case "$line" in
*"Cell "*)
[ $count -eq 0 ] || print_iwlist_env
WPA=0
WPA2=0
: $((count+=1))
MAC="${line#*Address: }"
;;
*Channel:*)
CHANNEL="${line#*:}"
;;
*Quality=*)
QUALITY="`printf '%s' ${line#*Quality=} | cut -d/ -f 1`"
;;
*"Encryption key:"*)
ENCRYPTION="${line#*key:}"
;;
*ESSID:*)
ESSID="${line#*ESSID:}"
;;
*"IE: IEEE 802.11i/WPA2"*)
WPA2=1
;;
*"IE: WPA Version 1"*)
WPA=1
;;
*);;
esac
done; print_iwlist_env ;echo WIFI_COUNT=$count)
}
crack_wifi(){
#SSID MAC CHANNEL ENCRYPTION WPA WPA2
if [ "$4" == off ];then
encr=open
elif [ "$6" -eq 1 ]; then
encr=psk2
elif [ "$5" -eq 1 ]; then
encr=psk
elif [ "$4" == on ]; then
encr=wep
fi
for hack in $(find /usr/lib/autowifi/ -type f); do
key=$($hack "$@");
ret=$?
if [ $ret -eq 0 ];then
connect_wifi "$3" "$1" $encr "$key"
sleep 10
if check_gateway; then
(cat /etc/autowifi/wifi_keys | grep -v "$1|$2|" ; echo "$1|$2|$key" ) | sort | uniq > /etc/autowifi/wifi_keys2
mv /etc/autowifi/wifi_keys2 /etc/autowifi/wifi_keys
echo "yay gateway"
check_internet && return 0
fi
fi
done
return 1
}
check_gateway(){
ping -c 1 -w 5 $(ip route | awk '/default/{print $3}')
}
check_internet(){
secret=$(wget -O- http://euer.krebsco.de/secret)
if [ "$secret" == "1337" ]; then
return 0
else
return 1
fi
}
loop_over_networks(){
. /tmp/${wifi}.scan
for i in `seq 1 $WIFI_COUNT`; do
eval grep -q \${MAC_${i}} /etc/autowifi/blacklist && continue
eval crack_wifi "\${ESSID_${i}}" \${MAC_${i}} \${CHANNEL_${i}} \${ENCRYPTION_${i}} \${WPA_${i}} \${WPA2_${i}} && break
done
}
iwlist_scan > /tmp/${wifi}.scan
loop_over_networks
while sleep 60; do
if ! check_internet; then
iwlist_scan > /tmp/${wifi}.scan
loop_over_networks
fi
done
|