[packages] aircrack-ng: implement --ignore-negative-one option to cope with cfg80211...
authorJo-Philipp Wich <jow@openwrt.org>
Mon, 16 May 2011 12:33:32 +0000 (12:33 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Mon, 16 May 2011 12:33:32 +0000 (12:33 +0000)
SVN-Revision: 26910

net/aircrack-ng/Makefile
net/aircrack-ng/patches/100-add-ignore-channel-negative-1.patch [new file with mode: 0644]

index d47dc86..e912dfe 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2010 OpenWrt.org
+# Copyright (C) 2006-2011 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=aircrack-ng
 PKG_VERSION:=1.1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://download.aircrack-ng.org/ \
diff --git a/net/aircrack-ng/patches/100-add-ignore-channel-negative-1.patch b/net/aircrack-ng/patches/100-add-ignore-channel-negative-1.patch
new file mode 100644 (file)
index 0000000..394a300
--- /dev/null
@@ -0,0 +1,52 @@
+--- a/src/aireplay-ng.c
++++ b/src/aireplay-ng.c
+@@ -200,7 +200,9 @@ char usage[] =
+ "\n"
+ "  Miscellaneous options:\n"
+ "\n"
+-"      -R        : disable /dev/rtc usage\n"
++"      -R                    : disable /dev/rtc usage\n"
++"      --ignore-negative-one : if the interface's channel can't be determined,\n"
++"                              ignore the mismatch, needed for unpatched cfg80211\n"
+ "\n"
+ "  Attack modes (numbers can still be used):\n"
+ "\n"
+@@ -268,6 +270,7 @@ struct options
+     int bittest;
+     int nodetect;
++    int ignore_negative_one;
+     int rtc;
+ }
+ opt;
+@@ -715,6 +718,13 @@ int attack_check(uchar* bssid, char* ess
+     iface_chan = wi_get_channel(wi);
++    if(iface_chan == -1 && !opt.ignore_negative_one)
++    {
++        PCT; printf("Couldn't determine current channel for %s, you should either force the operation with --ignore-negative-one or apply a kernel patch\n",
++                wi_get_ifname(wi));
++        return -1;
++    }
++
+     if(bssid != NULL)
+     {
+         ap_chan = wait_for_beacon(bssid, capa, essid);
+@@ -723,7 +733,7 @@ int attack_check(uchar* bssid, char* ess
+             PCT; printf("No such BSSID available.\n");
+             return -1;
+         }
+-        if(ap_chan != iface_chan)
++        if((ap_chan != iface_chan) && (iface_chan != -1 || !opt.ignore_negative_one))
+         {
+             PCT; printf("%s is on channel %d, but the AP uses channel %d\n", wi_get_ifname(wi), iface_chan, ap_chan);
+             return -1;
+@@ -5765,6 +5775,7 @@ int main( int argc, char *argv[] )
+             {"help",        0, 0, 'H'},
+             {"fast",        0, 0, 'F'},
+             {"bittest",     0, 0, 'B'},
++            {"ignore-negative-one", 0, &opt.ignore_negative_one, 1},
+             {0,             0, 0,  0 }
+         };