diff -urN kismet.dev/Makefile.in kismet.dev2/Makefile.in --- kismet.dev/Makefile.in 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/Makefile.in 2005-08-23 01:59:25.643220248 +0200 @@ -39,26 +39,25 @@ DEPEND = .depend # Objects -PSO = util.o ringbuf.o configfile.o speech.o ifcontrol.o iwcontrol.o packet.o \ - pcapsource.o prism2source.o wtapfilesource.o wsp100source.o \ - dronesource.o vihasource.o packetsourcetracker.o kis_packsources.o \ - wtapdump.o wtaplocaldump.o gpsdump.o airsnortdump.o fifodump.o \ - gpsd.o manuf.o \ +PSO = util.o ringbuf.o configfile.o ifcontrol.o iwcontrol.o packet.o \ + pcapsource.o manuf.o \ + dronesource.o packetsourcetracker.o kis_packsources.o \ + wtapdump.o wtaplocaldump.o airsnortdump.o fifodump.o \ packetracker.o timetracker.o alertracker.o finitestate.o \ getopt.o \ tcpserver.o server_protocols.o server_globals.o kismet_server.o PS = kismet_server DRONEO = util.o ringbuf.o configfile.o getopt.o ifcontrol.o iwcontrol.o packet.o \ - tcpstreamer.o prism2source.o pcapsource.o wtapfilesource.o wsp100source.o \ - dronesource.o vihasource.o packetsourcetracker.o kis_packsources.o \ - timetracker.o gpsd.o server_globals.o kismet_drone.o + tcpstreamer.o pcapsource.o \ + dronesource.o packetsourcetracker.o kis_packsources.o \ + timetracker.o server_globals.o kismet_drone.o DRONE = kismet_drone -NCO = util.o configfile.o speech.o manuf.o tcpclient.o \ +NCO = util.o configfile.o manuf.o tcpclient.o \ frontend.o cursesfront.o \ panelfront.o panelfront_display.o panelfront_input.o \ - gpsd.o getopt.o kismet_client.o + getopt.o kismet_client.o NC = kismet_client GPSLO = getopt.o util.o configfile.o expat.o manuf.o \ diff -urN kismet.dev/cursesfront.cc kismet.dev2/cursesfront.cc --- kismet.dev/cursesfront.cc 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/cursesfront.cc 2005-08-23 01:59:25.643220248 +0200 @@ -30,7 +30,6 @@ // Enable the protocols we can use void NCurseFront::AddClient(TcpClient *in_client) { client = in_client; - client->EnableProtocol("GPS"); client->EnableProtocol("INFO"); client->EnableProtocol("REMOVE"); client->EnableProtocol("NETWORK"); @@ -88,32 +87,8 @@ mvwaddstr(netborder, 1, 2, " SSID T W Ch Data LLC Crypt Wk Flags"); } - char gpsdata[1024]; - float lat, lon, alt, spd, heading; int mode; - client->FetchLoc(&lat, &lon, &alt, &spd, &heading, &mode); - - if (!(lat == 0 && lon == 0 && alt == 0 && spd == 0 && mode == 0)) { - - char fix[16]; - - if (mode == -1) - snprintf(fix, 16, "No signal"); - else if (mode == 2) - snprintf(fix, 5, "2D"); - else if (mode == 3) - snprintf(fix, 5, "3D"); - else - snprintf(fix, 5, "NONE"); - - snprintf(gpsdata, 1024, "Lat %.3f Lon %.3f Alt %.3f Spd %.3f Fix %s", - lat, lon, alt, spd, fix); - - mvwaddstr(netborder, LINES-statheight-1, 2, gpsdata); - - } - box(infoborder, '|', '-'); mvwaddstr(infoborder, 0, 2, "Info"); diff -urN kismet.dev/dronesource.cc kismet.dev2/dronesource.cc --- kismet.dev/dronesource.cc 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/dronesource.cc 2005-08-23 01:59:25.644220096 +0200 @@ -201,9 +201,6 @@ return -1; } - // Grab the GPS info - gps_enabled = vpkt.gps_enabled; - stream_recv_bytes = 0; // printf("debug - version packet valid\n\n"); @@ -336,25 +333,6 @@ packet->encoding = (encoding_type) phdr.encoding; packet->datarate = (uint32_t) ntohl(phdr.datarate); - if (gps_enabled) { - // If the drone is sending us GPS data, use it - packet->gps_lat = Pair2Float((int16_t) ntohs(phdr.gps_lat), - (int64_t) kis_ntoh64(phdr.gps_lat_mant)); - packet->gps_lon = Pair2Float((int16_t) ntohs(phdr.gps_lon), - (int64_t) kis_ntoh64(phdr.gps_lon_mant)); - packet->gps_alt = Pair2Float((int16_t) ntohs(phdr.gps_alt), - (int64_t) kis_ntoh64(phdr.gps_alt_mant)); - packet->gps_spd = Pair2Float((int16_t) ntohs(phdr.gps_spd), - (int64_t) kis_ntoh64(phdr.gps_spd_mant)); - packet->gps_heading = Pair2Float((int16_t) ntohs(phdr.gps_heading), - (int64_t) kis_ntoh64(phdr.gps_heading_mant)); - packet->gps_fix = phdr.gps_fix; - } else if (gpsd != NULL) { - // Otherwise, no - gpsd->FetchLoc(&packet->gps_lat, &packet->gps_lon, &packet->gps_alt, - &packet->gps_spd, &packet->gps_heading, &packet->gps_fix); - } - packet->data = data; packet->moddata = moddata; packet->modified = 0; diff -urN kismet.dev/dronesource.h kismet.dev2/dronesource.h --- kismet.dev/dronesource.h 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/dronesource.h 2005-08-23 01:59:25.644220096 +0200 @@ -79,9 +79,6 @@ uint8_t databuf[MAX_PACKET_LEN]; unsigned int resyncing; - - // Is the drone pushing GPS data to us? - int gps_enabled; }; // Nothing but a registrant for us diff -urN kismet.dev/frontend.cc kismet.dev2/frontend.cc --- kismet.dev/frontend.cc 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/frontend.cc 2005-08-23 01:59:25.645219944 +0200 @@ -248,33 +248,6 @@ } - // Aggregate the GPS data - if (wnet->aggregate_points > 0) { - dnet->virtnet->aggregate_lat += wnet->aggregate_lat; - dnet->virtnet->aggregate_lon += wnet->aggregate_lon; - dnet->virtnet->aggregate_alt += wnet->aggregate_alt; - dnet->virtnet->aggregate_points += wnet->aggregate_points; - } - - if (wnet->gps_fixed > dnet->virtnet->gps_fixed) - dnet->virtnet->gps_fixed = wnet->gps_fixed; - if (wnet->min_lat < dnet->virtnet->min_lat || dnet->virtnet->min_lat == 0) - dnet->virtnet->min_lat = wnet->min_lat; - if (wnet->min_lon < dnet->virtnet->min_lon || dnet->virtnet->min_lon == 0) - dnet->virtnet->min_lon = wnet->min_lon; - if (wnet->min_alt < dnet->virtnet->min_alt || dnet->virtnet->min_alt == 0) - dnet->virtnet->min_alt = wnet->min_alt; - if (wnet->min_spd < dnet->virtnet->min_spd || dnet->virtnet->min_spd == 0) - dnet->virtnet->min_spd = wnet->min_spd; - if (wnet->max_lat > dnet->virtnet->max_lat || dnet->virtnet->max_lat == 0) - dnet->virtnet->max_lat = wnet->max_lat; - if (wnet->max_lon > dnet->virtnet->max_lon || dnet->virtnet->max_lon == 0) - dnet->virtnet->max_lon = wnet->max_lon; - if (wnet->max_alt > dnet->virtnet->max_alt || dnet->virtnet->max_alt == 0) - dnet->virtnet->max_alt = wnet->max_alt; - if (wnet->max_spd > dnet->virtnet->max_spd || dnet->virtnet->max_spd == 0) - dnet->virtnet->max_spd = wnet->max_spd; - // Aggregate the carriers and encodings dnet->virtnet->carrier_set |= wnet->carrier_set; dnet->virtnet->encoding_set |= wnet->encoding_set; diff -urN kismet.dev/kis_packsources.cc kismet.dev2/kis_packsources.cc --- kismet.dev/kis_packsources.cc 2005-08-23 00:59:04.465379568 +0200 +++ kismet.dev2/kis_packsources.cc 2005-08-23 02:01:08.585570632 +0200 @@ -60,13 +60,8 @@ #if defined(HAVE_LIBPCAP) && defined(HAVE_LINUX_WIRELESS) // Linux wext-driven cards - sourcetracker->RegisterPacketsource("cisco", 1, "IEEE80211b", 6, - pcapsource_wext_registrant, - monitor_cisco, unmonitor_cisco, - chancontrol_wext, 1); - sourcetracker->RegisterPacketsource("cisco_wifix", 1, "IEEE80211b", 6, - pcapsource_ciscowifix_registrant, - monitor_cisco_wifix, NULL, NULL, 1); + REG_EMPTY_CARD(sourcetracker, "cisco"); + REG_EMPTY_CARD(sourcetracker, "cisco_wifix"); sourcetracker->RegisterPacketsource("hostap", 1, "IEEE80211b", 6, pcapsource_wext_registrant, monitor_hostap, unmonitor_hostap, @@ -79,21 +74,9 @@ pcapsource_wext_registrant, monitor_orinoco, unmonitor_orinoco, chancontrol_orinoco, 1); - sourcetracker->RegisterPacketsource("acx100", 1, "IEEE80211b", 6, - pcapsource_wextfcs_registrant, - monitor_acx100, unmonitor_acx100, - chancontrol_wext, 1); - sourcetracker->RegisterPacketsource("admtek", 1, "IEEE80211b", 6, - pcapsource_wext_registrant, - monitor_admtek, unmonitor_admtek, - chancontrol_wext, 1); - sourcetracker->RegisterPacketsource("vtar5k", 1, "IEEE80211a", 36, - pcapsource_wext_registrant, - monitor_vtar5k, NULL, chancontrol_wext, 1); - sourcetracker->RegisterPacketsource("atmel_usb", 1, "IEEE80211b", 6, - pcapsource_wext_registrant, - monitor_wext, unmonitor_wext, - chancontrol_wext, 1); + REG_EMPTY_CARD(sourcetracker, "acx100"); + REG_EMPTY_CARD(sourcetracker, "admtek"); + REG_EMPTY_CARD(sourcetracker, "vtar5k"); sourcetracker->RegisterPacketsource("madwifi_a", 1, "IEEE80211a", 36, pcapsource_wextfcs_registrant, @@ -121,38 +104,14 @@ monitor_prism54g, unmonitor_prism54g, chancontrol_prism54g, 1); - sourcetracker->RegisterPacketsource("wlanng_wext", 1, "IEEE80211b", 6, - pcapsource_wlanng_registrant, - monitor_wlanng_avs, NULL, - chancontrol_wext, 1); - - sourcetracker->RegisterPacketsource("ipw2100", 1, "IEEE80211b", 6, - pcapsource_wext_registrant, - monitor_ipw2100, unmonitor_ipw2100, - chancontrol_ipw2100, 1); - - sourcetracker->RegisterPacketsource("ipw2200", 1, "IEEE80211g", 6, - pcapsource_wext_registrant, - monitor_ipw2200, unmonitor_ipw2200, - chancontrol_ipw2200, 1); - - sourcetracker->RegisterPacketsource("ipw2915", 1, "IEEE80211ab", 6, - pcapsource_wext_registrant, - monitor_ipw2200, unmonitor_ipw2200, - chancontrol_ipw2200, 1); + REG_EMPTY_CARD(sourcetracker, "wlanng_wext"); + REG_EMPTY_CARD(sourcetracker, "ipw2100"); + REG_EMPTY_CARD(sourcetracker, "ipw2200"); + REG_EMPTY_CARD(sourcetracker, "ipw2915"); + REG_EMPTY_CARD(sourcetracker, "rt2400"); + REG_EMPTY_CARD(sourcetracker, "rt2500"); + REG_EMPTY_CARD(sourcetracker, "rt8180"); - sourcetracker->RegisterPacketsource("rt2400", 1, "IEEE80211b", 6, - pcapsource_wext_registrant, - monitor_wext, unmonitor_wext, - chancontrol_wext, 1); - sourcetracker->RegisterPacketsource("rt2500", 1, "IEEE80211g", 6, - pcapsource_11g_registrant, - monitor_wext, unmonitor_wext, - chancontrol_wext, 1); - sourcetracker->RegisterPacketsource("rt8180", 1, "IEEE80211b", 6, - pcapsource_wext_registrant, - monitor_wext, unmonitor_wext, - chancontrol_wext, 1); #else // Register the linuxwireless pcap stuff as null @@ -182,31 +141,13 @@ REG_EMPTY_CARD(sourcetracker, "wlanng_wext"); #endif -#if defined(HAVE_LIBPCAP) && defined(SYS_LINUX) - sourcetracker->RegisterPacketsource("wlanng", 1, "IEEE80211b", 6, - pcapsource_wlanng_registrant, - monitor_wlanng, NULL, chancontrol_wlanng, 1); - sourcetracker->RegisterPacketsource("wlanng_avs", 1, "IEEE80211b", 6, - pcapsource_wlanng_registrant, - monitor_wlanng_avs, NULL, - chancontrol_wlanng_avs, 1); sourcetracker->RegisterPacketsource("wrt54g", 1, "na", 0, pcapsource_wrt54g_registrant, - monitor_wrt54g, unmonitor_wrt54g, chancontrol_wext, 0); -#else + monitor_wrt54g, unmonitor_wrt54g, chancontrol_wext, 0); + REG_EMPTY_CARD(sourcetracker, "wlanng"); REG_EMPTY_CARD(sourcetracker, "wlanng_avs"); - REG_EMPTY_CARD(sourcetracker, "wrt54g"); -#endif - -#if defined(SYS_LINUX) && defined(HAVE_LINUX_NETLINK) - sourcetracker->RegisterPacketsource("wlanng_legacy", 1, "IEEE80211b", 6, - prism2source_registrant, - monitor_wlanng_legacy, NULL, - chancontrol_wlanng_legacy, 1); -#else REG_EMPTY_CARD(sourcetracker, "wlanng_legacy"); -#endif #if defined(HAVE_LIBPCAP) && defined(SYS_OPENBSD) sourcetracker->RegisterPacketsource("cisco_openbsd", 1, "IEEE80211b", 6, @@ -240,29 +181,11 @@ REG_EMPTY_CARD(sourcetracker, "radiotap_bsd_b"); #endif -#if defined(HAVE_LIBWIRETAP) - sourcetracker->RegisterPacketsource("wtapfile", 0, "na", 0, - wtapfilesource_registrant, - NULL, NULL, NULL, 0); -#else REG_EMPTY_CARD(sourcetracker, "wtapfile"); -#endif -#if defined(HAVE_WSP100) - sourcetracker->RegisterPacketsource("wsp100", 0, "IEEE80211b", 6, - wsp100source_registrant, - monitor_wsp100, NULL, chancontrol_wsp100, 0); -#else REG_EMPTY_CARD(sourcetracker, "wsp100"); -#endif -#if defined(HAVE_VIHAHEADERS) - sourcetracker->RegisterPacketsource("viha", 1, "IEEE80211b", 6, - vihasource_registrant, - NULL, NULL, chancontrol_viha, 0); -#else REG_EMPTY_CARD(sourcetracker, "viha"); -#endif return 1; } diff -urN kismet.dev/kis_packsources.h kismet.dev2/kis_packsources.h --- kismet.dev/kis_packsources.h 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/kis_packsources.h 2005-08-23 01:59:25.646219792 +0200 @@ -22,11 +22,7 @@ #include "config.h" #include "packetsource.h" -#include "prism2source.h" #include "pcapsource.h" -#include "wtapfilesource.h" -#include "wsp100source.h" -#include "vihasource.h" #include "dronesource.h" #include "packetsourcetracker.h" diff -urN kismet.dev/kismet_client.cc kismet.dev2/kismet_client.cc --- kismet.dev/kismet_client.cc 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/kismet_client.cc 2005-08-23 01:59:25.648219488 +0200 @@ -28,7 +28,6 @@ #include "cursesfront.h" #include "panelfront.h" #include "configfile.h" -#include "speech.h" #ifndef exec_name char *exec_name; @@ -47,11 +46,7 @@ char *configfile; char *uiconfigfile; char *server = NULL; -int sound = -1; -int speech = -1; int flite = 0; -int speech_encoding = 0; -string speech_sentence_encrypted, speech_sentence_unencrypted; unsigned int metric = 0; unsigned int reconnect = 0; @@ -59,20 +54,9 @@ string configdir, groupfile; FILE *group_file = NULL; -// Pipe file descriptor pairs and fd's -int soundpair[2]; -int speechpair[2]; -pid_t soundpid = -1, speechpid = -1; - // Catch our interrupt void CatchShutdown(int sig) { - // Kill our sound players - if (soundpid > 0) - kill(soundpid, 9); - if (speechpid > 0) - kill(speechpid, 9); - if (group_track) { if ((group_file = fopen(groupfile.c_str(), "w")) == NULL) { fprintf(stderr, "WARNING: Unable to open '%s' for writing, groups will not be saved.\n", @@ -116,215 +100,6 @@ exit(0); } -// Subprocess sound handler -void SoundHandler(int *fds, const char *player, map soundmap) { - int read_sock = fds[0]; - - close(fds[1]); - - signal(SIGPIPE, PipeHandler); - - fd_set rset; - - char data[1024]; - - pid_t sndpid = -1; - int harvested = 1; - - while (1) { - FD_ZERO(&rset); - FD_SET(read_sock, &rset); - char *end; - - memset(data, 0, 1024); - - if (harvested == 0) { - // We consider a wait error to be a sign that the child pid died - // so we flag it as harvested and keep on going - pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG); - if (harvestpid == -1 || harvestpid == sndpid) - harvested = 1; - } - - struct timeval tim; - tim.tv_sec = 1; - tim.tv_usec = 0; - - if (select(read_sock + 1, &rset, NULL, NULL, &tim) < 0) { - if (errno != EINTR) { - exit(1); - } - } - - if (FD_ISSET(read_sock, &rset)) { - int ret; - ret = read(read_sock, data, 1024); - - // We'll die off if we get a read error, and we'll let kismet on the - // other side detact that it died - if (ret <= 0 && (errno != EAGAIN && errno != EPIPE)) - exit(1); - - if ((end = strstr(data, "\n")) == NULL) - continue; - - end[0] = '\0'; - } - - if (data[0] == '\0') - continue; - - // If we've harvested the process, spawn a new one and watch it - // instead. Otherwise, we just let go of the data we read - if (harvested == 1) { - // Only take the first line - char *nl; - if ((nl = strchr(data, '\n')) != NULL) - *nl = '\0'; - - char snd[1024]; - - if (soundmap.size() == 0) - snprintf(snd, 1024, "%s", data); - if (soundmap.find(data) != soundmap.end()) - snprintf(snd, 1024, "%s", soundmap[data].c_str()); - else - continue; - - char plr[1024]; - snprintf(plr, 1024, "%s", player); - - harvested = 0; - if ((sndpid = fork()) == 0) { - // Suppress errors - int nulfd = open("/dev/null", O_RDWR); - dup2(nulfd, 1); - dup2(nulfd, 2); - - char * const echoarg[] = { plr, snd, NULL }; - execve(echoarg[0], echoarg, NULL); - } - } - - data[0] = '\0'; - } -} - -// Subprocess speech handler -void SpeechHandler(int *fds, const char *player) { - int read_sock = fds[0]; - close(fds[1]); - - fd_set rset; - - char data[1024]; - - pid_t sndpid = -1; - int harvested = 1; - - while (1) { - FD_ZERO(&rset); - FD_SET(read_sock, &rset); - //char *end; - - memset(data, 0, 1024); - - struct timeval tim; - tim.tv_sec = 1; - tim.tv_usec = 0; - - if (select(read_sock + 1, &rset, NULL, NULL, &tim) < 0) { - if (errno != EINTR) { - exit(1); - } - } - - if (harvested == 0) { - // We consider a wait error to be a sign that the child pid died - // so we flag it as harvested and keep on going - pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG); - if (harvestpid == -1 || harvestpid == sndpid) - harvested = 1; - } - - if (FD_ISSET(read_sock, &rset)) { - int ret; - ret = read(read_sock, data, 1024); - - // We'll die off if we get a read error, and we'll let kismet on the - // other side detact that it died - if (ret <= 0 && (errno != EAGAIN && errno != EPIPE)) - exit(1); - - data[ret] = '\0'; - - } - - if (data[0] == '\0') - continue; - - // If we've harvested the process, spawn a new one and watch it - // instead. Otherwise, we just let go of the data we read - if (harvested == 1) { - harvested = 0; - if ((sndpid = fork()) == 0) { - // Only take the first line - char *nl; - if ((nl = strchr(data, '\n')) != NULL) - *nl = '\0'; - - // Make sure it's shell-clean - MungeToShell(data, strlen(data)); - char spk_call[1024]; - snprintf(spk_call, 1024, "echo \"(%s\\\"%s\\\")\" | %s " - ">/dev/null 2>/dev/null", - flite ? "": "SayText ", data, player); - - system(spk_call); - - exit(0); - } - } - - data[0] = '\0'; - } -} - - -int PlaySound(string in_sound) { - - char snd[1024]; - - snprintf(snd, 1024, "%s\n", in_sound.c_str()); - - if (write(soundpair[1], snd, strlen(snd)) < 0) { - char status[STATUS_MAX]; - snprintf(status, STATUS_MAX, - "ERROR: Could not write to sound pipe. Stopping sound."); - gui->WriteStatus(status); - - return 0; - } - - return 1; -} - -int SayText(string in_text) { - char snd[1024]; - - snprintf(snd, 1024, "%s\n", in_text.c_str()); - - if (write(speechpair[1], snd, strlen(snd)) < 0) { - char status[STATUS_MAX]; - snprintf(status, STATUS_MAX, - "ERROR: Could not write to speech pipe. Stopping speech."); - gui->WriteStatus(status); - - return 0; - } - - return 1; -} int main(int argc, char *argv[]) { exec_name = argv[0]; @@ -345,8 +120,6 @@ char guihost[1024]; int guiport = -1; - int gpsmode = -1; - configfile = NULL; uiconfigfile = NULL; @@ -391,7 +164,6 @@ fprintf(stderr, "Using alternate UI config file: %s\n", uiconfigfile); break; case 'q': - sound = 0; break; case 'g': reqgui = strdup(optarg); @@ -515,70 +287,6 @@ server = strdup(gui_conf->FetchOpt("host").c_str()); } - if (gui_conf->FetchOpt("sound") == "true" && sound == -1) { - if (gui_conf->FetchOpt("soundplay") != "") { - sndplay = gui_conf->FetchOpt("soundplay"); - sound = 1; - - if (gui_conf->FetchOpt("soundopts") != "") - sndplay += " " + gui_conf->FetchOpt("soundopts"); - - if (gui_conf->FetchOpt("sound_new") != "") - wav_map["new"] = gui_conf->FetchOpt("sound_new"); - if (gui_conf->FetchOpt("sound_new_wep") != "") - wav_map["new_wep"] = gui_conf->FetchOpt("sound_new_wep"); - if (gui_conf->FetchOpt("sound_traffic") != "") - wav_map["traffic"] = gui_conf->FetchOpt("sound_traffic"); - if (gui_conf->FetchOpt("sound_junktraffic") != "") - wav_map["junktraffic"] = gui_conf->FetchOpt("sound_junktraffic"); - if (gui_conf->FetchOpt("sound_gpslock") != "") - wav_map["gpslock"] = gui_conf->FetchOpt("sound_gpslock"); - if (gui_conf->FetchOpt("sound_gpslost") != "") - wav_map["gpslost"] = gui_conf->FetchOpt("sound_gpslost"); - if (gui_conf->FetchOpt("sound_alert") != "") - wav_map["alert"] = gui_conf->FetchOpt("sound_alert"); - - } else { - fprintf(stderr, "ERROR: Sound alerts enabled but no sound playing binary specified.\n"); - sound = 0; - } - } else if (sound == -1) - sound = 0; - - /* Added by Shaw Innes 17/2/02 */ - if (gui_conf->FetchOpt("speech") == "true" && speech == -1) { - if (gui_conf->FetchOpt("festival") != "") { - festival = strdup(gui_conf->FetchOpt("festival").c_str()); - speech = 1; - - if (gui_conf->FetchOpt("flite") == "true") - flite = 1; - - string speechtype = gui_conf->FetchOpt("speech_type"); - - if (!strcasecmp(speechtype.c_str(), "nato")) - speech_encoding = SPEECH_ENCODING_NATO; - else if (!strcasecmp(speechtype.c_str(), "spell")) - speech_encoding = SPEECH_ENCODING_SPELL; - else - speech_encoding = SPEECH_ENCODING_NORMAL; - - // Make sure we have encrypted text lines - if (gui_conf->FetchOpt("speech_encrypted") == "" || gui_conf->FetchOpt("speech_unencrypted") == "") { - fprintf(stderr, "ERROR: Speech request but speech_encrypted or speech_unencrypted line missing.\n"); - speech = 0; - } - - speech_sentence_encrypted = gui_conf->FetchOpt("speech_encrypted"); - speech_sentence_unencrypted = gui_conf->FetchOpt("speech_unencrypted"); - - } else { - fprintf(stderr, "ERROR: Speech alerts enabled but no path to festival has been specified.\n"); - speech = 0; - } - } else if (speech == -1) - speech = 0; - if (gui_conf->FetchOpt("decay") != "") { if (sscanf(gui_conf->FetchOpt("decay").c_str(), "%d", &decay) != 1) { fprintf(stderr, "FATAL: Illegal config file value for decay.\n"); @@ -636,45 +344,6 @@ } } - // Fork and find the sound options - if (sound) { - if (pipe(soundpair) == -1) { - fprintf(stderr, "WARNING: Unable to create pipe for audio. Disabling sound.\n"); - sound = 0; - } else { - soundpid = fork(); - - if (soundpid < 0) { - fprintf(stderr, "WARNING: Unable to fork for audio. Disabling sound.\n"); - sound = 0; - } else if (soundpid == 0) { - SoundHandler(soundpair, sndplay.c_str(), wav_map); - exit(0); - } - - close(soundpair[0]); - } - } - - if (speech) { - if (pipe(speechpair) == -1) { - fprintf(stderr, "WARNING: Unable to create pipe for speech. Disabling speech.\n"); - speech = 0; - } else { - speechpid = fork(); - - if (speechpid < 0) { - fprintf(stderr, "WARNING: Unable to fork for speech. Disabling speech.\n"); - speech = 0; - } else if (speechpid == 0) { - SpeechHandler(speechpair, festival); - exit(0); - } - - close(speechpair[0]); - } - } - if (kismet_serv.Connect(guiport, guihost) < 0) { fprintf(stderr, "FATAL: Could not connect to %s:%d.\n", guihost, guiport); CatchShutdown(-1); @@ -884,53 +553,13 @@ } if (pollret != 0) { - if (pollret == CLIENT_ALERT) - if (sound == 1) - sound = PlaySound("alert"); - if (strlen(tcpcli->FetchStatus()) != 0) { gui->WriteStatus(tcpcli->FetchStatus()); // gui->DrawDisplay(); } - // The GPS only gets updated for the primary client - if (tcpcli == primary_client) { - if (tcpcli->FetchMode() == 0 && gpsmode != 0) { - if (sound == 1 && gpsmode != -1) - sound = PlaySound("gpslost"); - gpsmode = 0; - } else if (tcpcli->FetchMode() != 0 && gpsmode == 0) { - if (sound == 1 && gpsmode != -1) - sound = PlaySound("gpslock"); - gpsmode = 1; - } - } - if (tcpcli->FetchDeltaNumNetworks() > 0) { wireless_network *newnet = tcpcli->FetchLastNewNetwork(); - - if (sound == 1 && newnet != lastspoken) { - if (newnet->crypt_set && - wav_map.find("new_wep") != wav_map.end()) - sound = PlaySound("new_wep"); - else - sound = PlaySound("new"); - } - - if (speech == 1 && newnet != lastspoken) { - string text; - - if (newnet != NULL) { - if (newnet->crypt_set) - text = ExpandSpeechString(speech_sentence_encrypted, newnet, speech_encoding); - else - text = ExpandSpeechString(speech_sentence_unencrypted, newnet, speech_encoding); - - speech = SayText(text.c_str()); - } - } - - lastspoken = newnet; } num_networks += tcpcli->FetchNumNetworks(); @@ -938,17 +567,7 @@ num_noise += tcpcli->FetchNumNoise(); num_dropped += tcpcli->FetchNumDropped(); - if (tcpcli->FetchDeltaNumPackets() != 0) { - if (time(0) - last_click >= decay && sound == 1) { - if (tcpcli->FetchDeltaNumPackets() > tcpcli->FetchDeltaNumDropped()) { - sound = PlaySound("traffic"); - } else { - sound = PlaySound("junktraffic"); - } - - last_click = time(0); - } - } + tcpcli->FetchDeltaNumPackets(); } } } else { diff -urN kismet.dev/kismet_drone.cc kismet.dev2/kismet_drone.cc --- kismet.dev/kismet_drone.cc 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/kismet_drone.cc 2005-08-23 01:59:25.649219336 +0200 @@ -32,16 +32,11 @@ #include "packet.h" #include "packetsource.h" -#include "prism2source.h" #include "pcapsource.h" -#include "wtapfilesource.h" -#include "wsp100source.h" -#include "vihasource.h" #include "dronesource.h" #include "packetsourcetracker.h" #include "kis_packsources.h" -#include "gpsd.h" #include "tcpstreamer.h" #include "configfile.h" @@ -53,10 +48,6 @@ const char *config_base = "kismet_drone.conf"; -GPSD *gps = NULL; -int gpsmode = 0; -int gps_enable = 0; - // Timetracker Timetracker timetracker; @@ -81,26 +72,6 @@ exit(0); } -int GpsEvent(Timetracker::timer_event *evt, void *parm) { - // The GPS only provides us a new update once per second we might - // as well only update it here once a second - if (gps_enable) { - int gpsret; - gpsret = gps->Scan(); - if (gpsret < 0) { - if (!silent) - fprintf(stderr, "GPS error fetching data: %s\n", - gps->FetchError()); - - gps_enable = 0; - } - - } - - // We want to be rescheduled - return 1; -} - // Handle channel hopping... this is actually really simple. int ChannelHopEvent(Timetracker::timer_event *evt, void *parm) { sourcetracker.AdvanceChannel(); @@ -148,9 +119,6 @@ TcpStreamer streamer; - char gpshost[1024]; - int gpsport = -1; - int channel_hop = -1; int channel_velocity = 1; int channel_dwell = 0; @@ -351,46 +319,6 @@ exit(1); } - if (conf->FetchOpt("gps") == "true") { - if (sscanf(conf->FetchOpt("gpshost").c_str(), "%1023[^:]:%d", gpshost, &gpsport) != 2) { - fprintf(stderr, "Invalid GPS host in config (host:port required)\n"); - exit(1); - } - - gps_enable = 1; - } else { - gps_enable = 0; - } - - if (gps_enable == 1) { - // Open the GPS - gps = new GPSD(gpshost, gpsport); - - // Lock GPS position - if (conf->FetchOpt("gpsmodelock") == "true") { - fprintf(stderr, "Enabling GPS position lock override (broken GPS unit reports 0 always)\n"); - gps->SetOptions(GPSD_OPT_FORCEMODE); - } - - if (gps->OpenGPSD() < 0) { - fprintf(stderr, "%s\n", gps->FetchError()); - - gps_enable = 0; - } else { - fprintf(stderr, "Opened GPS connection to %s port %d\n", - gpshost, gpsport); - - } - } - - // Update GPS coordinates and handle signal loss if defined - timetracker.RegisterTimer(SERVER_TIMESLICES_SEC, NULL, 1, &GpsEvent, NULL); - - // Add the GPS to the tcpstreamer - streamer.AddGpstracker(gps); - - // Register the gps and timetracker with the sourcetracker - sourcetracker.AddGpstracker(gps); sourcetracker.AddTimetracker(&timetracker); // Register the sources diff -urN kismet.dev/kismet_server.cc kismet.dev2/kismet_server.cc --- kismet.dev/kismet_server.cc 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/kismet_server.cc 2005-08-23 01:59:25.653218728 +0200 @@ -37,11 +37,7 @@ #include "packet.h" #include "packetsource.h" -#include "prism2source.h" #include "pcapsource.h" -#include "wtapfilesource.h" -#include "wsp100source.h" -#include "vihasource.h" #include "dronesource.h" #include "packetsourcetracker.h" #include "kis_packsources.h" @@ -51,15 +47,11 @@ #include "wtaplocaldump.h" #include "airsnortdump.h" #include "fifodump.h" -#include "gpsdump.h" - -#include "gpsd.h" #include "packetracker.h" #include "timetracker.h" #include "alertracker.h" -#include "speech.h" #include "tcpserver.h" #include "server_globals.h" #include "kismet_server.h" @@ -89,17 +81,8 @@ Alertracker alertracker; Timetracker timetracker; -GPSD *gps = NULL; -int gpsmode = 0; -GPSDump gpsdump; - -// Last time we tried to reconnect to the gps -time_t last_gpsd_reconnect = 0; -int gpsd_reconnect_attempt = 0; - FifoDumpFile fifodump; TcpServer ui_server; -int sound = -1; packet_info last_info; int decay; channel_power channel_graph[CHANNEL_MAX]; @@ -112,11 +95,8 @@ // Wep keys macmap bssid_wep_map; -// Pipe file descriptor pairs and fd's -int soundpair[2]; -int speechpair[2]; int chanpair[2]; -pid_t soundpid = -1, speechpid = -1, chanpid = -1; +pid_t chanpid = -1; // Past alerts unsigned int max_alerts = 50; @@ -177,17 +157,6 @@ int tcpport = -1; int tcpmax; -//const char *sndplay = NULL; -string sndplay; - -const char *festival = NULL; -int speech = -1; -int flite = 0; -int speech_encoding = 0; -string speech_sentence_encrypted, speech_sentence_unencrypted; - -map wav_map; - int beacon_log = 1; int phy_log = 1; int mangle_log = 0; @@ -347,17 +316,6 @@ // delete cryptfile; } - if (gps_log == 1) { - if (gpsdump.CloseDump(1) < 0) - fprintf(stderr, "Didn't log any GPS coordinates, unlinking gps file\n"); - } - - // Kill our sound players - if (soundpid > 0) - kill(soundpid, 9); - if (speechpid > 0) - kill(speechpid, 9); - // Shut down the packet sources sourcetracker.CloseSources(); @@ -368,228 +326,10 @@ exit(0); } -// Subprocess sound handler -void SoundHandler(int *fds, const char *player, map soundmap) { - int read_sock = fds[0]; - close(fds[1]); - - fd_set rset; - - char data[1024]; - - pid_t sndpid = -1; - int harvested = 1; - - while (1) { - FD_ZERO(&rset); - FD_SET(read_sock, &rset); - char *end; - - memset(data, 0, 1024); - - struct timeval tm; - tm.tv_sec = 1; - tm.tv_usec = 0; - - if (select(read_sock + 1, &rset, NULL, NULL, &tm) < 0) { - if (errno != EINTR) { - exit(1); - } - } - - if (harvested == 0) { - // We consider a wait error to be a sign that the child pid died - // so we flag it as harvested and keep on going - pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG); - if (harvestpid == -1 || harvestpid == sndpid) - harvested = 1; - } - - if (FD_ISSET(read_sock, &rset)) { - int ret; - ret = read(read_sock, data, 1024); - - // We'll die off if we get a read error, and we'll let kismet on the - // other side detact that it died - if (ret <= 0 && (errno != EAGAIN && errno != EPIPE)) - exit(1); - - if ((end = strstr(data, "\n")) == NULL) - continue; - - end[0] = '\0'; - } - - if (data[0] == '\0') - continue; - - - // If we've harvested the process, spawn a new one and watch it - // instead. Otherwise, we just let go of the data we read - if (harvested == 1) { - // Only take the first line - char *nl; - if ((nl = strchr(data, '\n')) != NULL) - *nl = '\0'; - - // Make sure it's shell-clean - - char snd[1024]; - - if (soundmap.size() == 0) - snprintf(snd, 1024, "%s", data); - if (soundmap.find(data) != soundmap.end()) - snprintf(snd, 1024, "%s", soundmap[data].c_str()); - else - continue; - - char plr[1024]; - snprintf(plr, 1024, "%s", player); - - harvested = 0; - if ((sndpid = fork()) == 0) { - // Suppress errors - if (silent) { - int nulfd = open("/dev/null", O_RDWR); - dup2(nulfd, 1); - dup2(nulfd, 2); - } - - char * const echoarg[] = { plr, snd, NULL }; - execve(echoarg[0], echoarg, NULL); - } - } - data[0] = '\0'; - } -} - -// Subprocess speech handler -void SpeechHandler(int *fds, const char *player) { - int read_sock = fds[0]; - close(fds[1]); - - fd_set rset; - - char data[1024]; - - pid_t sndpid = -1; - int harvested = 1; - - while (1) { - FD_ZERO(&rset); - FD_SET(read_sock, &rset); - //char *end; - - memset(data, 0, 1024); - - if (harvested == 0) { - // We consider a wait error to be a sign that the child pid died - // so we flag it as harvested and keep on going - pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG); - if (harvestpid == -1 || harvestpid == sndpid) - harvested = 1; - } - - struct timeval tm; - tm.tv_sec = 1; - tm.tv_usec = 0; - - if (select(read_sock + 1, &rset, NULL, NULL, &tm) < 0) { - if (errno != EINTR) { - exit(1); - } - } - - if (FD_ISSET(read_sock, &rset)) { - int ret; - ret = read(read_sock, data, 1024); - - // We'll die off if we get a read error, and we'll let kismet on the - // other side detact that it died - if (ret <= 0 && (errno != EAGAIN && errno != EPIPE)) - exit(1); - - data[ret] = '\0'; - } - - if (data[0] == '\0') - continue; - - // If we've harvested the process, spawn a new one and watch it - // instead. Otherwise, we just let go of the data we read - if (harvested == 1) { - harvested = 0; - if ((sndpid = fork()) == 0) { - // Only take the first line - char *nl; - if ((nl = strchr(data, '\n')) != NULL) - *nl = '\0'; - - // Make sure it's shell-clean - MungeToShell(data, strlen(data)); - char spk_call[1024]; - snprintf(spk_call, 1024, "echo \"(%s\\\"%s\\\")\" | %s " - ">/dev/null 2>/dev/null", - flite ? "" : "SayText ", data, player); - system(spk_call); - - exit(0); - } - } - - data[0] = '\0'; - } -} - - -// Fork and run a system call to play a sound -int PlaySound(string in_sound) { - - char snd[1024]; - - snprintf(snd, 1024, "%s\n", in_sound.c_str()); - - if (write(soundpair[1], snd, strlen(snd)) < 0) { - char status[STATUS_MAX]; - if (!silent) - fprintf(stderr, "ERROR: Write error, closing sound pipe.\n"); - snprintf(status, STATUS_MAX, "ERROR: Write error on sound pipe, closing sound connection"); - NetWriteStatus(status); - - return 0; - } - - return 1; -} - -int SayText(string in_text) { - - char snd[1024]; - - snprintf(snd, 1024, "%s\n", in_text.c_str()); - MungeToShell(snd, 1024); - - if (write(speechpair[1], snd, strlen(snd)) < 0) { - char status[STATUS_MAX]; - if (!silent) - fprintf(stderr, "ERROR: Write error, closing speech pipe.\n"); - snprintf(status, STATUS_MAX, "ERROR: Write error on speech pipe, closing speech connection"); - NetWriteStatus(status); - - return 0; - } - - return 1; -} - void KisLocalAlert(const char *in_text) { time_t now = time(0); if (!silent) fprintf(stderr, "ALERT %.24s %s\n", ctime(&now), in_text); - - if (sound == 1) - sound = PlaySound("alert"); - } void KisLocalStatus(const char *in_status) { @@ -638,37 +378,6 @@ char tmpstr[32]; - GPS_data gdata; - - if (gps_enable) { - float lat, lon, alt, spd, hed; - int mode; - - gps->FetchLoc(&lat, &lon, &alt, &spd, &hed, &mode); - - snprintf(tmpstr, 32, "%f", lat); - gdata.lat = tmpstr; - snprintf(tmpstr, 32, "%f", lon); - gdata.lon = tmpstr; - snprintf(tmpstr, 32, "%f", alt); - gdata.alt = tmpstr; - snprintf(tmpstr, 32, "%f", spd); - gdata.spd = tmpstr; - snprintf(tmpstr, 32, "%f", hed); - gdata.heading = tmpstr; - snprintf(tmpstr, 32, "%d", mode); - gdata.mode = tmpstr; - } else { - gdata.lat = "0.0"; - gdata.lon = "0.0"; - gdata.alt = "0.0"; - gdata.spd = "0.0"; - gdata.heading = "0.0"; - gdata.mode = "0"; - } - - ui_server.SendToAll(gps_ref, (void *) &gdata); - INFO_data idata; snprintf(tmpstr, 32, "%d", tracker.FetchNumNetworks()); idata.networks = tmpstr; @@ -789,81 +498,6 @@ } } -int GpsEvent(Timetracker::timer_event *evt, void *parm) { - char status[STATUS_MAX]; - - // The GPS only provides us a new update once per second we might - // as well only update it here once a second - - // If we're disconnected, try to reconnect. - if (gpsd_reconnect_attempt > 0) { - // Increment the time between connection attempts - if (last_gpsd_reconnect + ((gpsd_reconnect_attempt - 1) * 2) < time(0)) { - if (gps->OpenGPSD() < 0) { - last_gpsd_reconnect = time(0); - - if (gpsd_reconnect_attempt < 20) - gpsd_reconnect_attempt++; - - snprintf(status, STATUS_MAX, "Unable to reconnect to GPSD, trying " - "again in %d seconds.", ((gpsd_reconnect_attempt - 1) * 2)); - - if (!silent || NetWriteStatus(status) == 0) - fprintf(stderr, "WARNING: %s\n", status); - - return 1; - } else { - gpsd_reconnect_attempt = 0; - - snprintf(status, STATUS_MAX, "Reopened connection to GPSD"); - if (!silent || NetWriteStatus(status) == 0) - fprintf(stderr, "NOTICE: %s\n", status); - } - } else { - // Don't process more if we haven't woken up yet - return 1; - } - - } - - if (gps_enable) { - int gpsret; - gpsret = gps->Scan(); - - if (gpsret < 0) { - snprintf(status, STATUS_MAX, "GPS error requesting data: %s", - gps->FetchError()); - - if (!silent || NetWriteStatus(status) == 0) - fprintf(stderr, "WARNING: %s\n", status); - - gpsd_reconnect_attempt = 1; - } - - if (gpsret == 0 && gpsmode != 0) { - if (!silent || NetWriteStatus("Lost GPS signal.") == 0) - fprintf(stderr, "Lost GPS signal.\n"); - if (sound == 1) - sound = PlaySound("gpslost"); - - gpsmode = 0; - } else if (gpsret != 0 && gpsmode == 0) { - if (!silent || NetWriteStatus("Acquired GPS signal.") == 0) - fprintf(stderr, "Acquired GPS signal.\n"); - if (sound == 1) - sound = PlaySound("gpslock"); - - gpsmode = 1; - } - } - - if (gps_log == 1 && gpsmode != 0 && gps != NULL) { - gpsdump.DumpTrack(gps); - } - - // We want to be rescheduled - return 1; -} // Simple redirect to the network info drawer. We don't want to change netwriteinfo to a // timer event since we call it un-timed too @@ -884,13 +518,6 @@ return 1; } -// Write the waypoints for gpsdrive -int WaypointSyncEvent(Timetracker::timer_event *evt, void *parm) { - tracker.WriteGpsdriveWaypt(waypoint_file); - - return 1; -} - // Handle tracker maintenance int TrackerTickEvent(Timetracker::timer_event *evt, void *parm) { tracker.Tick(); @@ -1159,11 +786,9 @@ " -c, --capture-source Packet capture source line (type,interface,name)\n" " -C, --enable-capture-sources Comma separated list of named packet sources to use.\n" " -l, --log-types Comma separated list of types to log,\n" - " (ie, dump,cisco,weak,network,gps)\n" + " (ie, dump,cisco,weak,network)\n" " -d, --dump-type Dumpfile type (wiretap)\n" " -m, --max-packets Maximum number of packets before starting new dump\n" - " -q, --quiet Don't play sounds\n" - " -g, --gps GPS server (host:port or off)\n" " -p, --port TCPIP server port for GUI connections\n" " -a, --allowed-hosts Comma separated list of hosts allowed to connect\n" " -b, --bind-address
Bind to this address. Default INADDR_ANY\n." @@ -1287,23 +912,6 @@ ip_track = 1; } - - if (conf->FetchOpt("waypoints") == "true") { - if(conf->FetchOpt("waypointdata") == "") { - fprintf(stderr, "WARNING: Waypoint logging requested but no waypoint data file given.\n" - "Waypoint logging will be disabled.\n"); - waypoint = 0; - } else { - waypointfile = conf->ExpandLogPath(conf->FetchOpt("waypointdata"), "", "", 0, 1); - waypoint = 1; - } - if(conf->FetchOpt("waypoint_essid") == "true") { - waypointformat = 1; - } else { - waypointformat = 0; - } - } - if (conf->FetchOpt("metric") == "true") { fprintf(stderr, "Using metric measurements.\n"); metric = 1; @@ -1421,26 +1029,6 @@ } } - - if (strstr(logtypes, "gps")) { - if (gps_log == 0) { - fprintf(stderr, "WARNING: Disabling GPS logging.\n"); - } else { - gps_log = 1; - - if (conf->FetchOpt("logtemplate") == "") { - fprintf(stderr, "FATAL: Logging (gps coordinates) enabled but no logtemplate given in config.\n"); - ErrorShutdown(); - } - } - - } - - if (gps_log == 1 && !net_log) { - fprintf(stderr, "WARNING: Logging (gps coordinates) enabled but XML logging (networks) was not.\n" - "It will be enabled now.\n"); - xml_log = 1; - } } if (conf->FetchOpt("decay") != "") { @@ -1561,72 +1149,6 @@ legal_ipblock_vec.push_back(ipb); } - // Process sound stuff - if (conf->FetchOpt("sound") == "true" && sound == -1) { - if (conf->FetchOpt("soundplay") != "") { - sndplay = conf->FetchOpt("soundplay"); - - if (conf->FetchOpt("soundopts") != "") - sndplay += " " + conf->FetchOpt("soundopts"); - - sound = 1; - - if (conf->FetchOpt("sound_new") != "") - wav_map["new"] = conf->FetchOpt("sound_new"); - if (conf->FetchOpt("sound_new_wep") != "") - wav_map["new_wep"] = conf->FetchOpt("sound_new_wep"); - if (conf->FetchOpt("sound_traffic") != "") - wav_map["traffic"] = conf->FetchOpt("sound_traffic"); - if (conf->FetchOpt("sound_junktraffic") != "") - wav_map["junktraffic"] = conf->FetchOpt("sound_traffic"); - if (conf->FetchOpt("sound_gpslock") != "") - wav_map["gpslock"] = conf->FetchOpt("sound_gpslock"); - if (conf->FetchOpt("sound_gpslost") != "") - wav_map["gpslost"] = conf->FetchOpt("sound_gpslost"); - if (conf->FetchOpt("sound_alert") != "") - wav_map["alert"] = conf->FetchOpt("sound_alert"); - - } else { - fprintf(stderr, "ERROR: Sound alerts enabled but no sound playing binary specified.\n"); - sound = 0; - } - } else if (sound == -1) - sound = 0; - - /* Added by Shaw Innes 17/2/02 */ - /* Modified by Andrew Etter 15/9/02 */ - if (conf->FetchOpt("speech") == "true" && speech == -1) { - if (conf->FetchOpt("festival") != "") { - festival = strdup(conf->FetchOpt("festival").c_str()); - speech = 1; - - if (conf->FetchOpt("flite") == "true") - flite = 1; - - string speechtype = conf->FetchOpt("speech_type"); - - if (!strcasecmp(speechtype.c_str(), "nato")) - speech_encoding = SPEECH_ENCODING_NATO; - else if (!strcasecmp(speechtype.c_str(), "spell")) - speech_encoding = SPEECH_ENCODING_SPELL; - else - speech_encoding = SPEECH_ENCODING_NORMAL; - - // Make sure we have encrypted text lines - if (conf->FetchOpt("speech_encrypted") == "" || conf->FetchOpt("speech_unencrypted") == "") { - fprintf(stderr, "ERROR: Speech request but speech_encrypted or speech_unencrypted line missing.\n"); - speech = 0; - } - - speech_sentence_encrypted = conf->FetchOpt("speech_encrypted"); - speech_sentence_unencrypted = conf->FetchOpt("speech_unencrypted"); - } else { - fprintf(stderr, "ERROR: Speech alerts enabled but no path to festival has been specified.\n"); - speech = 0; - } - } else if (speech == -1) - speech = 0; - if (conf->FetchOpt("writeinterval") != "") { if (sscanf(conf->FetchOpt("writeinterval").c_str(), "%d", &datainterval) != 1) { fprintf(stderr, "FATAL: Illegal config file value for data interval.\n"); @@ -1646,45 +1168,6 @@ fprintf(stderr, "WARNING: No client_manuf file specified. Client manufacturers will not be detected.\n"); } - // Fork and find the sound options - if (sound) { - if (pipe(soundpair) == -1) { - fprintf(stderr, "WARNING: Unable to create pipe for audio. Disabling sound.\n"); - sound = 0; - } else { - soundpid = fork(); - - if (soundpid < 0) { - fprintf(stderr, "WARNING: Unable to fork for audio. Disabling sound.\n"); - sound = 0; - } else if (soundpid == 0) { - SoundHandler(soundpair, sndplay.c_str(), wav_map); - exit(0); - } - - close(soundpair[0]); - } - } - - if (speech) { - if (pipe(speechpair) == -1) { - fprintf(stderr, "WARNING: Unable to create pipe for speech. Disabling speech.\n"); - speech = 0; - } else { - speechpid = fork(); - - if (speechpid < 0) { - fprintf(stderr, "WARNING: Unable to fork for speech. Disabling speech.\n"); - speech = 0; - } else if (speechpid == 0) { - SpeechHandler(speechpair, festival); - exit(0); - } - - close(speechpair[0]); - } - } - // Grab the filtering string filter_bit; @@ -1710,7 +1193,7 @@ } if ((filter_bit = conf->FetchOpt("filter_export")) != "") { - fprintf(stderr, "Enabling filtering on exported (csv, xml, network, gps) files.\n"); + fprintf(stderr, "Enabling filtering on exported (csv, xml, network) files.\n"); filter_export = 1; if (ConfigFile::ParseFilterLine(filter_bit, &filter_export_bssid, &filter_export_source, &filter_export_dest, &filter_export_bssid_invert, @@ -1816,14 +1299,6 @@ } - if (waypoint) { - if ((waypoint_file = fopen(waypointfile.c_str(), "a")) == NULL) { - fprintf(stderr, "WARNING: Could not open waypoint file '%s' for writing: %s\n", - waypointfile.c_str(), strerror(errno)); - waypoint = 0; - } - } - // Create all the logs and title/number them appropriately // We need to save this for after we toast the conf record int logfile_matched = 0; @@ -1871,13 +1346,6 @@ continue; } - if (gps_log == 1) { - gpslogfile = conf->ExpandLogPath(conf->FetchOpt("logtemplate"), logname, "gps", run_num); - - if (gpslogfile == "") - continue; - } - // if we made it this far we're cool -- all the logfiles we're writing to matched // this number logfile_matched = 1; @@ -1906,9 +1374,6 @@ if (cisco_log) fprintf(stderr, "Logging cisco product information to %s\n", ciscologfile.c_str()); - if (gps_log == 1) - fprintf(stderr, "Logging gps coordinates to %s\n", gpslogfile.c_str()); - if (data_log) fprintf(stderr, "Logging data to %s\n", dumplogfile.c_str()); @@ -2055,7 +1520,6 @@ { "dump-type", required_argument, 0, 'd' }, { "max-packets", required_argument, 0, 'm' }, { "quiet", no_argument, 0, 'q' }, - { "gps", required_argument, 0, 'g' }, { "port", required_argument, 0, 'p' }, { "allowed-hosts", required_argument, 0, 'a' }, { "bind-address", required_argument, 0, 'b'}, @@ -2136,18 +1600,6 @@ Usage(argv[0]); } break; - case 'g': - // GPS - if (strcmp(optarg, "off") == 0) { - gps_enable = 0; - } - else if (sscanf(optarg, "%1023[^:]:%d", gpshost, &gpsport) < 2) { - fprintf(stderr, "Invalid GPS host '%s' (host:port or off required)\n", - optarg); - gps_enable = 1; - Usage(argv[0]); - } - break; case 'p': // Port if (sscanf(optarg, "%d", &tcpport) != 1) { @@ -2169,7 +1621,6 @@ break; case 'q': // Quiet - sound = 0; break; case 'v': // version @@ -2323,39 +1774,6 @@ // And we're done fclose(pid_file); - - // Set up the GPS object to give to the children - if (gpsport == -1 && gps_enable) { - if (conf->FetchOpt("gps") == "true") { - if (sscanf(conf->FetchOpt("gpshost").c_str(), "%1023[^:]:%d", gpshost, - &gpsport) != 2) { - fprintf(stderr, "Invalid GPS host in config (host:port required)\n"); - exit(1); - } - - gps_enable = 1; - } else { - gps_enable = 0; - gps_log = 0; - } - } - - if (gps_enable == 1) { - gps = new GPSD(gpshost, gpsport); - - // Lock GPS position - if (conf->FetchOpt("gpsmodelock") == "true") { - fprintf(stderr, "Enabling GPS position lock override (broken GPS unit " - "reports 0 always)\n"); - gps->SetOptions(GPSD_OPT_FORCEMODE); - } - - } else { - gps_log = 0; - } - - // Register the gps and timetracker with the sourcetracker - sourcetracker.AddGpstracker(gps); sourcetracker.AddTimetracker(&timetracker); // Handle errors here maybe in the future @@ -2522,13 +1940,6 @@ fprintf(stderr, "Dump file format: %s\n", dumpfile->FetchType()); } - if (gps_enable && gps_log == 1) { - if (gpsdump.OpenDump(gpslogfile.c_str(), xmllogfile.c_str()) < 0) { - fprintf(stderr, "FATAL: GPS dump error: %s\n", gpsdump.FetchError()); - ErrorShutdown(); - } - } - // Open our files first to make sure we can, we'll unlink the empties later. FILE *testfile = NULL; if (net_log) { @@ -2600,14 +2011,13 @@ */ if (data_log || net_log || crypt_log) { - snprintf(status, STATUS_MAX, "Logging%s%s%s%s%s%s%s", + snprintf(status, STATUS_MAX, "Logging%s%s%s%s%s%s", data_log ? " data" : "" , net_log ? " networks" : "" , csv_log ? " CSV" : "" , xml_log ? " XML" : "" , crypt_log ? " weak" : "", - cisco_log ? " cisco" : "", - gps_log == 1 ? " gps" : ""); + cisco_log ? " cisco" : ""); fprintf(stderr, "%s\n", status); } else if (no_log) { snprintf(status, STATUS_MAX, "Not logging any data."); @@ -2625,23 +2035,6 @@ } } - if (gps_enable) { - // Open the GPS - if (gps->OpenGPSD() < 0) { - fprintf(stderr, "%s\n", gps->FetchError()); - - gps_enable = 0; - gps_log = 0; - } else { - fprintf(stderr, "Opened GPS connection to %s port %d\n", - gpshost, gpsport); - - gpsmode = gps->FetchMode(); - - last_gpsd_reconnect = time(0); - } - } - fprintf(stderr, "Listening on port %d.\n", tcpport); for (unsigned int ipvi = 0; ipvi < legal_ipblock_vec.size(); ipvi++) { char *netaddr = strdup(inet_ntoa(legal_ipblock_vec[ipvi]->network)); @@ -2682,8 +2075,6 @@ &Protocol_NETWORK, &ProtocolNetworkEnable); client_ref = ui_server.RegisterProtocol("CLIENT", 0, CLIENT_fields_text, &Protocol_CLIENT, &ProtocolClientEnable); - gps_ref = ui_server.RegisterProtocol("GPS", 0, GPS_fields_text, - &Protocol_GPS, NULL); info_ref = ui_server.RegisterProtocol("INFO", 0, INFO_fields_text, &Protocol_INFO, NULL); remove_ref = ui_server.RegisterProtocol("REMOVE", 0, REMOVE_fields_text, @@ -2738,14 +2129,9 @@ // Write network info and tick the tracker once per second timetracker.RegisterTimer(SERVER_TIMESLICES_SEC, NULL, 1, &NetWriteEvent, NULL); timetracker.RegisterTimer(SERVER_TIMESLICES_SEC, NULL, 1, &TrackerTickEvent, NULL); - // Update GPS coordinates and handle signal loss if defined - timetracker.RegisterTimer(SERVER_TIMESLICES_SEC, NULL, 1, &GpsEvent, NULL); // Sync the data files if requested if (datainterval > 0 && no_log == 0) timetracker.RegisterTimer(datainterval * SERVER_TIMESLICES_SEC, NULL, 1, &ExportSyncEvent, NULL); - // Write waypoints if requested - if (waypoint) - timetracker.RegisterTimer(decay * SERVER_TIMESLICES_SEC, NULL, 1, &WaypointSyncEvent, NULL); // Channel hop if requested if (channel_hop) { if (channel_dwell) @@ -2769,7 +2155,6 @@ snprintf(status, 1024, "%s", TIMESTAMP); kdata.timestamp = status; - time_t last_click = 0; int num_networks = 0, num_packets = 0, num_noise = 0, num_dropped = 0; @@ -2918,54 +2303,13 @@ } - if (gps_log == 1 && info.type != packet_noise && - info.type != packet_unknown && info.type != packet_phy && - info.corrupt == 0) { - if (gpsdump.DumpPacket(&info) < 0) { - snprintf(status, STATUS_MAX, "%s", gpsdump.FetchError()); - if (!silent || NetWriteStatus(status) == 0) - fprintf(stderr, "%s\n", status); - } - } - // tracker.ProcessPacket(info); tracker.ProcessPacket(&packet, &info, &bssid_wep_map, wep_identity); - if (tracker.FetchNumNetworks() > num_networks) { - if (sound == 1) - if (info.crypt_set && - wav_map.find("new_wep") != wav_map.end()) - sound = PlaySound("new_wep"); - else - sound = PlaySound("new"); - if (speech == 1) { - string text; - - if (info.crypt_set) - text = ExpandSpeechString(speech_sentence_encrypted, &info, - speech_encoding); - else - text = ExpandSpeechString(speech_sentence_unencrypted, - &info, speech_encoding); - - speech = SayText(MungeToShell(text).c_str()); - } - } num_networks = tracker.FetchNumNetworks(); if (tracker.FetchNumPackets() != num_packets) { - if (cur_time - last_click >= decay && sound == 1) { - if (tracker.FetchNumPackets() - num_packets > - tracker.FetchNumDropped() + localdropnum - num_dropped) { - sound = PlaySound("traffic"); - } else { - sound = PlaySound("junktraffic"); - } - - last_click = cur_time; - } - num_packets = tracker.FetchNumPackets(); num_noise = tracker.FetchNumNoise(); num_dropped = tracker.FetchNumDropped() + localdropnum; diff -urN kismet.dev/kismet_server.h kismet.dev2/kismet_server.h --- kismet.dev/kismet_server.h 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/kismet_server.h 2005-08-23 01:59:25.653218728 +0200 @@ -33,10 +33,6 @@ void handle_command(TcpServer *tcps, client_command *cc); int NetWriteStatus(const char *in_status); void NetWriteInfo(); -int SayText(string in_text); -int PlaySound(string in_sound); -void SpeechHandler(int *fds, const char *player); -void SoundHandler(int *fds, const char *player, map soundmap); void ProtocolAlertEnable(int in_fd); void ProtocolNetworkEnable(int in_fd); void ProtocolClientEnable(int in_fd); diff -urN kismet.dev/packetracker.cc kismet.dev2/packetracker.cc --- kismet.dev/packetracker.cc 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/packetracker.cc 2005-08-23 01:59:25.656218272 +0200 @@ -2439,23 +2439,3 @@ } -// Write a gpsdrive compatable waypoint file -int Packetracker::WriteGpsdriveWaypt(FILE *in_file) { - fseek(in_file, 0L, SEEK_SET); - ftruncate(fileno(in_file), 0); - - // Convert the map to a vector and sort it - for (map::const_iterator i = bssid_map.begin(); - i != bssid_map.end(); ++i) { - wireless_network *net = i->second; - - float lat, lon; - lat = (net->min_lat + net->max_lat) / 2; - lon = (net->min_lon + net->max_lon) / 2; - fprintf(in_file, "%s\t%f %f\n", waypointformat == 1 ? net->ssid.c_str() : net->bssid.Mac2String().c_str(), lat, lon); - } - - fflush(in_file); - - return 1; -} diff -urN kismet.dev/packetracker.h kismet.dev2/packetracker.h --- kismet.dev/packetracker.h 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/packetracker.h 2005-08-23 01:59:25.656218272 +0200 @@ -30,7 +30,6 @@ #include #include "util.h" -#include "gpsd.h" #include "packet.h" #include "tracktypes.h" #include "manuf.h" @@ -85,8 +84,6 @@ int WriteXMLNetworks(string in_fname); int WriteCisco(string in_fname); - int WriteGpsdriveWaypt(FILE *in_file); - void WriteSSIDMap(FILE *in_file); void ReadSSIDMap(FILE *in_file); diff -urN kismet.dev/packetsourcetracker.cc kismet.dev2/packetsourcetracker.cc --- kismet.dev/packetsourcetracker.cc 2005-08-23 00:59:39.969982048 +0200 +++ kismet.dev2/packetsourcetracker.cc 2005-08-23 01:59:25.657218120 +0200 @@ -24,7 +24,6 @@ Packetsourcetracker::Packetsourcetracker() { next_packsource_id = 0; next_meta_id = 0; - gpsd = NULL; timetracker = NULL; chanchild_pid = 0; sockpair[0] = sockpair[1] = 0; @@ -691,7 +690,6 @@ // Register the trackers with it meta->capsource->AddTimetracker(timetracker); - meta->capsource->AddGpstracker(gpsd); // Open it fprintf(stderr, "Source %d (%s): Opening %s source interface %s...\n", diff -urN kismet.dev/packetsourcetracker.h kismet.dev2/packetsourcetracker.h --- kismet.dev/packetsourcetracker.h 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/packetsourcetracker.h 2005-08-23 01:59:25.658217968 +0200 @@ -30,7 +30,6 @@ #include #include "timetracker.h" -#include "gpsd.h" #include "packetsource.h" // Sentinel for starting a new packet @@ -144,9 +143,6 @@ // Register a timer event handler for us to use void AddTimetracker(Timetracker *in_tracker) { timetracker = in_tracker; } - // Register the GPS server for us to use - void AddGpstracker(GPSD *in_gpsd) { gpsd = in_gpsd; } - // Register a packet prototype source... Card type string, root binding requirement, // function to generate an instance of the source, and function to change channel // for this card type. This fills out the prototype. Sources that don't hop @@ -221,7 +217,6 @@ uint16_t channel; } chanchild_changepacket; - GPSD *gpsd; Timetracker *timetracker; char errstr[1024]; diff -urN kismet.dev/panelfront.cc kismet.dev2/panelfront.cc --- kismet.dev/panelfront.cc 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/panelfront.cc 2005-08-23 01:59:25.659217816 +0200 @@ -37,7 +37,6 @@ " Key Action", " e List Kismet servers", " z Toggle fullscreen zoom of network view", - " m Toggle muting of sound and speech", " t Tag (or untag) selected network", " g Group tagged networks", " u Ungroup current group", @@ -121,7 +120,6 @@ "Key Action", " e List Kismet servers", " z Toggle fullscreen net list", - " m Toggle muting", " t Tag (or untag) selected", " g Group tagged networks", " u Ungroup current group", @@ -237,19 +235,6 @@ }; -char *KismetHelpGps[] = { - "KISMET NETWORK FOLLOW", - "This panel estimates the center of a network, the current", - "direction of travel, and the direction of the network center", - "and distance relative to the current direction of movement.", - " Key Action", - " s Follow location of strongest packet", - " c Follow location of estimated network center", - " q Close popup", - NULL -}; - - char *KismetHelpStats[] = { "KISMET NETWORK STATISTICS", "This panel displays overall statistics about the wireless", @@ -678,7 +663,6 @@ } // Enable all the protocols we handle - in_client->EnableProtocol("GPS"); in_client->EnableProtocol("INFO"); in_client->EnableProtocol("REMOVE"); in_client->EnableProtocol("NETWORK"); @@ -1282,27 +1266,6 @@ if (con->client == NULL) continue; - // Update GPS - float newlat, newlon, newalt, newspd, newheading; - int newfix; - con->client->FetchLoc(&newlat, &newlon, &newalt, &newspd, &newheading, &newfix); - - if (GPSD::EarthDistance(newlat, newlon, last_lat, last_lon) > 10) { - con->last_lat = con->lat; - con->last_lon = con->lon; - con->last_spd = con->spd; - con->last_alt = con->alt; - con->last_fix = con->fix; - con->last_heading = con->heading; - } - - con->lat = newlat; - con->lon = newlon; - con->alt = newalt; - con->spd = newspd; - con->heading = newheading; - con->fix = newfix; - // Update quality con->quality = con->client->FetchQuality(); con->power = con->client->FetchPower(); diff -urN kismet.dev/panelfront.h kismet.dev2/panelfront.h --- kismet.dev/panelfront.h 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/panelfront.h 2005-08-23 01:59:25.660217664 +0200 @@ -65,7 +65,6 @@ #define SORT_SIZE 10 extern char *KismetHelpPower[]; extern char *KismetHelpRate[]; -extern char *KismetHelpGps[]; extern char *KismetHelpStats[]; extern char *KismetHelpDump[]; extern char *KismetHelpPack[]; @@ -269,7 +268,6 @@ int RatePrinter(void *in_window); int StatsPrinter(void *in_window); int PackPrinter(void *in_window); - int GpsPrinter(void *in_window); int AlertPrinter(void *in_window); int MainClientPrinter(void *in_window); @@ -298,7 +296,6 @@ int PackInput(void *in_window, int in_chr); // Help has a generic handler int TextInput(void *in_window, int in_chr); - int GpsInput(void *in_window, int in_chr); int AlertInput(void *in_window, int in_chr); int MainClientInput(void *in_window, int in_chr); diff -urN kismet.dev/panelfront_display.cc kismet.dev2/panelfront_display.cc --- kismet.dev/panelfront_display.cc 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/panelfront_display.cc 2005-08-23 01:59:25.663217208 +0200 @@ -727,7 +727,7 @@ mvwaddstr(netwin, netwin->_maxy, netwin->_maxx - 14, ptxt); } -#ifdef HAVE_GPS +#if 0 if (!(lat == 0 && lon == 0 && alt == 0 && spd == 0 && fix == 0)) { @@ -1496,51 +1496,6 @@ snprintf(output, print_width, "Networks: %d", (int) details_network->networks.size()); kwin->text.push_back(output); - if (details_network->virtnet->gps_fixed != -1) { - if ((details_network->virtnet->min_lat == 90) && (details_network->virtnet->min_lon == 180) && - (details_network->virtnet->max_lat == -90) && (details_network->virtnet->max_lon == -180)) { - snprintf(output, print_width, "Min Loc : N/A"); - kwin->text.push_back(output); - snprintf(output, print_width, "Max Loc : N/A"); - kwin->text.push_back(output); - snprintf(output, print_width, "Range : N/A"); - kwin->text.push_back(output); - } - else { - snprintf(output, print_width, "Min Loc : Lat %f Lon %f Alt %f Spd %f", - details_network->virtnet->min_lat, details_network->virtnet->min_lon, - metric ? details_network->virtnet->min_alt / 3.3 : details_network->virtnet->min_alt, - metric ? details_network->virtnet->min_spd * 1.6093 : details_network->virtnet->min_spd); - kwin->text.push_back(output); - snprintf(output, print_width, "Max Loc : Lat %f Lon %f Alt %f Spd %f", - details_network->virtnet->max_lat, details_network->virtnet->max_lon, - metric ? details_network->virtnet->max_alt / 3.3 : details_network->virtnet->max_alt, - metric ? details_network->virtnet->max_spd * 1.6093 : details_network->virtnet->max_spd); - kwin->text.push_back(output); - - double diagdist = GPSD::EarthDistance(details_network->virtnet->min_lat, - details_network->virtnet->min_lon, - details_network->virtnet->max_lat, - details_network->virtnet->max_lon); - - if (finite(diagdist)) { - if (metric) { - if (diagdist < 1000) - snprintf(output, print_width, "Range : %.3f meters", diagdist); - else - snprintf(output, print_width, "Range : %.3f kilometers", diagdist / 1000); - } else { - diagdist *= 3.3; - if (diagdist < 5280) - snprintf(output, print_width, "Range : %.3f feet", diagdist); - else - snprintf(output, print_width, "Range : %.3f miles", diagdist / 5280); - } - kwin->text.push_back(output); - } - } - } - if (details_network->virtnet->carrier_set & (1 << (int) carrier_80211b)) { snprintf(output, print_width, "Carrier : IEEE 802.11b"); kwin->text.push_back(output); @@ -1853,49 +1808,6 @@ dnet->ipdata.range_ip[2], dnet->ipdata.range_ip[3]); kwin->text.push_back(output); } - - if (dnet->gps_fixed != -1) { - if ((dnet->min_lat == 90) && (dnet->min_lon == 180) && - (dnet->max_lat == -90) && (dnet->max_lon == -180)) { - snprintf(output, print_width, "Min Loc : N/A"); - kwin->text.push_back(output); - snprintf(output, print_width, "Max Loc : N/A"); - kwin->text.push_back(output); - snprintf(output, print_width, "Range : N/A"); - kwin->text.push_back(output); - } - else { - snprintf(output, print_width, "Min Loc : Lat %f Lon %f Alt %f Spd %f", - dnet->min_lat, dnet->min_lon, - metric ? dnet->min_alt / 3.3 : dnet->min_alt, - metric ? dnet->min_spd * 1.6093 : dnet->min_spd); - kwin->text.push_back(output); - snprintf(output, print_width, "Max Loc : Lat %f Lon %f Alt %f Spd %f", - dnet->max_lat, dnet->max_lon, - metric ? dnet->max_alt / 3.3 : dnet->max_alt, - metric ? dnet->max_spd * 1.6093 : dnet->max_spd); - kwin->text.push_back(output); - - double diagdist = GPSD::EarthDistance(dnet->min_lat, dnet->min_lon, - dnet->max_lat, dnet->max_lon); - - if (finite(diagdist)) { - if (metric) { - if (diagdist < 1000) - snprintf(output, print_width, "Range : %f meters", diagdist); - else - snprintf(output, print_width, "Range : %f kilometers", diagdist / 1000); - } else { - diagdist *= 3.3; - if (diagdist < 5280) - snprintf(output, print_width, "Range : %f feet", diagdist); - else - snprintf(output, print_width, "Range : %f miles", diagdist / 5280); - } - kwin->text.push_back(output); - } - } - } } // Now we just use the text printer to handle the rest for us @@ -1903,184 +1815,6 @@ return TextPrinter(in_window); } -int PanelFront::GpsPrinter(void *in_window) { - kis_window *kwin = (kis_window *) in_window; - - char output[1024]; - kwin->text.clear(); - - if (details_network == NULL) { - kwin->text.push_back("The network or group being displayed"); - kwin->text.push_back("has been deleted. Please select a "); - kwin->text.push_back("different network."); - return TextPrinter(in_window); - } - - wireless_network *dnet = details_network->virtnet; - - int print_width = kwin->print_width; - if (print_width > 1024) - print_width = 1023; - - if (print_width < 32) { - kwin->text.push_back("Display not wide enough"); - return TextPrinter(in_window); - } - - if (dnet->aggregate_points == 0) { - kwin->text.push_back("No GPS data."); - return TextPrinter(in_window); - } - - float center_lat, center_lon; - - // We hijack the "selected" field as a toggle - if (kwin->selected == 1) { - center_lat = dnet->best_lat; - center_lon = dnet->best_lon; - } else { - center_lat = dnet->aggregate_lat / dnet->aggregate_points; - center_lon = dnet->aggregate_lon / dnet->aggregate_points; - } - - // Get bearing to the center - float center_angle = GPSD::CalcHeading(center_lat, center_lon, lat, lon); - - float difference_angle = heading - center_angle; - if (difference_angle < 0) - difference_angle += 360; - - double diagdist = GPSD::EarthDistance(lat, lon, center_lat, center_lon); - - // Now we know everything - where we are, where we are headed, where we SHOULD be headed - // to get to the supposed center of the network, how far it is, and the orientation on our - // compass to get to it. Time to start drawing our output. - - char compass[5][10]; - memset(compass, 0, sizeof(char) * 5 * 10); - - // | 41.12345x-74.12345 .-|-/ | - // | Bearing: / |/ \ | - // | 123.23 degrees | O | | - // | \ \ / | - // | Estimated center: '---\ | - - - // Find the orientation on our compass: - if (difference_angle > 330 || difference_angle <= 22) { - snprintf(compass[0], 10, " .-|-. "); - snprintf(compass[1], 10, " / | \\ "); - snprintf(compass[2], 10, "| O |"); - snprintf(compass[3], 10, " \\ / "); - snprintf(compass[4], 10, " '---' "); - } else if (difference_angle > 22 && difference_angle <= 66) { - snprintf(compass[0], 10, " .---/ "); - snprintf(compass[1], 10, " / / \\ "); - snprintf(compass[2], 10, "| O |"); - snprintf(compass[3], 10, " \\ / "); - snprintf(compass[4], 10, " '---' "); - } else if (difference_angle > 66 && difference_angle <= 110) { - snprintf(compass[0], 10, " .---. "); - snprintf(compass[1], 10, " / \\ "); - snprintf(compass[2], 10, "| O----"); - snprintf(compass[3], 10, " \\ / "); - snprintf(compass[4], 10, " '---' "); - } else if (difference_angle > 110 && difference_angle <= 154) { - snprintf(compass[0], 10, " .---. "); - snprintf(compass[1], 10, " / \\ "); - snprintf(compass[2], 10, "| O |"); - snprintf(compass[3], 10, " \\ \\ / "); - snprintf(compass[4], 10, " '---\\ "); - } else if (difference_angle > 154 && difference_angle <= 198) { - snprintf(compass[0], 10, " .---. "); - snprintf(compass[1], 10, " / \\ "); - snprintf(compass[2], 10, "| O |"); - snprintf(compass[3], 10, " \\ | / "); - snprintf(compass[4], 10, " '-|-' "); - } else if (difference_angle > 198 && difference_angle <= 242) { - snprintf(compass[0], 10, " .---. "); - snprintf(compass[1], 10, " / \\ "); - snprintf(compass[2], 10, "| O |"); - snprintf(compass[3], 10, " \\ / / "); - snprintf(compass[4], 10, " /---' "); - } else if (difference_angle > 242 && difference_angle <= 286) { - snprintf(compass[0], 10, " .---. "); - snprintf(compass[1], 10, " / \\ "); - snprintf(compass[2], 10, "----O |"); - snprintf(compass[3], 10, " \\ / "); - snprintf(compass[4], 10, " '---' "); - } else if (difference_angle > 286 && difference_angle <= 330) { - snprintf(compass[0], 10, " \\---. "); - snprintf(compass[1], 10, " / \\ \\ "); - snprintf(compass[2], 10, "| O |"); - snprintf(compass[3], 10, " \\ / "); - snprintf(compass[4], 10, " '---' "); - } else { - snprintf(compass[0], 10, "%f\n", difference_angle); - } - - - // - Network GPS ---------------------| - // | Current: | - // | 41.12345x-74.12345 .-|-. | - // | Bearing: / | \ | - // | 123.23 degrees | O | | - // | \ \ / | - // | Estimated center: '---\ | - // | -73.12345x43.12345 | - // | 120 feet | - // ------------------------------------ - char textfrag[23]; - - snprintf(output, print_width, "Current:"); - kwin->text.push_back(output); - - snprintf(textfrag, 23, "%.3f x %.3f", lat, lon); - snprintf(output, print_width, "%-22s%s", textfrag, compass[0]); - kwin->text.push_back(output); - - snprintf(textfrag, 23, " Bearing:"); - snprintf(output, print_width, "%-22s%s", textfrag, compass[1]); - kwin->text.push_back(output); - - snprintf(textfrag, 23, " %.2f*", heading); - snprintf(output, print_width, "%-22s%s", textfrag, compass[2]); - kwin->text.push_back(output); - - snprintf(textfrag, 23, " "); - snprintf(output, print_width, "%-22s%s", textfrag, compass[3]); - kwin->text.push_back(output); - - if (kwin->selected == 1) - snprintf(textfrag, 23, "Strongest signal:"); - else - snprintf(textfrag, 23, "Estimated Center:"); - snprintf(output, print_width, "%-22s%s", textfrag, compass[4]); - kwin->text.push_back(output); - - snprintf(textfrag, 23, "%.3f x %.3f", center_lat, center_lon); - snprintf(output, print_width, "%-22s%.2f*", textfrag, difference_angle); - kwin->text.push_back(output); - - if (metric) { - if (diagdist < 1000) - snprintf(textfrag, 23, "%.2f m", diagdist); - else - snprintf(textfrag, 23, "%.2f km", diagdist / 1000); - } else { - diagdist *= 3.3; - if (diagdist < 5280) - snprintf(textfrag, 23, "%.2f ft", diagdist); - else - snprintf(textfrag, 23, "%.2f mi", diagdist / 5280); - } - - snprintf(output, print_width, "%-22s%s", "", textfrag); - kwin->text.push_back(output); - - return TextPrinter(in_window); -} - int PanelFront::PackPrinter(void *in_window) { kis_window *kwin = (kis_window *) in_window; @@ -3049,53 +2783,6 @@ details_client->ipdata.ip[2], details_client->ipdata.ip[3]); kwin->text.push_back(output); - if (details_client->gps_fixed != -1) { - kwin->text.push_back(""); - - if ((details_client->min_lat == 90) && (details_client->min_lon == 180) && - (details_client->max_lat == -90) && (details_client->max_lon == -180)) { - snprintf(output, print_width, "Min Loc : N/A"); - kwin->text.push_back(output); - snprintf(output, print_width, "Max Loc : N/A"); - kwin->text.push_back(output); - snprintf(output, print_width, "Range : N/A"); - kwin->text.push_back(output); - } - else { - snprintf(output, print_width, "Min Loc : Lat %f Lon %f Alt %f Spd %f", - details_client->min_lat, details_client->min_lon, - metric ? details_client->min_alt / 3.3 : details_client->min_alt, - metric ? details_client->min_spd * 1.6093 : details_client->min_spd); - kwin->text.push_back(output); - snprintf(output, print_width, "Max Loc : Lat %f Lon %f Alt %f Spd %f", - details_client->max_lat, details_client->max_lon, - metric ? details_client->max_alt / 3.3 : details_client->max_alt, - metric ? details_client->max_spd * 1.6093 : details_client->max_spd); - kwin->text.push_back(output); - - double diagdist = GPSD::EarthDistance(details_client->min_lat, - details_client->min_lon, - details_client->max_lat, - details_client->max_lon); - - if (finite(diagdist)) { - if (metric) { - if (diagdist < 1000) - snprintf(output, print_width, "Range : %f meters", diagdist); - else - snprintf(output, print_width, "Range : %f kilometers", diagdist / 1000); - } else { - diagdist *= 3.3; - if (diagdist < 5280) - snprintf(output, print_width, "Range : %f feet", diagdist); - else - snprintf(output, print_width, "Range : %f miles", diagdist / 5280); - } - kwin->text.push_back(output); - } - } - kwin->text.push_back(""); - } snprintf(output, print_width, "Packets :"); kwin->text.push_back(output); diff -urN kismet.dev/panelfront_input.cc kismet.dev2/panelfront_input.cc --- kismet.dev/panelfront_input.cc 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/panelfront_input.cc 2005-08-23 01:59:25.665216904 +0200 @@ -300,16 +300,9 @@ break; case 'f': case 'F': - if (sortby != sort_auto && last_displayed.size() > 0) { - details_network = last_displayed[kwin->selected]; - SpawnWindow("Network Location", &PanelFront::GpsPrinter, &PanelFront::GpsInput, 8, 34); - } else { - WriteStatus("Cannot view network GPS info in autofit sort mode. Sort by a different method."); - } break; case 'm': case 'M': - MuteToggle(); break; case 'e': case 'E': @@ -447,7 +440,6 @@ switch(in_chr) { case 'm': case 'M': - MuteToggle(); break; case 'p': case 'P': @@ -546,33 +538,6 @@ return 1; } -int PanelFront::GpsInput(void *in_window, int in_chr) { - kis_window *kwin = (kis_window *) in_window; - - switch (in_chr) { - case 's': - case 'S': - kwin->selected = 1; - break; - case 'c': - case 'C': - kwin->selected = 0; - break; - case 'h': - case 'H': - SpawnHelp(KismetHelpGps); - break; - case 'x': - case 'X': - case 'q': - case 'Q': - return 0; - break; - } - - return 1; -} - int PanelFront::RateInput(void *in_window, int in_chr) { switch (in_chr) { case 'h': @@ -645,24 +610,6 @@ return 1; } -void PanelFront::MuteToggle() { - if (muted) { - speech = old_speech; - sound = old_sound; - muted = 0; - WriteStatus("Restoring sound"); - } else if (sound != 0 || speech != 0) { - old_speech = speech; - old_sound = sound; - sound = 0; - speech = 0; - muted = 1; - WriteStatus("Muting sound"); - } else if (sound == 0 && speech == 0) { - WriteStatus("Sound not enabled."); - } -} - int PanelFront::AlertInput(void *in_window, int in_chr) { kis_window *kwin = (kis_window *) in_window; diff -urN kismet.dev/pcapsource.cc kismet.dev2/pcapsource.cc --- kismet.dev/pcapsource.cc 2005-08-23 01:03:45.652632608 +0200 +++ kismet.dev2/pcapsource.cc 2005-08-23 01:59:25.667216600 +0200 @@ -343,11 +343,6 @@ packet->moddata = moddata; packet->modified = 0; - if (gpsd != NULL) { - gpsd->FetchLoc(&packet->gps_lat, &packet->gps_lon, &packet->gps_alt, - &packet->gps_spd, &packet->gps_heading, &packet->gps_fix); - } - if (datalink_type == DLT_PRISM_HEADER) { ret = Prism2KisPack(packet, data, moddata); } else if (datalink_type == KDLT_BSD802_11) { @@ -1146,133 +1141,6 @@ // Monitor commands #ifdef HAVE_LINUX_WIRELESS -// Cisco uses its own config file in /proc to control modes -int monitor_cisco(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) { - FILE *cisco_config; - char cisco_path[128]; - - linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm)); - (*in_if) = ifparm; - - if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) { - return -1; - } - - if (Iwconfig_Get_SSID(in_dev, in_err, ifparm->essid) < 0) - return -1; - - if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0) - return -1; - - if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0) - return -1; - - if (Ifconfig_Delta_Flags(in_dev, in_err, IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0) - return -1; - - // Try the iwpriv - if (Iwconfig_Set_IntPriv(in_dev, "setRFMonitor", 1, 0, in_err) >= 0) { - return 0; - } - - // Zero the ssid - nonfatal - Iwconfig_Set_SSID(in_dev, in_err, NULL); - - // Build the proc control path - snprintf(cisco_path, 128, "/proc/driver/aironet/%s/Config", in_dev); - - if ((cisco_config = fopen(cisco_path, "w")) == NULL) { - snprintf(in_err, STATUS_MAX, "Unable to open cisco control file '%s' %d:%s", - cisco_path, errno, strerror(errno)); - return -1; - } - - fprintf(cisco_config, "Mode: r\n"); - fprintf(cisco_config, "Mode: y\n"); - fprintf(cisco_config, "XmitPower: 1\n"); - - fclose(cisco_config); - - // Channel can't be set on cisco with these drivers. - - return 0; -} - -int unmonitor_cisco(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) { - linux_ifparm *ifparm = (linux_ifparm *) (*in_if); - int ret = -1; - - // Try the iwpriv - if (Iwconfig_Set_IntPriv(in_dev, "setRFMonitor", 0, 0, in_err) >= 0) { - // If we're the new drivers, unmonitor - if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) { - return -1; - } - - // Reset the SSID since monitor mode nukes it - if (Iwconfig_Set_SSID(in_dev, in_err, ifparm->essid) < 0) - return -1; - - if (ifparm->channel > 0) { - if (Iwconfig_Set_Channel(in_dev, ifparm->channel, in_err) < 0) - return -1; - } - - ret = 1; - } - - free(ifparm); - - return ret; -} - -// Cisco uses its own config file in /proc to control modes -// -// I was doing this with ioctls but that seems to cause lockups while -// this method doesn't. I don't think I like these drivers. -int monitor_cisco_wifix(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) { - FILE *cisco_config; - char cisco_path[128]; - vector devbits = StrTokenize(in_dev, ":"); - - if (devbits.size() < 2) { - snprintf(in_err, STATUS_MAX, "Invalid device pair '%s'. Proper device " - "for cisco_wifix is eth?:wifi?.", in_dev); - return -1; - } - - // Bring the device up, zero its ip, and set promisc - if (Ifconfig_Delta_Flags(devbits[0].c_str(), in_err, - IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0) - return -1; - if (Ifconfig_Delta_Flags(devbits[1].c_str(), in_err, - IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0) - return -1; - - // Zero the ssid, nonfatally - Iwconfig_Set_SSID(devbits[0].c_str(), in_err, NULL); - Iwconfig_Set_SSID(devbits[1].c_str(), in_err, NULL); - - // Build the proc control path - snprintf(cisco_path, 128, "/proc/driver/aironet/%s/Config", devbits[0].c_str()); - - if ((cisco_config = fopen(cisco_path, "w")) == NULL) { - snprintf(in_err, STATUS_MAX, "Unable to open cisco control file '%s' %d:%s", - cisco_path, errno, strerror(errno)); - return -1; - } - - fprintf(cisco_config, "Mode: r\n"); - fprintf(cisco_config, "Mode: y\n"); - fprintf(cisco_config, "XmitPower: 1\n"); - - fclose(cisco_config); - - // Channel can't be set on cisco with these drivers. - - return 0; -} - // Hostap uses iwpriv and iwcontrol settings to control monitor mode int monitor_hostap(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) { int ret; @@ -1421,134 +1289,6 @@ return 1; } - -// Acx100 uses the packhdr iwpriv control to set link state, rest is normal -int monitor_acx100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) { - int ret; - - // Allocate a tracking record for the interface settings and remember our - // setup - linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm)); - (*in_if) = ifparm; - - if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) { - return -1; - } - - if (Iwconfig_Get_SSID(in_dev, in_err, ifparm->essid) < 0) - return -1; - - if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0) - return -1; - - if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0) - return -1; - - // it looks like an orinoco now, apparently - if ((ret = Iwconfig_Set_IntPriv(in_dev, "monitor", 1, initch, in_err)) < 0) { - if (ret == -2) - snprintf(in_err, 1024, "Could not find 'monitor' private ioctl " - "Make sure you have the latest ACX100 development release."); - return -1; - } - - if (chancontrol_wext(in_dev, initch, in_err, NULL) < 0) - return -1; - - return 0; -} - -int unmonitor_acx100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) { - // Restore the IP settings - linux_ifparm *ifparm = (linux_ifparm *) (*in_if); - - if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) { - return -1; - } - - Iwconfig_Set_IntPriv(in_dev, "monitor", 0, ifparm->channel, in_err); - Iwconfig_Set_Mode(in_dev, in_err, ifparm->mode); - - if (Iwconfig_Set_SSID(in_dev, in_err, ifparm->essid) < 0) - return -1; - - free(ifparm); - - return 1; -} - -int monitor_admtek(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) { - // Allocate a tracking record for the interface settings and remember our - // setup - linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm)); - (*in_if) = ifparm; - - // Try to figure out the name so we know if we have fcs bytes or not - char iwname[IFNAMSIZ+1]; - if (Iwconfig_Get_Name(in_dev, in_err, iwname) < 0) - return -1; - - if (strncmp(iwname, "IEEE 802.11b", IFNAMSIZ) == 0) { - // Looks like the GPL driver, we need to adjust the fcsbytes - PcapSource *psrc = (PcapSource *) in_ext; - psrc->fcsbytes = 4; - } - - if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) { - return -1; - } - - if ((ifparm->flags & IFF_UP)) { - if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0) - return -1; - - if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0) - return -1; - - if (Iwconfig_Get_SSID(in_dev, in_err, ifparm->essid) < 0) - return -1; - - } else { - ifparm->channel = -1; - ifparm->mode = -1; - } - - int ret = monitor_wext(in_dev, initch, in_err, in_if, in_ext); - - if (ret < 0 && ret != -2) - return ret; - - if (Iwconfig_Set_SSID(in_dev, in_err, "") < 0) - return -1; - - return 0; -} - -int unmonitor_admtek(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) { - linux_ifparm *ifparm = (linux_ifparm *) (*in_if); - - if (unmonitor_wext(in_dev, initch, in_err, in_if, in_ext)) - return -1; - - if (Iwconfig_Set_SSID(in_dev, in_err, ifparm->essid) < 0) - return -1; - - return 1; -} -// vtar5k iwpriv control to set link state, rest is normal -int monitor_vtar5k(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) { - // Set the prism iwpriv control to 1 - if (Iwconfig_Set_IntPriv(in_dev, "prism", 1, 0, in_err) < 0) { - return -1; - } - - // The rest is standard wireless extensions - if (monitor_wext(in_dev, initch, in_err, in_if, in_ext) < 0) - return -1; - - return 0; -} - // Madwifi stuff uses iwpriv mode int monitor_madwifi_a(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) { // Allocate a tracking record for the interface settings and remember our @@ -1726,89 +1466,6 @@ return unmonitor_wext(in_dev, initch, in_err, in_if, in_ext); } - -int monitor_ipw2100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) { - // Allocate a tracking record for the interface settings and remember our - // setup - linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm)); - (*in_if) = ifparm; - - if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) { - return -1; - } - - if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0) - return -1; - - if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0) - return -1; - - // Call the normal monitor mode - return (monitor_wext(in_dev, initch, in_err, in_if, in_ext)); -} - -int unmonitor_ipw2100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) { - // Restore initial monitor header - // linux_ifparm *ifparm = (linux_ifparm *) (*in_if); - - linux_ifparm *ifparm = (linux_ifparm *) (*in_if); - - if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) { - return -1; - } - - if (Iwconfig_Set_Mode(in_dev, in_err, ifparm->mode) < 0) - return -1; - - free(ifparm); - - return 1; -} - -int monitor_ipw2200(const char *in_dev, int initch, char *in_err, - void **in_if, void *in_ext) { - // Allocate a tracking record for the interface settings and remember our - // setup - linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm)); - (*in_if) = ifparm; - - if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) { - return -1; - } - - if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0) - return -1; - - if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0) - return -1; - - // Call the normal monitor mode - return (monitor_wext(in_dev, initch, in_err, in_if, in_ext)); -} - -int unmonitor_ipw2200(const char *in_dev, int initch, char *in_err, - void **in_if, void *in_ext) { - // Restore initial monitor header - // linux_ifparm *ifparm = (linux_ifparm *) (*in_if); - - linux_ifparm *ifparm = (linux_ifparm *) (*in_if); - - if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) { - return -1; - } - - if (Iwconfig_Set_Mode(in_dev, in_err, ifparm->mode) < 0) - return -1; - - // James says this wants to be set to channel 0 for proper scanning operation - if (Iwconfig_Set_Channel(in_dev, 0, in_err) < 0) - return -1; - - free(ifparm); - - return 1; -} - // "standard" wireless extension monitor mode int monitor_wext(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) { int mode; @@ -1870,108 +1527,6 @@ #endif #ifdef SYS_LINUX -// wlan-ng modern standard -int monitor_wlanng(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) { - // I really didn't want to do this... - char cmdline[2048]; - - // Sanitize the device just to be safe. The ifconfig should fail if - // the device is invalid, but why take risks - for (unsigned int x = 0; x < strlen(in_dev); x++) { - if (!isalnum(in_dev[x])) { - snprintf(in_err, STATUS_MAX, "Invalid device '%s'", in_dev); - return -1; - } - } - - if (Ifconfig_Delta_Flags(in_dev, in_err, IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0) - return -1; - - // Enable the interface - snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_ifstate ifstate=enable >/dev/null 2>/dev/null", in_dev); - if (RunSysCmd(cmdline) < 0) { - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline); - return -1; - } - - // Turn off WEP - snprintf(cmdline, 2048, "wlanctl-ng %s dot11req_mibset " - "mibattribute=dot11PrivacyInvoked=false >/dev/null 2>/dev/null", in_dev); - if (RunSysCmd(cmdline) < 0) { - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline); - return -1; - } - - // Don't exclude packets - snprintf(cmdline, 2048, "wlanctl-ng %s dot11req_mibset " - "mibattribute=dot11ExcludeUnencrypted=false >/dev/null 2>/dev/null", in_dev); - if (RunSysCmd(cmdline) < 0) { - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline); - return -1; - } - - // Turn on rfmon on the initial channel - snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_wlansniff channel=%d " - "enable=true prismheader=true >/dev/null 2>/dev/null", in_dev, initch); - if (RunSysCmd(cmdline) < 0) { - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline); - return -1; - } - - return 0; -} - -// wlan-ng avs -int monitor_wlanng_avs(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) { - // I really didn't want to do this... - char cmdline[2048]; - - // Sanitize the device just to be safe. The ifconfig should fail if - // the device is invalid, but why take risks - for (unsigned int x = 0; x < strlen(in_dev); x++) { - if (!isalnum(in_dev[x])) { - snprintf(in_err, STATUS_MAX, "Invalid device '%s'", in_dev); - return -1; - } - } - - if (Ifconfig_Delta_Flags(in_dev, in_err, IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0) - return -1; - - // Enable the interface - snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_ifstate ifstate=enable >/dev/null 2>/dev/null", in_dev); - if (RunSysCmd(cmdline) < 0) { - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline); - return -1; - } - - // Turn off WEP - snprintf(cmdline, 2048, "wlanctl-ng %s dot11req_mibset " - "mibattribute=dot11PrivacyInvoked=false >/dev/null 2>/dev/null", in_dev); - if (RunSysCmd(cmdline) < 0) { - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline); - return -1; - } - - // Don't exclude packets - snprintf(cmdline, 2048, "wlanctl-ng %s dot11req_mibset " - "mibattribute=dot11ExcludeUnencrypted=false >/dev/null 2>/dev/null", in_dev); - if (RunSysCmd(cmdline) < 0) { - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline); - return -1; - } - - // Turn on rfmon on the initial channel - snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_wlansniff channel=%d prismheader=false " - "wlanheader=true stripfcs=false keepwepflags=false enable=true >/dev/null 2>/dev/null", in_dev, initch); - if (RunSysCmd(cmdline) < 0) { - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline); - return -1; - } - - return 0; -} - int monitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) { char cmdline[2048]; @@ -1981,7 +1536,7 @@ snprintf(in_err, 1024, "Unable to set mode using 'iwpriv %s set_monitor 1'. " "Some custom firmware images require you to specify the origial " "device and a new dynamic device and use the iwconfig controls. " - "see the README for how to configure your capture source."); + "see the README for how to configure your capture source.", in_dev); return -1; } @@ -1998,7 +1553,7 @@ snprintf(in_err, 1024, "Unable to set mode using 'iwpriv %s set_monitor 0'. " "Some custom firmware images require you to specify the origial " "device and a new dynamic device and use the iwconfig controls. " - "see the README for how to configure your capture source."); + "see the README for how to configure your capture source.", in_dev); return -1; } @@ -2244,75 +1799,6 @@ return 0; } -int chancontrol_ipw2100(const char *in_dev, int in_ch, char *in_err, void *in_ext) { - // Introduce a slight delay to let the driver settle, a la orinoco. I don't - // like doing this at all since it introduces hiccups into the channel control - // process, but.... - - int ret = 0; - - ret = chancontrol_wext(in_dev, in_ch, in_err, in_ext); - usleep(5000); - - return ret; -} - -int chancontrol_ipw2200(const char *in_dev, int in_ch, char *in_err, void *in_ext) { - // Lets see if this really needs the channel change delay like the 2100 did - int ret = 0; - - ret = chancontrol_wext(in_dev, in_ch, in_err, in_ext); - // Drop a tiny sleep in here to let the channel set settle, otherwise we - // run the risk of the card freaking out - usleep(7000); - - return ret; -} - -#endif - -#ifdef SYS_LINUX -int chancontrol_wlanng(const char *in_dev, int in_ch, char *in_err, void *in_ext) { - // I really didn't want to do this... - char cmdline[2048]; - - // Turn on rfmon on the initial channel - snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_wlansniff channel=%d enable=true " - "prismheader=true >/dev/null 2>&1", in_dev, in_ch); - if (RunSysCmd(cmdline) < 0) { - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline); - return -1; - } - - if (in_ext != NULL) { - PcapSourceWlanng *src = (PcapSourceWlanng *) in_ext; - src->last_channel = in_ch; - } - - return 0; -} - -int chancontrol_wlanng_avs(const char *in_dev, int in_ch, char *in_err, void *in_ext) { - // I really didn't want to do this... - char cmdline[2048]; - - // Turn on rfmon on the initial channel - snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_wlansniff channel=%d " - "prismheader=false wlanheader=true stripfcs=false keepwepflags=false " - "enable=true >/dev/null 2>&1", in_dev, in_ch); - - if (RunSysCmd(cmdline) < 0) { - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline); - return -1; - } - - if (in_ext != NULL) { - PcapSourceWlanng *src = (PcapSourceWlanng *) in_ext; - src->last_channel = in_ch; - } - - return 0; -} #endif #ifdef SYS_OPENBSD diff -urN kismet.dev/tcpstreamer.cc kismet.dev2/tcpstreamer.cc --- kismet.dev/tcpstreamer.cc 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/tcpstreamer.cc 2005-08-23 01:59:25.668216448 +0200 @@ -30,8 +30,6 @@ serv_fd = 0; max_fd = 0; - - gpsd = NULL; } TcpStreamer::~TcpStreamer() @@ -287,10 +285,6 @@ hdr.frame_len = (uint32_t) htonl(sizeof(struct stream_version_packet)); vpkt.drone_version = (uint16_t) htons(STREAM_DRONE_VERSION); - if (gpsd != NULL) - vpkt.gps_enabled = 1; - else - vpkt.gps_enabled = 0; if (!FD_ISSET(in_fd, &client_fds)) return -1; diff -urN kismet.dev/tcpstreamer.h kismet.dev2/tcpstreamer.h --- kismet.dev/tcpstreamer.h 2005-08-16 03:22:51.000000000 +0200 +++ kismet.dev2/tcpstreamer.h 2005-08-23 01:59:25.669216296 +0200 @@ -42,7 +42,6 @@ #include "ringbuf.h" #include "packet.h" #include "packetstream.h" -#include "gpsd.h" // Global in kismet_drone.cc extern int silent; @@ -76,9 +75,6 @@ int FetchDescriptor() { return serv_fd; } - // Register the GPS server for us to use - void AddGpstracker(GPSD *in_gpsd) { gpsd = in_gpsd; } - void Kill(int in_fd); int Poll(fd_set& in_rset, fd_set& in_wset); @@ -124,8 +120,6 @@ fd_set client_fds; unsigned int max_fd; - - GPSD *gpsd; }; #endif