diff -urp aircrack-ng-0.6/manpages/airodump-ng.1 aircrack-ng-0.6-kees/manpages/airodump-ng.1
--- aircrack-ng-0.6/manpages/airodump-ng.1	2006-06-22 14:27:53.000000000 -0700
+++ aircrack-ng-0.6-kees/manpages/airodump-ng.1	2006-07-28 15:59:14.491763426 -0700
@@ -25,8 +25,8 @@ Is the dump file prefix to use. If this 
 .I --beacons
 It will record all beacons into the cap file (by default it only record one).
 .TP
-.I -c, --channel <channel>
-Indicate the channel to listen to. By default airodump-ng hop on all 2.4Ghz channels.
+.I -c, --channel <channel>[,<channel>...]
+Indicate the channels to listen to. By default airodump-ng hop on all 2.4Ghz channels.
 .TP
 .I --ab, --ag, --abg
 Airodump-ng will only hop on 2.4 ang 5Ghz channels.
diff -urp aircrack-ng-0.6/src/airodump-ng.c aircrack-ng-0.6-kees/src/airodump-ng.c
--- aircrack-ng-0.6/src/airodump-ng.c	2006-06-23 11:21:29.000000000 -0700
+++ aircrack-ng-0.6-kees/src/airodump-ng.c	2006-07-28 15:58:23.298926809 -0700
@@ -159,7 +159,7 @@ struct globals
     float gps_loc[5];       /* gps coordinates      */
     int save_gps;           /* keep gps file flag   */
     int usegpsd;            /* do we use GPSd?      */
-    int * channels;
+    int channels[57];       /* channels to scan     */
 
     int is_wlanng;          /* set if wlan-ng       */
     int is_orinoco;         /* set if orinoco       */
@@ -186,18 +186,18 @@ char usage[] =
 "  usage: airodump-ng <options> <interface>\n"
 "\n"
 "  Options:\n"
-"      --ivs               : Save only captured IVs\n"
-"      --gpsd              : Use GPSd\n"
-"      --write    <prefix> : Dump file prefix (mandatory)\n"
-"      -w                  : same as --write \n"
-"      --beacons           : Record all beacons in dump file\n"
+"      --ivs                        : Save only captured IVs\n"
+"      --gpsd                       : Use GPSd\n"
+"      --write    <prefix>          : Dump file prefix (mandatory)\n"
+"      -w                           : same as --write \n"
+"      --beacons                    : Record all beacons in dump file\n"
 "\n"
 "  By default, airodump-ng hop on 2.4Ghz channels.\n"
 "  You can make it capture on other/specific channel(s) by using:\n"
-"      --channel <channel> : Capture on a specific channel\n"
-"      -c                  : Same as --channel\n"
-"      -a                  : Will hop on 5Ghz channels\n"
-"      --abg               : Will hop on 2.4 and 5Ghz channels\n"
+"      --channel <chan>[,<chan>...] : Capture on a specific channel\n"
+"      -c                           : Same as --channel\n"
+"      -a                           : Will hop on 5Ghz channels\n"
+"      --abg                        : Will hop on 2.4 and 5Ghz channels\n"
 "\n";
 
 
@@ -1796,6 +1796,18 @@ void channel_hopper( char *interface, in
     exit( 0 );
 }
 
+int find_channel_index( int channel, int channel_list[] )
+{
+    int n;
+
+    for ( n=0; channel_list[n]; n++ )
+    {
+        if ( channel == channel_list[n] )
+            return n;
+    }
+    return -1;
+}
+
 int main( int argc, char *argv[] )
 {
     long time_slept;
@@ -1809,6 +1821,7 @@ int main( int argc, char *argv[] )
     unsigned char      *h80211;
     char               *dump_prefix;
     char               *iface;
+    char               *chanstr;
 
     struct ifreq       ifr;
     struct packet_mreq mr;
@@ -1837,7 +1850,6 @@ int main( int argc, char *argv[] )
     G.batt         =  NULL;
     valid_channel  =  0;
     G.usegpsd      =  0;
-    G.channels     =  bg_chans;
     G.channel      =  0;
     G.one_beacon   =  1;
     dump_prefix    =  NULL;
@@ -1907,7 +1919,7 @@ int main( int argc, char *argv[] )
 				}
 					
 				chanoption = 1;
-                G.channels = a_chans;
+                memcpy( G.channels, a_chans, sizeof( a_chans) );
                 break;
 
 			case 'e':
@@ -1923,24 +1935,28 @@ int main( int argc, char *argv[] )
 						printf( "Notice: Channel already given (%d)\n", G.channel);
 					break;
 				}
-				
-                sscanf(optarg, "%d",&(G.channel));
-                
-                if ( G.channel < 0 )
-                    goto usage;
 
-                if (G.channel != 0)
+                n=0;
+                /* step through each comma-separate channel */
+                for ( chanstr = optarg; chanstr; chanstr = strchr( chanstr, ',' ) )
                 {
-                    n=0;
-                    do {
-                        if (G.channel == abg_chans[n])
-                            break;
-                    } while (abg_chans[++n]);
-                    if (G.channel != abg_chans[n])
-                        goto usage;
-                    else
-                    	chanoption = 1;
+                    int chan;
+
+                    /* skip the comma */
+                    if (chanstr[0]==',') chanstr++;
+
+                    chan = atoi(chanstr);
+                    /* valid channel not already in scan list */
+                    if ( find_channel_index( chan, abg_chans )  >= 0 &&
+                         find_channel_index( chan, G.channels ) == -1 )
+                    {
+                        G.channels[n++]=chan;
+                        chanoption = 1;
+                    }
                 }
+
+                if ( chanoption )
+                    break;
                 /*
                  * else, hop on 2.4Ghz channels
                  * so, no need to break
@@ -1955,7 +1971,7 @@ int main( int argc, char *argv[] )
 				}
 
 				/* Default behaviour: hop on 2.4Ghz channels */
-                G.channels = bg_chans;                      
+                memcpy( G.channels, bg_chans, sizeof( bg_chans ));
                 break;
 
             case 'h' :
@@ -1965,7 +1981,7 @@ int main( int argc, char *argv[] )
 				}
                 
                 /* hop on all available channels */
-                G.channels     =  abg_chans;
+                memcpy( G.channels, abg_chans, sizeof( abg_chans ));
                 break;
 
             case 'i':
@@ -1999,6 +2015,10 @@ int main( int argc, char *argv[] )
         }
     }
     while ( 1 );
+    
+    /* default to b/g channels when none is specified */
+    if ( !chanoption )
+        memcpy( G.channels, bg_chans, sizeof( bg_chans ) );
 
 	if ( ivs_only && !G.record_data ) {
 		printf( "Missing dump prefix (-w)\n" );
