diff options
Diffstat (limited to 'usr')
| -rwxr-xr-x | usr/bin/autowifi | 2 | ||||
| -rwxr-xr-x | usr/bin/autowifi_dryrun | 101 | ||||
| -rw-r--r-- | usr/lib/autowifi/lib/network | 2 | ||||
| -rw-r--r-- | usr/lib/autowifi/lib/plugin_core | 2 | 
4 files changed, 81 insertions, 26 deletions
| diff --git a/usr/bin/autowifi b/usr/bin/autowifi index 673a7a0a..6b9a090c 100755 --- a/usr/bin/autowifi +++ b/usr/bin/autowifi @@ -170,7 +170,7 @@ else      check_internet || loop_cracks_over_networks      while sleep 10; do -        if ! check_internet; then +        if ! check_gateway; then              loop_cracks_over_networks          fi      done diff --git a/usr/bin/autowifi_dryrun b/usr/bin/autowifi_dryrun index c9867106..68e38a8f 100755 --- a/usr/bin/autowifi_dryrun +++ b/usr/bin/autowifi_dryrun @@ -1,38 +1,61 @@ -#!/bin/sh  -# ENV: -# the root directory (e.g. root=$PWD/../../ if run from here ) +#!/bin/sh  cd $(dirname $(readlink -f $0)) -test  "${1:-}" = 'quiet' && exec 2>&- +  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 -crack_wifi(){ -    #SSID MAC FREQ ENCRYPTION  - -    ALL_RET=1 -    for hack in $(find $root/usr/lib/autowifi/plugins -type f | sort -n); do -        printf "%s" "Trying $(basename $hack) against $1 : " >&2 -        key=$($hack "$@"); -        ret=$? -        if [ $ret -eq 0 ];then -            echo "success!" >&2 -            echo $1|$2|$encr|$key -            ALL_RET=0 -        else -            echo "fail ..." >&2 + +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 -    return $ALL_RET +    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(){      wpa_supplicant_is_usable || start_wpa_supplicant /tmp/autowifi.wpa_supplicant @@ -40,12 +63,44 @@ wifi_init(){      . /tmp/${interface}.scan  }  loop_over_networks(){ -    wifi_init -    echo "SSID:MAC:FREQ:ENCRYPTION:key" +    wifi_init      for i in `seq 1 $WIFI_COUNT`; do -        eval crack_wifi \"\${ESSID_${i}}\" \${MAC_${i}} \${FREQ_${i}} \${ENCRYPTION_${i}}  +        loop_over_cracks "$i" +        if [ $? -eq 0 ]; then +            return 0 +        fi      done  } -loop_over_networks +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(){ +    wifi_init +    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 diff --git a/usr/lib/autowifi/lib/network b/usr/lib/autowifi/lib/network index c21f0db0..a0105120 100644 --- a/usr/lib/autowifi/lib/network +++ b/usr/lib/autowifi/lib/network @@ -1,7 +1,7 @@  #!/bin/sh  check_gateway(){ -    ping -c 1 -w 5 $(ip route | awk '/default/{print $3}') +    ping -c 1 -w 5 $(ip route | awk '/default/{print $3}') >/dev/null  }  check_internet(){      # TODO determine the loader, either wget or curl diff --git a/usr/lib/autowifi/lib/plugin_core b/usr/lib/autowifi/lib/plugin_core index 700d15f8..e79a3c05 100644 --- a/usr/lib/autowifi/lib/plugin_core +++ b/usr/lib/autowifi/lib/plugin_core @@ -37,5 +37,5 @@ check_vendor_mac(){    return 1  }  check_painmode(){ -    test -n "${painmode:-}" && echo "painmode required">&2 && exit 1 +    test -z "${painmode:-}" && echo "painmode required" && exit 1  } | 
