[Wifiscanner-cvs] daily/src Makefile.am,1.7,1.8 airjack.c,1.1,1.2 airjack.h,1.1,1.2 analyse.c,1.38,1
Brought to you by:
poggij
From: Jérôme P. <po...@us...> - 2005-06-29 11:52:14
|
Update of /cvsroot/wifiscanner/daily/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22731/src Modified Files: Makefile.am airjack.c airjack.h analyse.c analyse.h atheros.c cisco.c conversion.c functions.c functions.h hermes.c hostap.c interface.c prism54g.c scanner.c scanner.h wlan-ng.c Log Message: Check if libewiretap is already here and do not compile if it's not needed Add suport of Airjack26 driver Add the capabilities to send de-auth packet with airjack26 Do some summer clean in source code Probe Req/Res can be hide now Index: cisco.c =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/cisco.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** cisco.c 23 Feb 2005 11:36:53 -0000 1.9 --- cisco.c 29 Jun 2005 11:52:00 -0000 1.10 *************** *** 33,36 **** --- 33,37 ---- #include <src/cisco.h> #include <src/crt_io.h> + #include <src/functions.h> static char *ID = "$Id$"; Index: hostap.c =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/hostap.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** hostap.c 23 Feb 2005 11:36:53 -0000 1.9 --- hostap.c 29 Jun 2005 11:52:00 -0000 1.10 *************** *** 32,35 **** --- 32,36 ---- #include <src/hostap.h> #include <src/crt_io.h> + #include <src/functions.h> static char *ID = "$Id$"; Index: functions.c =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/functions.c,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** functions.c 24 May 2005 13:23:08 -0000 1.50 --- functions.c 29 Jun 2005 11:52:00 -0000 1.51 *************** *** 1198,1204 **** fprintf(stdout, "DATA "); break; case 'S': case 's': ! SET_BIT(config->DoNotDisplay, 4); fprintf(stdout, "STATION "); break; --- 1198,1209 ---- fprintf(stdout, "DATA "); break; + case 'P': + case 'p': + SET_BIT(config->DoNotDisplay, 4); + fprintf(stdout, "PROBE "); + break; case 'S': case 's': ! SET_BIT(config->DoNotDisplay, 5); fprintf(stdout, "STATION "); break; *************** *** 1386,1394 **** config->CheckScreenSize = TRUE; config->SendAlert2Syslog = FALSE; config->DoNotDisplay = (UINT8) 0; // 0000 0000 ! // | |||\_Ack ! // | ||\__Beacon ! // | |\___Control ! // | \____Data ! // \______Station } --- 1391,1401 ---- config->CheckScreenSize = TRUE; config->SendAlert2Syslog = FALSE; + config->JammingNow = FALSE; config->DoNotDisplay = (UINT8) 0; // 0000 0000 ! // || |||\_Ack ! // || ||\__Beacon ! // || |\___Control ! // || \____Data ! // |\______Probe ! // \_______Station } Index: analyse.c =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/analyse.c,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** analyse.c 24 May 2005 15:39:41 -0000 1.38 --- analyse.c 29 Jun 2005 11:52:00 -0000 1.39 *************** *** 32,35 **** --- 32,36 ---- #include <src/conversion.h> #include <src/manuf.h> + #include <src/airjack.h> // Private declaration *************** *** 41,48 **** static UINT8 ID[] = "$Id$"; ! static UINT16 NumberOfDetectedClient = 0; ! static ClientInfo_t ClientInfo[MAX_NUMBER_OF_DETECTED_CLIENT]; const UINT8 BroadcastMAC[WLAN_ADDR_LEN] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; // External references --- 42,53 ---- static UINT8 ID[] = "$Id$"; ! ! UINT16 NumberOfDetectedClient = 0; ! ClientInfo_t ClientInfo[MAX_NUMBER_OF_DETECTED_CLIENT]; ! const UINT8 BroadcastMAC[WLAN_ADDR_LEN] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; + const UINT8 NULL_MAC[WLAN_ADDR_LEN] = + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; // External references *************** *** 305,308 **** --- 310,318 ---- //if (!ClientInfo[i].IsP2P) ClientInfo[i].IsAP = 1; + + // Jamming is here :-) + if (config.JammingNow == TRUE) { + sendDeauth(BroadcastMAC, BSSID, 0); + } break; } *************** *** 405,408 **** --- 415,437 ---- } + void Send_To_All_BSSID_A_Deauth(void) + { + UINT8 bssid[WLAN_ADDR_LEN]; + UINT8 dest[WLAN_ADDR_LEN]; + register UINT16 i; + + for (i = 0; i < NumberOfDetectedClient; i++) { + if (!CompareAddMac(ClientInfo[i].AddMac, NULL_MAC) + && !CompareAddMac(ClientInfo[i].BSSID, NULL_MAC)) { + memcpy(bssid, &ClientInfo[i].BSSID, WLAN_ADDR_LEN); + memcpy(dest, &ClientInfo[i].AddMac, WLAN_ADDR_LEN); + sendDeauth(dest, bssid, ClientInfo[i].Channel); + sendDeauth(BroadcastMAC, bssid, ClientInfo[i].Channel); + } + } + } + + + /** * Write the final report *************** *** 524,534 **** printf("."); fprintf(filename, "\"%02X:%02X:%02X:%02X:%02X:%02X\" -> ", - ClientInfo[i].BSSID[0], ClientInfo[i].BSSID[1], - ClientInfo[i].BSSID[2], ClientInfo[i].BSSID[3], - ClientInfo[i].BSSID[4], ClientInfo[i].BSSID[5]); - fprintf(filename, "\"%02X:%02X:%02X:%02X:%02X:%02X\";\n", ClientInfo[i].AddMac[0], ClientInfo[i].AddMac[1], ClientInfo[i].AddMac[2], ClientInfo[i].AddMac[3], ClientInfo[i].AddMac[4], ClientInfo[i].AddMac[5]); if (ClientInfo[i].IsDS) fprintf(filename, --- 553,563 ---- printf("."); fprintf(filename, "\"%02X:%02X:%02X:%02X:%02X:%02X\" -> ", ClientInfo[i].AddMac[0], ClientInfo[i].AddMac[1], ClientInfo[i].AddMac[2], ClientInfo[i].AddMac[3], ClientInfo[i].AddMac[4], ClientInfo[i].AddMac[5]); + fprintf(filename, "\"%02X:%02X:%02X:%02X:%02X:%02X\";\n", + ClientInfo[i].BSSID[0], ClientInfo[i].BSSID[1], + ClientInfo[i].BSSID[2], ClientInfo[i].BSSID[3], + ClientInfo[i].BSSID[4], ClientInfo[i].BSSID[5]); if (ClientInfo[i].IsDS) fprintf(filename, *************** *** 722,726 **** "\"%s\" ", ClientInfo[i].SSID); mvwprintw(Panel_WND, Posit, POS_CHANNEL, "%X", ClientInfo[i].Channel); ! mvwprintw(Panel_WND, Posit, POS_CRYPT, "%c", (ClientInfo[i].hasWep)? 'w':' ' ); mvwprintw(Panel_WND, Posit, POS_HISTO, "%s", Line); Posit++; --- 751,756 ---- "\"%s\" ", ClientInfo[i].SSID); mvwprintw(Panel_WND, Posit, POS_CHANNEL, "%X", ClientInfo[i].Channel); ! mvwprintw(Panel_WND, Posit, POS_CRYPT, "%c", ! (ClientInfo[i].hasWep) ? 'w' : ' '); mvwprintw(Panel_WND, Posit, POS_HISTO, "%s", Line); Posit++; Index: airjack.h =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/airjack.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** airjack.h 24 May 2005 13:23:08 -0000 1.1 --- airjack.h 29 Jun 2005 11:52:00 -0000 1.2 *************** *** 25,34 **** #define __AIRJACK_H__ ! int selectChannelAirjack(char *devname, int channel); ! int shutCardAirjack(char *devname); ! int openCardAirjack(char *devname); ! int getPacketAirjack(unsigned char *buf, int maxlen); ! int openPacketAirjack(char *devname); ! void closePacketAirjack(void); #endif --- 25,129 ---- #define __AIRJACK_H__ ! int selectChannelAIRJACK(char *devname, int channel); ! int shutCardAIRJACK(char *devname); ! int openCardAIRJACK(char *devname); ! int getPacketAIRJACK(unsigned char *buf, int maxlen); ! int openPacketAIRJACK(char *devname); ! void closePacketAIRJACK(void); ! ! void sendDeauth(UINT8 dest[WLAN_ADDR_LEN], UINT8 bssid[WLAN_ADDR_LEN], UINT8 channel); ! ! struct aj_config { ! __u16 mode; /* mac port operating mode */ ! __u8 ownmac[6]; /* our mac address */ ! __u8 monitor; /* are we in monitor mode */ ! __u8 channel; /* channel to operate on... */ ! __u8 essid[33]; /* first byte is length */ ! }; ! ! struct a3_80211 { ! union { ! __u16 fc1_frame_control; ! struct { ! __u16 fc2_version:2; ! __u16 fc2_type:2; ! __u16 fc2_subtype:4; ! __u16 fc2_to_ds:1; ! __u16 fc2_from_ds:1; ! __u16 fc2_more_frag:1; ! __u16 fc2_retry:1; ! __u16 fc2_pwr_man:1; ! __u16 fc2_more_data:1; ! __u16 fc2_wep:1; ! __u16 fc2_order:1; ! } fc2; ! } fc1; ! __u16 mh_duration_id; ! __u8 mh_mac1[6]; ! __u8 mh_mac2[6]; ! __u8 mh_mac3[6]; ! union { ! __u16 seq1_seq; ! struct { ! __u16 seq2_frag_num:4; ! __u16 seq2_seq_num:12; ! } seq2; ! } seq1; ! }; ! ! /* manefest constants to make Mac Headers more straitforward */ ! #define mh_fc fc1.fc1_frame_control ! #define mh_version fc1.fc2.fc2_version ! #define mh_type fc1.fc2.fc2_type ! #define mh_subtype fc1.fc2.fc2_subtype ! #define mh_to_ds fc1.fc2.fc2_to_ds ! #define mh_from_ds fc1.fc2.fc2_from_ds ! #define mh_more_frag fc1.fc2.fc2_more_frag ! #define mh_retry fc1.fc2.fc2_retry ! #define mh_pwr_man fc1.fc2.fc2_pwr_man ! #define mh_more_data fc1.fc2.fc2_more_data ! #define mh_wep fc1.fc2.fc2_wep ! #define mh_order fc1.fc2.fc2_order ! #define mh_aid mh_duration_id ! #define mh_ra mh_mac1 ! #define mh_da mh_mac1 ! #define mh_ps_bssid mh_mac1 ! #define mh_cf_bssid mh_mac2 ! #define mh_ta mh_mac2 ! #define mh_sa mh_mac2 ! #define mh_bssid mh_mac3 ! #define mh_seq seq1.seq1_seq ! #define mh_frag_num seq1.seq2.seq2_frag_num ! #define mh_seq_num seq1.seq2.seq2_seq_num ! ! /*** Frame Control Types ***/ ! ! #define FC_TYPE_MGT 0x00 /* management type */ ! #define FC_TYPE_CTL 0x01 /* control type */ ! #define FC_TYPE_DATA 0x02 /* data type */ ! #define FC_TYPE_RESR 0x03 /* reserved for later use */ ! ! /*** Management SubTypes ***/ ! #define MGT_AS_RQ 0x00 /* association request */ ! #define MGT_AS_RS 0x01 /* association responce */ ! #define MGT_REAS_RQ 0x02 /* reassociation request */ ! #define MGT_REAS_RS 0x03 /* reassociation responce */ ! #define MGT_PB_RQ 0x04 /* probe request */ ! #define MGT_PB_RS 0x05 /* probe responce */ ! #define MGT_RESERV1 0x06 ! #define MGT_RESERV2 0x07 ! #define MGT_BEACON 0x08 /* beacon */ ! #define MGT_ATIM 0x09 /* announcement trafic indication message */ ! #define MGT_DISAS 0x0A /* disassociation */ ! #define MGT_AUTH 0x0B /* authentication */ ! #define MGT_DEAUTH 0x0C /* de-authentication */ ! #define MGT_RESERV3 0x0D ! #define MGT_RESERV4 0x0E ! #define MGT_RESERV5 0x0F ! ! /* Airjack26 device private ioctl calls */ ! #define SIOCAJSMODE SIOCDEVPRIVATE /* so i here this probably wont work on 2.5.x, blah */ ! #define SIOCAJGMODE SIOCAJSMODE + 1 ! #endif Index: hermes.c =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/hermes.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** hermes.c 23 Feb 2005 11:36:53 -0000 1.3 --- hermes.c 29 Jun 2005 11:52:00 -0000 1.4 *************** *** 32,35 **** --- 32,36 ---- #include <src/hermes.h> #include <src/crt_io.h> + #include <src/functions.h> static char *ID = "$Id$"; Index: analyse.h =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/analyse.h,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** analyse.h 24 May 2005 15:39:42 -0000 1.12 --- analyse.h 29 Jun 2005 11:52:00 -0000 1.13 *************** *** 66,69 **** --- 66,72 ---- /* */ + void Send_To_All_BSSID_A_Deauth(void); + + /* */ void DoSummary(void); void WritePanel(UINT8 GoodPacket); Index: conversion.c =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/conversion.c,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** conversion.c 25 Aug 2004 13:37:33 -0000 1.12 --- conversion.c 29 Jun 2005 11:52:00 -0000 1.13 *************** *** 27,30 **** --- 27,31 ---- #include <include.h> + #include <src/crt_io.h> extern UINT8 TypeOfCard; *************** *** 36,41 **** const char *RateToString(int rate) { ! debug(3, "(Rate = 0x%02X, Rate & 0x7F = 0x%02X, Rate = %d)\n", rate, rate & 0x7F, rate); ! switch (rate & 0x7F) { // Bit 8 is a flag for BASIC rate case 0: return "0Mb/s"; --- 37,43 ---- const char *RateToString(int rate) { ! debug(3, "(Rate = 0x%02X, Rate & 0x7F = 0x%02X, Rate = %d)\n", rate, ! rate & 0x7F, rate); ! switch (rate & 0x7F) { // Bit 8 is a flag for BASIC rate case 0: return "0Mb/s"; *************** *** 60,64 **** break; case 22: ! case 110: // Wlan-ng return "11Mb/s"; break; --- 62,66 ---- break; case 22: ! case 110: // Wlan-ng return "11Mb/s"; break; *************** *** 81,85 **** return "36Mb/s"; break; ! case 88: // ? is it normalized ? return "44Mb/s"; break; --- 83,87 ---- return "36Mb/s"; break; ! case 88: // ? is it normalized ? return "44Mb/s"; break; *************** *** 123,127 **** return ((char *) ! SubTypeOfClientList[((TypeOfClient & 0xF0) >> 4)]); } --- 125,129 ---- return ((char *) ! SubTypeOfClientList[((TypeOfClient & 0xF0) >> 4)]); } Index: functions.h =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/functions.h,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** functions.h 23 Feb 2005 11:36:53 -0000 1.11 --- functions.h 29 Jun 2005 11:52:00 -0000 1.12 *************** *** 51,53 **** --- 51,54 ---- int safe_snprintf(char *s, int size, char *fmt, ...); void *memcpy_buff(void *dest, const void *src, size_t n); + void InitConfiguration(ConfigStruct * config); #endif Index: airjack.c =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/airjack.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** airjack.c 24 May 2005 13:23:08 -0000 1.1 --- airjack.c 29 Jun 2005 11:52:00 -0000 1.2 *************** *** 6,9 **** --- 6,11 ---- * on Intersil's PRISM II chipset (PCMCIA). * + * Some part of this code is taken from essid_ack.c from aitrjack26 + * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License *************** *** 26,31 **** --- 28,48 ---- #include <src/airjack.h> #include <src/wlan-ng.h> + #include <src/functions.h> #include <src/crt_io.h> + #include <net/if.h> + #include <sys/socket.h> + + #include <features.h> /* for the glibc version number */ + #include <netinet/in.h> + #if __GLIBC__ >= 2 && __GLIBC_MINOR >= 1 + #include <netpacket/packet.h> + #include <net/ethernet.h> /* the L2 protocols */ + #else + #include <asm/types.h> + #include <linux/if_packet.h> + #include <linux/if_ether.h> /* The L2 protocols */ + #endif + static char *ID = "$Id$"; *************** *** 36,42 **** --- 53,69 ---- extern ConfigStruct config; extern p80211_caphdr_t wlan_header; + extern UINT16 NumberOfDetectedClient; + extern ClientInfo_t *ClientInfo; + extern ScanResult_t Res; + //--- STATIC static CaptureArg ca; static char errbuf[PCAP_ERRBUF_SIZE]; + static int sockfd; /* listen and send socket */ + static struct ifreq req; + static struct aj_config aj_conf; + + static const UINT8 BroadcastMAC[WLAN_ADDR_LEN] = + { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; //------------- *************** *** 44,54 **** { #define STR_MAX 80 - char str[STR_MAX]; int result = 0; ! snprintf(str, STR_MAX, "set_channel -c %d -i %s 2>/dev/null", channel, devname); debug(3, "%s\n", str); result += system(str); return result; } --- 71,96 ---- { #define STR_MAX 80 int result = 0; ! #if 0 ! char str[STR_MAX]; snprintf(str, STR_MAX, "set_channel -c %d -i %s 2>/dev/null", channel, devname); debug(3, "%s\n", str); result += system(str); + #else + req.ifr_data = (char *) &aj_conf; + + /* populate the structure */ + if (ioctl(sockfd, SIOCAJGMODE, &req) < 0) { + return (-4); + } + + aj_conf.channel = channel; + aj_conf.monitor = 1; + + if (ioctl(sockfd, SIOCAJSMODE, &req) < 0) { + return (-4); + } + #endif return result; } *************** *** 71,74 **** --- 113,117 ---- char str[STR_MAX]; int result = 0; + struct sockaddr_ll addr; // Turn on monitor mode *************** *** 77,80 **** --- 120,148 ---- result += system(str); + /* open the link layer socket */ + if ((sockfd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))) < 0) { + return (-1); + } + + /* get the interface index */ + memset(&req, 0, sizeof(struct ifreq)); + memset(&aj_conf, 0, sizeof(struct aj_config)); + strncpy(req.ifr_name, devname, IFNAMSIZ); + + if (ioctl(sockfd, SIOCGIFINDEX, &req) < 0) { + return (-2); + } + + /* bind the socket to the interface */ + memset(&addr, 0, sizeof(struct sockaddr_ll)); + addr.sll_ifindex = req.ifr_ifindex; + addr.sll_protocol = htons(ETH_P_ALL); + addr.sll_family = AF_PACKET; + if (bind(sockfd, (struct sockaddr *) &addr, sizeof(struct sockaddr_ll)) < + 0) { + return (-3); + } + + return result; } *************** *** 157,162 **** } ! #if 0 ! void sendDeauth(void) { struct { --- 225,230 ---- } ! void sendDeauth(UINT8 dest[WLAN_ADDR_LEN], UINT8 bssid[WLAN_ADDR_LEN], ! UINT8 channel) { struct { *************** *** 164,167 **** --- 232,236 ---- unsigned short int reason; } __attribute__ ((packed)) frame; + UINT8 OldChannel=0; /* setup the frame */ *************** *** 170,181 **** memcpy(frame.hdr.mh_mac2, bssid, sizeof(frame.hdr.mh_mac2)); memcpy(frame.hdr.mh_mac3, bssid, sizeof(frame.hdr.mh_mac3)); frame.hdr.mh_type = FC_TYPE_MGT; frame.hdr.mh_subtype = MGT_DEAUTH; frame.hdr.mh_from_ds = 1; frame.reason = 2; /* previous authentication is no longer valid */ if (write(sockfd, &frame, sizeof(frame)) < 0) { ! perror("write"); ! exit(1); } } - #endif --- 239,265 ---- memcpy(frame.hdr.mh_mac2, bssid, sizeof(frame.hdr.mh_mac2)); memcpy(frame.hdr.mh_mac3, bssid, sizeof(frame.hdr.mh_mac3)); + frame.hdr.mh_type = FC_TYPE_MGT; frame.hdr.mh_subtype = MGT_DEAUTH; frame.hdr.mh_from_ds = 1; frame.reason = 2; /* previous authentication is no longer valid */ + + if (channel != 0) { // Backup channel and change to the channel of the AP + OldChannel = Res.SChannel; + selectChannelAIRJACK(config.devname, channel); + } + if (write(sockfd, &frame, sizeof(frame)) < 0) { ! warning("AIRJACK error : write\n"); ! } ! ! debug(2, "Send De-auth -- BSSID: %02X:%02X:%02X:%02X:%02X:%02X --" ! " DEST: %02X:%02X:%02X:%02X:%02X:%02X -- Channel: %d\n", ! bssid[0], bssid[1], bssid[2], bssid[3], bssid[4], bssid[5], ! dest[0], dest[1], dest[2], dest[3], dest[4], dest[5], channel); ! ! if (channel != 0) { // restore channel ! Res.SChannel = OldChannel; ! selectChannelAIRJACK(config.devname, OldChannel); } } Index: scanner.c =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/scanner.c,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** scanner.c 23 Feb 2005 11:36:53 -0000 1.54 --- scanner.c 29 Jun 2005 11:52:00 -0000 1.55 *************** *** 34,37 **** --- 34,38 ---- #include <src/crt_io.h> #include <src/conversion.h> + #include <src/keyboard.h> #ifdef WITH_WIRETAP #include <wtap.h> *************** *** 71,77 **** #endif - char keystring[KEYBOARD_BUFFER]; - int keyindex = 0; - /** * Signal Handler --- 72,75 ---- *************** *** 154,207 **** - /* - * Keyboard Handling - */ - #ifdef WITH_THREAD - void check_keys_th() - { - UINT8 car; - - nodelay(stdscr, TRUE); // FIXME move it ... - while (stop_sniffing == 0) { - if ((car = tolower(getch())) != ERR) { - if ((car >= ' ') && (car <= '~')) { - // Check if it's not a bad char - keystring[keyindex] = car; - debug(3, "We Hit : #%c# - keyindex=%d\n", keystring[keyindex], - keyindex); - keyindex = (keyindex + 1) % KEYBOARD_BUFFER; - pthread_mutex_lock(&screen_mutex); - mvwprintw(Sum_WND, 11, 11, "(%-4s)", keystring); - wrefresh(Sum_WND); - pthread_mutex_unlock(&screen_mutex); - parse_keystring(); - } - } - //pthread_delay_np (&delay); - usleep(100000); - } - } - #else - void check_keys() - { - nodelay(stdscr, TRUE); // FIXME move it ... - if ((keystring[keyindex] = tolower(getch())) != ERR) { - if ((keystring[keyindex] >= ' ') && (keystring[keyindex] <= '~')) { - // Check if it's not a bad char - debug(3, "We Hit : #%c# - keyindex=%d\n", keystring[keyindex], - keyindex); - keyindex = (keyindex + 1) % KEYBOARD_BUFFER; - mvwprintw(Sum_WND, 11, 11, "(%-4s)", keystring); - wrefresh(Sum_WND); - parse_keystring(); - } else { - keystring[keyindex] = 0; - } - } - } - #endif - - - /******** MAIN ********/ --- 152,155 ---- *************** *** 515,519 **** || (DO_NOT_DISPLAY_BEACON) || (DO_NOT_DISPLAY_CONTROL) ! || (DO_NOT_DISPLAY_DATA))) { #ifdef HAVE_LIBNCURSES wprintw(RealTime_WND, "%s", PacketStatus); --- 463,468 ---- || (DO_NOT_DISPLAY_BEACON) || (DO_NOT_DISPLAY_CONTROL) ! || (DO_NOT_DISPLAY_DATA) ! || (DO_NOT_DISPLAY_PROBE))) { #ifdef HAVE_LIBNCURSES wprintw(RealTime_WND, "%s", PacketStatus); *************** *** 683,879 **** } - - /* - * Parse key buffer & fire commands - */ - - #define CLEAR_KEYBOARD_BUFFER memset (keystring, 0, KEYBOARD_BUFFER);keyindex = 0; - - void parse_keystring() - { - - switch (keyindex) { - case 1: - switch (keystring[0]) { - case '+': // Go to next channel - case '-': // Go to previous channel - if ((keystring[0] == '+') - && (config.SingleChannel < 14)) - config.SingleChannel++; - if ((keystring[0] == '-') - && (config.SingleChannel > 0)) - config.SingleChannel--; - - config.SingleChannel = (config.SingleChannel % (CHANNEL_MAX + 1)); - - selectChannel(config.devname, config.SingleChannel); - CLEAR_KEYBOARD_BUFFER; - break; - case 'a': // Go to next channel - case 'w': // Go to previous channel - if ((keystring[0] == 'a') && (config.FirstNIC > 0)) - config.FirstNIC--; - if (keystring[0] == 'w') - config.FirstNIC++; - debug(3, "config.FirstNIC = %d\n", config.FirstNIC); - CLEAR_KEYBOARD_BUFFER; - break; - case 'q': // It's time to exit - // We don't need to stop, if we know that we will stop - if (!stop_sniffing) { - #ifdef WITH_THREAD - // Clean and Force STOP the thread - pthread_mutex_unlock(&screen_mutex); - pthread_mutex_destroy(&screen_mutex); - #endif - warning("Q was hit - sniffing aborted\n\n"); - stop_sniffing = (UINT8) 1; - } - break; - case 's': // change channel more Slowly - config.TimeToSleepBeforeChangeChannel += 10; - debug(2, - "config.TimeToSleepBeforeChangeChannel = %d ms\n", - config.TimeToSleepBeforeChangeChannel); - CLEAR_KEYBOARD_BUFFER; - break; - case 'f': // change channel more Fast - config.TimeToSleepBeforeChangeChannel -= 10; - if (config.TimeToSleepBeforeChangeChannel < 10) - config.TimeToSleepBeforeChangeChannel = 10; - debug(2, - "config.TimeToSleepBeforeChangeChannel = %d ms\n", - config.TimeToSleepBeforeChangeChannel); - CLEAR_KEYBOARD_BUFFER; - break; - case 'd': // default TimeToSleepBeforeChangeChannel - config.TimeToSleepBeforeChangeChannel = - TIME_TO_SLEEP_BEFORE_CHANGE_CHANNEL; - debug(2, - "config.TimeToSleepBeforeChangeChannel = %d ms\n", - config.TimeToSleepBeforeChangeChannel); - CLEAR_KEYBOARD_BUFFER; - break; - case 'h': - warning("Help :\n" "Q for quit\n" - "C??C to scan channel ??\n" - "+ - to increment or decrement channel to scan\n" - "A W to scroll in the upper window\n" - "F S D for scan more fast, more slow and default time\n" - "J+ J- for changing channel hop\n" - "V+ V- for changing verbose level\n" - "N abcd for hiding/showing Ack, Beacon, Control and Data\n"); - CLEAR_KEYBOARD_BUFFER; - break; - case 'c': // a 4 key option - case 'j': // a 2 key option - case 'v': // a 2 key option - case 'n': // a 2 key option - break; - default: // the user hit the keyboard, but don't know what he do - CLEAR_KEYBOARD_BUFFER; - break; - } - break; - case 2: - switch (keystring[0]) { - case 'c': - break; - case 'j': - switch (keystring[1]) { - case '+': // Go to next channel hop - if (config.ChannelHop < HOP_MAX) - config.ChannelHop++; - break; - case '-': // Go to previous channel hop - if (config.ChannelHop > HOP_MIN) - config.ChannelHop--; - break; - default: - break; - } - debug(2, "config.ChannelHop = %d\n", config.ChannelHop); - CLEAR_KEYBOARD_BUFFER; - break; - case 'v': - switch (keystring[1]) { - case '+': // Be more verbose - if (config.DebugLevel < MAX_DEBUG_LEVEL) - config.DebugLevel++; - break; - case '-': // Be less verbose - if (config.DebugLevel > 0) - config.DebugLevel--; - break; - default: - CLEAR_KEYBOARD_BUFFER; - break; - } - debug(1, "DebugLevel=%d\n", config.DebugLevel); - CLEAR_KEYBOARD_BUFFER; - keyindex = 0; - memset(keystring, 0, KEYBOARD_BUFFER); - break; - case 'n': - switch (keystring[1]) { - case 'a': - SWITCH_BIT(config.DoNotDisplay, 0); - debug(1, "Switch display of ACK\n"); - break; - case 'b': - SWITCH_BIT(config.DoNotDisplay, 1); - debug(1, "Switch display of BEACON\n"); - break; - case 'c': - SWITCH_BIT(config.DoNotDisplay, 2); - debug(1, "Switch display of CONTROL\n"); - break; - case 'd': - SWITCH_BIT(config.DoNotDisplay, 3); - debug(1, "Switch display of DATA\n"); - break; - case 's': - SWITCH_BIT(config.DoNotDisplay, 4); - debug(1, "Switch display of STATION\n"); - break; - default: - CLEAR_KEYBOARD_BUFFER; - break; - } - CLEAR_KEYBOARD_BUFFER; - break; - default: - CLEAR_KEYBOARD_BUFFER; - break; - } - break; - case 3: - break; - case 4: - // Sequence : C??C - // Change channel to a fixed channel - if (keystring[0] == 'c' && keystring[3] == 'c') { - keystring[3] = '\0'; - register int chan = 0; - - if (keystring[1] == '0') - chan = atoi(keystring + 2); - else - chan = atoi(keystring + 1); - - if (chan >= 0 && chan < CHANNEL_MAX) { - config.SingleChannel = (UINT8) chan; - selectChannel(config.devname, config.SingleChannel); - memset(keystring, 0, KEYBOARD_BUFFER); - keyindex = 0; - } - debug(2, "Scan only channel %d\n", config.SingleChannel); - } else { - CLEAR_KEYBOARD_BUFFER; - } - break; - default: // the user hit the keyboard, but don't know what he do - CLEAR_KEYBOARD_BUFFER; // So we think that it was sleeping ;-) and forget ... - break; - } - } --- 632,633 ---- Index: Makefile.am =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/Makefile.am,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Makefile.am 24 May 2005 13:23:07 -0000 1.7 --- Makefile.am 29 Jun 2005 11:52:00 -0000 1.8 *************** *** 39,43 **** manuf_table.h \ manuf.h \ ! wlan-ng.h SUBDIRS = wlan-ng --- 39,44 ---- manuf_table.h \ manuf.h \ ! wlan-ng.h \ ! keyboard.h SUBDIRS = wlan-ng *************** *** 63,67 **** scanner.c \ manuf.c \ ! wlan-ng.c #wifiscanner_LDADD = ../wiretap/libwiretap.la @LIBOBJS@ --- 64,69 ---- scanner.c \ manuf.c \ ! wlan-ng.c \ ! keyboard.c #wifiscanner_LDADD = ../wiretap/libwiretap.la @LIBOBJS@ Index: scanner.h =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/scanner.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** scanner.h 23 Oct 2003 16:51:15 -0000 1.3 --- scanner.h 29 Jun 2005 11:52:00 -0000 1.4 *************** *** 27,47 **** #define __scanner_h__ ! #define DO_NOT_DISPLAY_ACK ( ((config.DoNotDisplay & 1) == 1 ) && \ ! ( (WLAN_GET_FC_FTYPE (Res.TypeSubtype) == WLAN_FTYPE_CTL) && \ ! (WLAN_GET_FC_FSTYPE(Res.TypeSubtype) == WLAN_FSTYPE_ACK) \ ! ) \ ! ) ! #define DO_NOT_DISPLAY_BEACON ( ((config.DoNotDisplay & 2) == 2 ) && \ ! ( Res.TypeSubtype == 0x80) \ ! ) ! #define DO_NOT_DISPLAY_CONTROL ( ((config.DoNotDisplay & 4) == 4 ) && \ (WLAN_GET_FC_FTYPE (Res.TypeSubtype) == WLAN_FTYPE_CTL) \ ) ! #define DO_NOT_DISPLAY_DATA ( ((config.DoNotDisplay & 8) == 8 ) && \ (WLAN_GET_FC_FTYPE (Res.TypeSubtype) == WLAN_FTYPE_DATA) \ ) #endif --- 27,59 ---- #define __scanner_h__ ! #define DO_NOT_DISPLAY_ACK ( IS_DISPLAY_ACK(config.DoNotDisplay) && \ ! ( (WLAN_GET_FC_FTYPE (Res.TypeSubtype) == WLAN_FTYPE_CTL) && \ ! (WLAN_GET_FC_FSTYPE(Res.TypeSubtype) == WLAN_FSTYPE_ACK) \ ! ) \ ! ) ! #define DO_NOT_DISPLAY_BEACON ( IS_DISPLAY_BEACON(config.DoNotDisplay) && \ ! ( (WLAN_GET_FC_FTYPE (Res.TypeSubtype) == WLAN_FTYPE_MGMT) && \ ! (WLAN_GET_FC_FSTYPE(Res.TypeSubtype) == WLAN_FSTYPE_BEACON) \ ! ) \ ! ) ! #define DO_NOT_DISPLAY_CONTROL ( IS_DISPLAY_CONTROL(config.DoNotDisplay) && \ (WLAN_GET_FC_FTYPE (Res.TypeSubtype) == WLAN_FTYPE_CTL) \ ) ! #define DO_NOT_DISPLAY_DATA ( IS_DISPLAY_DATA(config.DoNotDisplay) && \ (WLAN_GET_FC_FTYPE (Res.TypeSubtype) == WLAN_FTYPE_DATA) \ ) + #define DO_NOT_DISPLAY_PROBE ( IS_DISPLAY_PROBE(config.DoNotDisplay) && \ + (( (WLAN_GET_FC_FTYPE (Res.TypeSubtype) == WLAN_FTYPE_MGMT) && \ + (WLAN_GET_FC_FSTYPE(Res.TypeSubtype) == WLAN_FSTYPE_PROBEREQ) \ + ) || \ + ( (WLAN_GET_FC_FTYPE (Res.TypeSubtype) == WLAN_FTYPE_MGMT) && \ + (WLAN_GET_FC_FSTYPE(Res.TypeSubtype) == WLAN_FSTYPE_PROBERESP) \ + ) \ + ) \ + ) + #endif Index: wlan-ng.c =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/wlan-ng.c,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** wlan-ng.c 23 Feb 2005 11:36:53 -0000 1.31 --- wlan-ng.c 29 Jun 2005 11:52:00 -0000 1.32 *************** *** 31,34 **** --- 31,35 ---- #include <src/wlan-ng.h> #include <src/driver.h> + #include <src/functions.h> static char *ID = "$Id$"; Index: atheros.c =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/atheros.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** atheros.c 23 Feb 2005 11:36:53 -0000 1.2 --- atheros.c 29 Jun 2005 11:52:00 -0000 1.3 *************** *** 34,37 **** --- 34,38 ---- #include <src/wlan-ng.h> #include <src/crt_io.h> + #include <src/functions.h> static char *ID = "$Id$"; Index: prism54g.c =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/prism54g.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** prism54g.c 23 Feb 2005 11:36:53 -0000 1.2 --- prism54g.c 29 Jun 2005 11:52:00 -0000 1.3 *************** *** 33,36 **** --- 33,37 ---- #include <src/prism54g.h> #include <src/wlan-ng.h> + #include <src/functions.h> #include <src/crt_io.h> Index: interface.c =================================================================== RCS file: /cvsroot/wifiscanner/daily/src/interface.c,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** interface.c 27 Jan 2005 16:24:55 -0000 1.20 --- interface.c 29 Jun 2005 11:52:00 -0000 1.21 *************** *** 166,174 **** if (IS_BIT_SET(config.DoNotDisplay, 4)) ! DisplayBit[4] = 'S'; else ! DisplayBit[4] = 's'; ! DisplayBit[5] = 0; mvwprintw(Sum_WND, 12, 12, "%s", DisplayBit); --- 166,179 ---- if (IS_BIT_SET(config.DoNotDisplay, 4)) ! DisplayBit[4] = 'P'; else ! DisplayBit[4] = 'p'; ! if (IS_BIT_SET(config.DoNotDisplay, 5)) ! DisplayBit[5] = 'S'; ! else ! DisplayBit[5] = 's'; ! ! DisplayBit[6] = 0; mvwprintw(Sum_WND, 12, 12, "%s", DisplayBit); |