summaryrefslogtreecommitdiffstats
path: root/autowifi
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2013-06-07 00:46:36 +0200
committermakefu <github@syntax-fehler.de>2013-06-07 00:46:36 +0200
commit83baf76c734a5c9471fd9ab4dd90c952aba4e6a0 (patch)
treef2c429cb79f7f3937e43130a50241a2e7c81950b /autowifi
parentb0273180da89e11cd6a7346ed1a72e9f17fbf230 (diff)
parent5a428d4646b73f16b890f6c089a67dbc710df533 (diff)
Merge branch 'master' of github.com:krebscode/painload
Diffstat (limited to 'autowifi')
-rwxr-xr-xautowifi/autowifi212
-rw-r--r--autowifi/confdir/blacklist2
-rwxr-xr-xautowifi/confdir/cracks/00profile11
-rwxr-xr-xautowifi/confdir/cracks/01open6
-rwxr-xr-xautowifi/confdir/hooks/wlan0/post/00tinc-up2
-rwxr-xr-xautowifi/confdir/hooks/wlan0/pre/00changemac5
6 files changed, 238 insertions, 0 deletions
diff --git a/autowifi/autowifi b/autowifi/autowifi
new file mode 100755
index 00000000..5bdbde22
--- /dev/null
+++ b/autowifi/autowifi
@@ -0,0 +1,212 @@
+#!/bin/sh -x
+
+confdir=${confdir:-"$(dirname $0)/confdir"}
+interface="wlan0"
+
+exists() { type "$1" >/dev/null 2>/dev/null; }
+
+start_wpa_supplicant(){
+ killall wpa_supplicant
+ sleep 1
+cat>wpa.conf<<EOF
+ctrl_interface=/var/run/wpa_supplicant
+EOF
+ wpa_supplicant -i wlan0 -c wpa.conf -B
+ sleep 4
+}
+
+connect(){
+ #mac ssid encryption key
+ wpa_cli reconfigure
+
+ #INTERFACE PRE CONNECT HOOKS
+ for hook in $(find $confdir/hooks/$interface/pre -type f | sort -u); do
+ $hook $@
+ done
+
+ #PROFILE PRE CONNECT HOOKS
+ for hook in $(find "$confdir/hooks/$2/pre" -type f | sort -u); do
+ $hook $@
+ done
+
+ int=$(wpa_cli add_network | tail -1)
+ wpa_cli set_network $int ssid \"$2\"
+ wpa_cli set_network $int bssid $1
+ #wpa_cli set_network $int ap_scan 1
+ if [ "$3" = "[ESS]" ]; then
+ wpa_cli set_network $int key_mgmt NONE
+ else
+ wpa_cli set_network $int key_mgmt WPA-PSK
+ wpa_cli set_network $int psk \"$4\"
+ fi
+ wpa_cli enable_network $int
+
+ if exists dhcpcd; then
+ dhcpcd -x $interface
+ dhcpcd -w -A $interface
+ elif exists dhclient; then
+ dhclient $interface
+ fi
+
+ if check_gateway && check_internet; then
+ echo yay internet
+ #INTERFACE POST CONNECT HOOKS
+ for hook in $(find $confdir/hooks/$interface/post -type f | sort -u); do
+ $hook $@
+ done
+
+ #PROFILE POST CONNECT HOOKS
+ for hook in $(find "$confdir/hooks/$2/post" -type f | sort -u); do
+ $hook $@
+ done
+
+
+ bandw=$(check_bandwidth)
+ (cat $confdir/wifi_stats | grep -v "|$1|" ; echo "$2|$1|$bandw|$4" ) | sort | uniq > $confdir/wifi_stats2
+ mv $confdir/wifi_stats2 $confdir/wifi_stats
+ return 0
+ fi
+ return 1
+
+}
+print_iwlist_env(){
+ # takes environment:
+ # MAC
+ # FREQ
+ # QUALITY
+ # ENCRYPTION
+ # ESSID
+ for i in MAC FREQ QUALITY ENCRYPTION ESSID;do
+ eval echo ${i}_${count}=\\\"\$"${i}"\\\"
+ done
+}
+
+iwlist_scan(){
+ # usage: iwlist_scan $wifi-itf
+
+ count=0
+ wpa_cli scan >/dev/null
+ sleep 10
+
+ wpa_cli scan_results 2>/dev/null | grep -E "^??:" | sed 's/ / /g' | (while IFS=' ' read MAC FREQ QUALITY ENCRYPTION ESSID
+ do
+ : $((count+=1))
+ print_iwlist_env
+
+ done; echo WIFI_COUNT=$count)
+}
+
+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
+}
+
+find_unscanned_networks(){
+ for i in `seq 1 $WIFI_COUNT`; do
+ eval SSID=\${ESSID_${i}}
+ eval MAC=\${MAC_${i}}
+ cat $confdir/wifi_stats 2>/dev/null | (while IFS='|' read SSID MAC BANDW KEY; do
+ if [ "$1" = "$SSID" -a "$2" = "$MAC" ]; then
+ continue
+ fi
+ done; echo $i)
+ done
+ exit 0
+}
+
+connect_to_network_by_ssid(){
+ find_count_of_ssid "$1" | (while read i
+ do
+ loop_over_cracks $i
+ 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)
+}
+
+loop_over_networks(){
+ for i in `seq 1 $WIFI_COUNT`; do
+ loop_over_cracks $i
+ if [ $? -eq 0 ]; then
+ exit 0
+ fi
+ done
+}
+
+loop_over_cracks(){
+ i=$1
+ KEY=''
+ for crack in $(find $confdir/cracks -type f | sort -u); do
+ KEY="$(eval root=$confdir \$crack \"\${ESSID_${i}}\" \"\${MAC_${i}}\" \${FREQ_${i}} \${ENCRYPTION_${i}})"
+ if [ $? -eq 0 ]; then
+ eval connect \"\${MAC_${i}}\" \"\${ESSID_${i}}\" \${ENCRYPTION_${i}} \"\${KEY}\"
+ if [ $? -eq 0 ]; then
+ return 0
+ fi
+ fi
+ done
+ return 1
+}
+
+scan_all(){
+ for i in `seq 1 $WIFI_COUNT`; do
+ loop_over_cracks $i
+ done
+}
+
+scan_unscanned(){
+ find_unscanned_networks | (while read i
+ do
+ loop_over_cracks $i
+ done)
+}
+
+
+check_gateway(){
+ echo ping -c 1 -w 5 $(ip route | grep $interface | awk '/default/{print $3}')
+}
+
+check_internet(){
+ ping -c 1 -w 5 8.8.8.8
+}
+
+check_bandwidth(){
+ echo $(printf "%.16d\n" $(curl ftp://ftp.microsoft.com/Products/mspress/library/ANIMAT.ZIP -w "%{speed_download}" -o /dev/null 2>/dev/null | sed 's/\..*//'))
+}
+
+start_wpa_supplicant
+iwlist_scan > /tmp/$interface.scan
+. /tmp/$interface.scan
+if [ -n "$2" ]; then
+ echo connecting to $1 with pw $2
+ connect_with_pw "$1" "$2"
+elif [ -n "$1" ]; then
+ echo connecting to $1
+ connect_to_network_by_ssid "$1"
+else
+ echo looping network now
+ loop_over_networks
+fi
diff --git a/autowifi/confdir/blacklist b/autowifi/confdir/blacklist
new file mode 100644
index 00000000..f0e5c6a1
--- /dev/null
+++ b/autowifi/confdir/blacklist
@@ -0,0 +1,2 @@
+02:25:9c:41:c6:89
+02:25:9c:41:c4:cc
diff --git a/autowifi/confdir/cracks/00profile b/autowifi/confdir/cracks/00profile
new file mode 100755
index 00000000..c2ad6ec7
--- /dev/null
+++ b/autowifi/confdir/cracks/00profile
@@ -0,0 +1,11 @@
+#!/bin/sh -x
+#ESSID MAC CHANNEL ENCRYPTION WPA WPA2
+# ENV:
+# root (default: /)
+root=${root:-/}
+cat $root/wifi_stats 2>/dev/null | (while IFS='|' read SSID MAC BANDW KEY; do
+ if [ "$1" = "$SSID" -a "$2" = "$MAC" ]; then
+ echo $KEY
+ exit 0
+ fi
+done; exit 1)
diff --git a/autowifi/confdir/cracks/01open b/autowifi/confdir/cracks/01open
new file mode 100755
index 00000000..7bd98e20
--- /dev/null
+++ b/autowifi/confdir/cracks/01open
@@ -0,0 +1,6 @@
+#!/bin/sh -x
+#ESSID MAC CHANNEL ENCRYPTION WPA WPA2
+if [ "$4" = "[ESS]" ]; then
+ exit 0
+fi
+exit 1
diff --git a/autowifi/confdir/hooks/wlan0/post/00tinc-up b/autowifi/confdir/hooks/wlan0/post/00tinc-up
new file mode 100755
index 00000000..3fd786e4
--- /dev/null
+++ b/autowifi/confdir/hooks/wlan0/post/00tinc-up
@@ -0,0 +1,2 @@
+#!/bin/sh
+tincd -n retiolum -kALRM
diff --git a/autowifi/confdir/hooks/wlan0/pre/00changemac b/autowifi/confdir/hooks/wlan0/pre/00changemac
new file mode 100755
index 00000000..c3e0632f
--- /dev/null
+++ b/autowifi/confdir/hooks/wlan0/pre/00changemac
@@ -0,0 +1,5 @@
+#!/bin/sh
+ifconfig wlan0 down
+sleep 1
+macchanger -r wlan0
+ifconfig wlan0 up