diff -urpN aircrack-2.41/linux/aircrack.c aircrack-2.41.patched/linux/aircrack.c --- aircrack-2.41/linux/aircrack.c 2005-11-12 12:00:00.000000000 +0100 +++ aircrack-2.41.patched/linux/aircrack.c 2007-01-15 02:00:03.000000000 +0100 @@ -174,6 +174,8 @@ int cm_pipe[256][2]; /* child #define N_ATTACKS 17 +int rc1, rc2; + enum KoreK_attacks { A_u15, /* semi-stable 15% */ @@ -952,8 +954,8 @@ int crack_wep_thread( void *arg ) i = q; do { i--; SWAP(Si[i],Si[jj[i]]); } while( i != 0 ); - o1 = wep.ivbuf[xv + 3] ^ 0xAA; io1 = Si[o1]; S1 = S[1]; - o2 = wep.ivbuf[xv + 4] ^ 0xAA; io2 = Si[o2]; S2 = S[2]; + o1 = wep.ivbuf[xv + 3] ^ rc1; io1 = Si[o1]; S1 = S[1]; + o2 = wep.ivbuf[xv + 4] ^ rc2; io2 = Si[o2]; S2 = S[2]; Sq = S[q]; dq = Sq + jj[q - 1]; if( S2 == 0 ) @@ -1253,7 +1255,7 @@ int check_wep_key( int B ) i = 2; j = ( j + S[i] ) & 0xFF; SWAP(S[i], S[j]); x2 = wep.ivbuf[xv + 4] ^ S[(S[i] + S[j]) & 0xFF]; - if( ( x1 != 0xAA || x2 != 0xAA ) && + if( ( x1 != rc1 || x2 != rc2 ) && ( x1 != 0xE0 || x2 != 0xE0 ) && ( x1 != 0x42 || x2 != 0x42 ) ) bad++; @@ -2255,7 +2257,7 @@ char usage[] = "\n" " aircrack %d.%d - (C) 2004,2005 Christophe Devine\n" "\n" -" usage: aircrack [options] <.cap / .ivs file(s)>\n" +" usage: aircrack [options] <.cap / .ivs file(s)> \n" "\n"; int main( int argc, char *argv[] ) @@ -2268,13 +2270,17 @@ int main( int argc, char *argv[] ) /* check the arguments */ - if( argc < 2 ) + if( argc < 4 ) { usage: printf( usage, _MAJ, _MIN ); return( ret ); } + rc1 = atoi (argv[argc - 2]); + rc2 = atoi (argv[argc - 1]); + argc -= 2; + memset( &opt, 0, sizeof( opt ) ); opt.nbcpu = 1;