#!/bin/sh cd $(dirname $(readlink -f $0)) interface=${interface:-wlan0} root=${root:-../../} crackdir=$root/usr/lib/autowifi/plugins wifi_keys=$root/etc/autowifi/wifi_keys wifi_log=$root/var/log/autowifi.log painmode=${painmode:-} # exists() run_hooks() . $root/usr/lib/autowifi/lib/core . $root/usr/lib/autowifi/lib/network # start_wpa_supplicant() . $root/usr/lib/autowifi/lib/wpa_supplicant find_count_of_ssid(){ c=0 for i in `seq 1 $WIFI_COUNT`; do eval SSID=\${ESSID_${i}} if [ "$SSID" = "$1" ]; then c+=1 echo "$i" fi done if [ $c -eq 0 ];then exit 1 fi exit 0 } connect_to_network_by_ssid(){ find_count_of_ssid "$1" | (while read i do loop_over_cracks "$i" && exit 0 done;exit 1) if [ $? -eq 0 ]; then exit 0 fi echo "no network found :(" exit 1 } connect_with_pw(){ find_count_of_ssid "$1" | (while read i do KEY="$2" eval connect \"\${MAC_${i}}\" \"\${ESSID_${i}}\" \${ENCRYPTION_${i}} \"\${KEY}\" if [ $? -eq 0 ]; then exit 0 fi done;exit 1) } wifi_init(){ exists fortune && fortune -a wpa_supplicant_is_usable || start_wpa_supplicant /tmp/autowifi.wpa_supplicant wifi_scan > /tmp/${interface}.scan . /tmp/${interface}.scan } loop_over_networks(){ for i in `seq 1 $WIFI_COUNT`; do loop_over_cracks "$i" if [ $? -eq 0 ]; then return 0 fi done } loop_over_cracks(){ i=$1 KEY='' for crack in $(find $crackdir -type f | sort -u); do KEY="$(eval root=$root painmode=$painmode \$crack \"\${ESSID_${i}}\" \"\${MAC_${i}}\" \${FREQ_${i}} \${ENCRYPTION_${i}})" if [ $? -eq 0 ]; then eval echo \"\${MAC_${i}}\" \"\${ESSID_${i}}\" \${ENCRYPTION_${i}} \"\${KEY}\" fi done return 1 } loop_cracks_over_networks(){ for crack in $(find $crackdir -type f | sort -u); do for i in `seq 1 $WIFI_COUNT`; do KEY="$(eval root=$root \$crack \"\${ESSID_${i}}\" \"\${MAC_${i}}\" \${FREQ_${i}} \${ENCRYPTION_${i}})" if [ $? -eq 0 ]; then eval echo \"\${MAC_${i}}\" \"\${ESSID_${i}}\" \${ENCRYPTION_${i}} \"\${KEY}\" fi done done } wifi_init if [ -n "$1" ]; then echo cracking $1 connect_to_network_by_ssid "$1" else loop_cracks_over_networks fi