From e720b7b61023945d5699639fcba98d91bfb7237b Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 23 Aug 2005 00:06:14 +0000 Subject: update kismet package and fix broken ssid handling SVN-Revision: 1728 --- openwrt/package/kismet/Makefile | 4 +- openwrt/package/kismet/patches/100-cleanup.patch | 3958 -------------------- .../package/kismet/patches/100-wrt54g_source.patch | 189 + openwrt/package/kismet/patches/120-cleanup.patch | 3113 +++++++++++++++ .../package/kismet/patches/120-wrt54g_source.patch | 181 - 5 files changed, 3304 insertions(+), 4141 deletions(-) delete mode 100644 openwrt/package/kismet/patches/100-cleanup.patch create mode 100644 openwrt/package/kismet/patches/100-wrt54g_source.patch create mode 100644 openwrt/package/kismet/patches/120-cleanup.patch delete mode 100644 openwrt/package/kismet/patches/120-wrt54g_source.patch (limited to 'openwrt/package/kismet') diff --git a/openwrt/package/kismet/Makefile b/openwrt/package/kismet/Makefile index 0cd3299..dab9e02 100644 --- a/openwrt/package/kismet/Makefile +++ b/openwrt/package/kismet/Makefile @@ -3,9 +3,9 @@ include $(TOPDIR)/rules.mk PKG_NAME:=kismet -PKG_VERSION:=2005-07-R1a +PKG_VERSION:=2005-08-R1 PKG_RELEASE:=1 -PKG_MD5SUM:=9f59bce7d6cc8504ff602f150e578ab5 +PKG_MD5SUM:=17edb7688e04dd28028d5268a77d0ce7 PKG_SOURCE_URL:=http://www.kismetwireless.net/code PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz diff --git a/openwrt/package/kismet/patches/100-cleanup.patch b/openwrt/package/kismet/patches/100-cleanup.patch deleted file mode 100644 index d018fdf..0000000 --- a/openwrt/package/kismet/patches/100-cleanup.patch +++ /dev/null @@ -1,3958 +0,0 @@ -diff -urN kismet.old/Makefile.in kismet.dev/Makefile.in ---- kismet.old/Makefile.in 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/Makefile.in 2005-08-15 00:16:38.100369736 +0200 -@@ -39,26 +39,26 @@ - 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 \ -+ dronesource.o packetsourcetracker.o kis_packsources.o \ -+ wtaplocaldump.o fifodump.o \ -+ manuf.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 wtapfilesource.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 \ - 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.old/cursesfront.cc kismet.dev/cursesfront.cc ---- kismet.old/cursesfront.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/cursesfront.cc 2005-08-15 01:08:49.461799648 +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.old/dronesource.cc kismet.dev/dronesource.cc ---- kismet.old/dronesource.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/dronesource.cc 2005-08-15 00:06:41.235746912 +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.old/dronesource.h kismet.dev/dronesource.h ---- kismet.old/dronesource.h 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/dronesource.h 2005-08-15 00:06:56.589412800 +0200 -@@ -80,8 +80,6 @@ - - unsigned int resyncing; - -- // Is the drone pushing GPS data to us? -- int gps_enabled; - }; - - // Nothing but a registrant for us -diff -urN kismet.old/frontend.cc kismet.dev/frontend.cc ---- kismet.old/frontend.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/frontend.cc 2005-08-15 01:07:50.236803216 +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.old/kis_packsources.cc kismet.dev/kis_packsources.cc ---- kismet.old/kis_packsources.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/kis_packsources.cc 2005-08-15 00:15:11.107594648 +0200 -@@ -60,13 +60,6 @@ - - #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); - sourcetracker->RegisterPacketsource("hostap", 1, "IEEE80211b", 6, - pcapsource_wext_registrant, - monitor_hostap, unmonitor_hostap, -@@ -79,6 +72,14 @@ - pcapsource_wext_registrant, - monitor_orinoco, unmonitor_orinoco, - chancontrol_orinoco, 1); -+#if 0 -+ 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); - sourcetracker->RegisterPacketsource("acx100", 1, "IEEE80211b", 6, - pcapsource_wextfcs_registrant, - monitor_acx100, unmonitor_acx100, -@@ -94,7 +95,13 @@ - pcapsource_wext_registrant, - monitor_wext, unmonitor_wext, - chancontrol_wext, 1); -- -+#else -+ REG_EMPTY_CARD(sourcetracker, "cisco"); -+ REG_EMPTY_CARD(sourcetracker, "cisco_wifix"); -+ REG_EMPTY_CARD(sourcetracker, "acx100"); -+ REG_EMPTY_CARD(sourcetracker, "vtar5k"); -+#endif -+ - sourcetracker->RegisterPacketsource("madwifi_a", 1, "IEEE80211a", 36, - pcapsource_wextfcs_registrant, - monitor_madwifi_a, unmonitor_madwifi, -@@ -121,11 +128,12 @@ - monitor_prism54g, unmonitor_prism54g, - chancontrol_prism54g, 1); - -+#if 0 - 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, -@@ -153,6 +161,16 @@ - pcapsource_wext_registrant, - monitor_wext, unmonitor_wext, - chancontrol_wext, 1); -+#else -+ 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"); -+#endif - - #else - // Register the linuxwireless pcap stuff as null -@@ -183,6 +201,7 @@ - #endif - - #if defined(HAVE_LIBPCAP) && defined(SYS_LINUX) -+#if 0 - sourcetracker->RegisterPacketsource("wlanng", 1, "IEEE80211b", 6, - pcapsource_wlanng_registrant, - monitor_wlanng, NULL, chancontrol_wlanng, 1); -@@ -190,6 +209,10 @@ - pcapsource_wlanng_registrant, - monitor_wlanng_avs, NULL, - chancontrol_wlanng_avs, 1); -+#else -+ REG_EMPTY_CARD(sourcetracker, "wlanng"); -+ REG_EMPTY_CARD(sourcetracker, "wlanng_avs"); -+#endif - sourcetracker->RegisterPacketsource("wrt54g", 1, "na", 0, - pcapsource_wrt54g_registrant, - monitor_wrt54g, NULL, NULL, 0); -@@ -199,7 +222,8 @@ - REG_EMPTY_CARD(sourcetracker, "wrt54g"); - #endif - --#if defined(SYS_LINUX) && defined(HAVE_LINUX_NETLINK) -+//#if defined(SYS_LINUX) && defined(HAVE_LINUX_NETLINK) -+#if 0 - sourcetracker->RegisterPacketsource("wlanng_legacy", 1, "IEEE80211b", 6, - prism2source_registrant, - monitor_wlanng_legacy, NULL, -@@ -240,7 +264,8 @@ - REG_EMPTY_CARD(sourcetracker, "radiotap_bsd_b"); - #endif - --#if defined(HAVE_LIBWIRETAP) -+// #if defined(HAVE_LIBWIRETAP) -+#if 0 - sourcetracker->RegisterPacketsource("wtapfile", 0, "na", 0, - wtapfilesource_registrant, - NULL, NULL, NULL, 0); -@@ -248,7 +273,8 @@ - REG_EMPTY_CARD(sourcetracker, "wtapfile"); - #endif - --#if defined(HAVE_WSP100) -+#if 0 -+//#if defined(HAVE_WSP100) - sourcetracker->RegisterPacketsource("wsp100", 0, "IEEE80211b", 6, - wsp100source_registrant, - monitor_wsp100, NULL, chancontrol_wsp100, 0); -@@ -256,7 +282,9 @@ - REG_EMPTY_CARD(sourcetracker, "wsp100"); - #endif - --#if defined(HAVE_VIHAHEADERS) -+ -+#if 0 -+//#if defined(HAVE_VIHAHEADERS) - sourcetracker->RegisterPacketsource("viha", 1, "IEEE80211b", 6, - vihasource_registrant, - NULL, NULL, chancontrol_viha, 0); -diff -urN kismet.old/kis_packsources.h kismet.dev/kis_packsources.h ---- kismet.old/kis_packsources.h 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/kis_packsources.h 2005-08-15 00:15:54.831947536 +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.old/kismet_client.cc kismet.dev/kismet_client.cc ---- kismet.old/kismet_client.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/kismet_client.cc 2005-08-15 00:20:21.533402752 +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,14 @@ - } - - 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 +568,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.old/kismet_drone.cc kismet.dev/kismet_drone.cc ---- kismet.old/kismet_drone.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/kismet_drone.cc 2005-08-15 01:04:06.114874928 +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,7 @@ - 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.old/kismet_server.cc kismet.dev/kismet_server.cc ---- kismet.old/kismet_server.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/kismet_server.cc 2005-08-15 01:03:15.103629816 +0200 -@@ -37,29 +37,19 @@ - #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 "dumpfile.h" --#include "wtapdump.h" - #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" -@@ -73,13 +62,13 @@ - - // Some globals for command line options - char *configfile = NULL; --int no_log = 0, noise_log = 0, data_log = 0, net_log = 0, crypt_log = 0, cisco_log = 0, -- gps_log = -1, gps_enable = 1, csv_log = 0, xml_log = 0, ssid_cloak_track = 0, -- ip_track = 0, waypoint = 0, fifo = 0, corrupt_log = 0; -+int no_log = 0, noise_log = 0, data_log = 0, net_log = 0, cisco_log = 0, -+ csv_log = 0, xml_log = 0, ssid_cloak_track = 0, -+ ip_track = 0, fifo = 0, corrupt_log = 0; - string logname, dumplogfile, netlogfile, cryptlogfile, ciscologfile, -- gpslogfile, csvlogfile, xmllogfile, ssidtrackfile, configdir, iptrackfile, -- waypointfile, fifofile; --FILE *ssid_file = NULL, *ip_file = NULL, *waypoint_file = NULL, *pid_file = NULL; -+ csvlogfile, xmllogfile, ssidtrackfile, configdir, iptrackfile, -+ fifofile; -+FILE *ssid_file = NULL, *ip_file = NULL, *pid_file = NULL; - - DumpFile *dumpfile, *cryptfile; - int packnum = 0, localdropnum = 0; -@@ -89,17 +78,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]; -@@ -113,16 +93,13 @@ - 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; - - // Past alerts - unsigned int max_alerts = 50; - - // Reference numbers for all of our builtin protocols --int kismet_ref = -1, network_ref = -1, client_ref = -1, gps_ref = -1, -+int kismet_ref = -1, network_ref = -1, client_ref = -1, - time_ref = -1, error_ref = -1, info_ref = -1, cisco_ref = -1, terminate_ref = -1, - remove_ref = -1, capability_ref = -1, protocols_ref = -1, status_ref = -1, - alert_ref = -1, packet_ref = -1, string_ref = -1, ack_ref = -1, wepkey_ref = -1, -@@ -169,24 +146,12 @@ - const char *logtypes = NULL, *dumptype = NULL; - int limit_logs = 0; - --char gpshost[1024]; --int gpsport = -1; -- - string allowed_hosts; - string bind_addr; - 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; -@@ -336,28 +301,6 @@ - // delete dumpfile; - } - -- if (crypt_log) { -- cryptfile->CloseDump(); -- -- if (cryptfile->FetchDumped() == 0) { -- fprintf(stderr, "Didn't see any weak encryption packets, unlinking weak file\n"); -- unlink(cryptlogfile.c_str()); -- } -- -- // 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 +311,11 @@ - 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 +364,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,82 +484,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 - int NetWriteEvent(Timetracker::timer_event *evt, void *parm) { -@@ -884,13 +503,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 +771,10 @@ - " -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,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." -@@ -1288,18 +899,6 @@ - } - - -- 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("metric") == "true") { - fprintf(stderr, "Using metric measurements.\n"); - metric = 1; -@@ -1379,16 +971,6 @@ - - } - -- if (strstr(logtypes, "weak")) { -- crypt_log = 1; -- -- if (conf->FetchOpt("logtemplate") == "") { -- fprintf(stderr, "FATAL: Logging (weak packets) enabled but no logtemplate given in config.\n"); -- ErrorShutdown(); -- } -- -- } -- - if (strstr(logtypes, "csv")) { - csv_log = 1; - -@@ -1418,25 +1000,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") != "") { -@@ -1557,72 +1120,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"); -@@ -1642,45 +1139,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; - -@@ -1706,7 +1164,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, -@@ -1812,14 +1270,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; -@@ -1839,13 +1289,6 @@ - continue; - } - -- if (crypt_log) { -- cryptlogfile = conf->ExpandLogPath(conf->FetchOpt("logtemplate"), logname, "weak", run_num); -- -- if (cryptlogfile == "") -- continue; -- } -- - if (csv_log) { - csvlogfile = conf->ExpandLogPath(conf->FetchOpt("logtemplate"), logname, "csv", run_num); - -@@ -1867,13 +1310,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; -@@ -1896,15 +1332,9 @@ - if (xml_log) - fprintf(stderr, "Logging networks in XML format to %s\n", xmllogfile.c_str()); - -- if (crypt_log) -- fprintf(stderr, "Logging cryptographically weak packets to %s\n", cryptlogfile.c_str()); -- - 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()); - -@@ -2051,7 +1481,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'}, -@@ -2132,18 +1561,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) { -@@ -2165,7 +1582,6 @@ - break; - case 'q': - // Quiet -- sound = 0; - break; - case 'v': - // version -@@ -2319,39 +1735,7 @@ - // 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 -@@ -2518,13 +1902,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) { -@@ -2567,18 +1944,6 @@ - fclose(testfile); - } - -- // Crypt log stays open like the dump log for continual writing -- if (crypt_log) { -- cryptfile = new AirsnortDumpFile; -- -- if (cryptfile->OpenDump(cryptlogfile.c_str()) < 0) { -- fprintf(stderr, "FATAL: %s\n", cryptfile->FetchError()); -- ErrorShutdown(); -- } -- -- fprintf(stderr, "Crypt file format: %s\n", cryptfile->FetchType()); -- -- } - - snprintf(status, STATUS_MAX, "Kismet %s.%s.%s (%s)", - VERSION_MAJOR, VERSION_MINOR, VERSION_TINY, servername); -@@ -2595,15 +1960,13 @@ - } - */ - -- if (data_log || net_log || crypt_log) { -- snprintf(status, STATUS_MAX, "Logging%s%s%s%s%s%s%s", -+ if (data_log || net_log) { -+ snprintf(status, STATUS_MAX, "Logging%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."); -@@ -2621,23 +1984,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)); -@@ -2678,8 +2024,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, -@@ -2734,14 +2078,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) -@@ -2765,7 +2104,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; - - -@@ -2914,54 +2252,12 @@ - - } - -- 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; -@@ -3070,10 +2366,6 @@ - } - } - -- if (crypt_log) { -- cryptfile->DumpPacket(&info, &packet); -- } -- - } else if (ret < 0) { - // Fail on error - snprintf(status, STATUS_MAX, "FATAL: %s", -diff -urN kismet.old/kismet_server.h kismet.dev/kismet_server.h ---- kismet.old/kismet_server.h 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/kismet_server.h 2005-08-15 00:29:19.088681928 +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.old/packet.cc kismet.dev/packet.cc ---- kismet.old/packet.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/packet.cc 2005-08-15 00:30:26.190480904 +0200 -@@ -257,14 +257,6 @@ - ret_packinfo->encoding = packet->encoding; - ret_packinfo->datarate = packet->datarate; - -- // Assign the location info -- ret_packinfo->gps_lat = packet->gps_lat; -- ret_packinfo->gps_lon = packet->gps_lon; -- ret_packinfo->gps_alt = packet->gps_alt; -- ret_packinfo->gps_spd = packet->gps_spd; -- ret_packinfo->gps_heading = packet->gps_heading; -- ret_packinfo->gps_fix = packet->gps_fix; -- - // Assign a hardware channel if we're on an 802.11a carrier since the beacon doesn't - // carry that tag - if (packet->carrier == carrier_80211a) -diff -urN kismet.old/packetracker.cc kismet.dev/packetracker.cc ---- kismet.old/packetracker.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/packetracker.cc 2005-08-15 00:58:01.441313736 +0200 -@@ -255,19 +255,6 @@ - - client->metric = net->metric; - -- if (info->gps_fix >= 2) { -- client->gps_fixed = info->gps_fix; -- client->min_lat = client->max_lat = info->gps_lat; -- client->min_lon = client->max_lon = info->gps_lon; -- client->min_alt = client->max_alt = info->gps_alt; -- client->min_spd = client->max_spd = info->gps_spd; -- -- client->aggregate_lat = info->gps_lat; -- client->aggregate_lon = info->gps_lon; -- client->aggregate_alt = info->gps_alt; -- client->aggregate_points = 1; -- } -- - // Classify the client. We'll call no-distrib packets (lucent) - // inter-distrib clients since it's not an end-user bridge into the - // network, it's a lucent AP talking to another one. -@@ -410,19 +397,6 @@ - KisLocalStatus(status); - } - -- if (info->gps_fix >= 2) { -- net->gps_fixed = info->gps_fix; -- net->min_lat = net->max_lat = info->gps_lat; -- net->min_lon = net->max_lon = info->gps_lon; -- net->min_alt = net->max_alt = info->gps_alt; -- net->min_spd = net->max_spd = info->gps_spd; -- -- net->aggregate_lat = info->gps_lat; -- net->aggregate_lon = info->gps_lon; -- net->aggregate_alt = info->gps_alt; -- net->aggregate_points = 1; -- } -- - // Find out what we can from what we know now... - if (net->type != network_adhoc && net->type != network_probe) { - net->manuf_ref = MatchBestManuf(ap_manuf_map, net->bssid, net->ssid, -@@ -463,11 +437,6 @@ - - if (info->signal > net->best_signal || net->best_signal == 0) { - net->best_signal = info->signal; -- if (info->gps_fix >= 2) { -- net->best_lat = info->gps_lat; -- net->best_lon = info->gps_lon; -- net->best_alt = info->gps_alt; -- } - } - - net->noise = info->noise; -@@ -477,41 +446,6 @@ - net->best_noise = info->noise; - } - -- if (info->gps_fix >= 2) { -- // Don't aggregate slow-moving packets to prevent average "pulling".. -- if (info->gps_spd <= 0.3) { -- net->aggregate_lat += info->gps_lat; -- net->aggregate_lon += info->gps_lon; -- net->aggregate_alt += info->gps_alt; -- net->aggregate_points += 1; -- } -- -- net->gps_fixed = info->gps_fix; -- -- if (info->gps_lat < net->min_lat || net->min_lat == -90) -- net->min_lat = info->gps_lat; -- if (info->gps_lat > net->max_lat || net->max_lat == 90) -- net->max_lat = info->gps_lat; -- -- if (info->gps_lon < net->min_lon || net->min_lon == -180) -- net->min_lon = info->gps_lon; -- if (info->gps_lon > net->max_lon || net->max_lon == 180) -- net->max_lon = info->gps_lon; -- -- if (info->gps_alt < net->min_alt || net->min_alt == 0) -- net->min_alt = info->gps_alt; -- if (info->gps_alt > net->max_alt || net->max_alt == 0) -- net->max_alt = info->gps_alt; -- -- if (info->gps_spd < net->min_spd || net->min_spd == 0) -- net->min_spd = info->gps_spd; -- if (info->gps_spd > net->max_spd || net->max_spd == 0) -- net->max_spd = info->gps_spd; -- -- } else { -- net->gps_fixed = 0; -- } -- - // Handle the IV sets. 4-byte compare IV is fine - if (info->encrypted) { - map::iterator ivitr = net->iv_map.find(info->ivset); -@@ -834,50 +768,11 @@ - } - } - -- if (info->gps_fix >= 2) { -- if (info->gps_spd <= 0.3) { -- client->aggregate_lat += info->gps_lat; -- client->aggregate_lon += info->gps_lon; -- client->aggregate_alt += info->gps_alt; -- client->aggregate_points += 1; -- } -- -- client->gps_fixed = info->gps_fix; -- -- if (info->gps_lat < client->min_lat || client->min_lat == -90) -- client->min_lat = info->gps_lat; -- if (info->gps_lat > client->max_lat || client->max_lat == 90) -- client->max_lat = info->gps_lat; -- -- if (info->gps_lon < client->min_lon || client->min_lon == -180) -- client->min_lon = info->gps_lon; -- if (info->gps_lon > client->max_lon == 180) -- client->max_lon = info->gps_lon; -- -- if (info->gps_alt < client->min_alt || client->min_alt == 0) -- client->min_alt = info->gps_alt; -- if (info->gps_alt > client->max_alt || client->min_alt == 0) -- client->max_alt = info->gps_alt; -- -- if (info->gps_spd < client->min_spd || client->min_spd == 0) -- client->min_spd = info->gps_spd; -- if (info->gps_spd > client->max_spd || client->max_spd == 0) -- client->max_spd = info->gps_spd; -- -- } else { -- client->gps_fixed = 0; -- } -- - if (info->signal >= 0) { - client->signal = info->signal; - - if (info->signal > client->best_signal || client->best_signal == 0) { - client->best_signal = info->signal; -- if (info->gps_fix >= 2) { -- client->best_lat = info->gps_lat; -- client->best_lon = info->gps_lon; -- client->best_alt = info->gps_alt; -- } - } - - net->noise = info->noise; -@@ -1416,17 +1311,6 @@ - (net->llc_packets + net->data_packets), - ft, lt); - -- if (net->gps_fixed != -1) -- fprintf(netfile, -- " Min Loc: Lat %f Lon %f Alt %f Spd %f\n" -- " Max Loc: Lat %f Lon %f Alt %f Spd %f\n", -- net->min_lat, net->min_lon, -- metric ? net->min_alt / 3.3 : net->min_alt, -- metric ? net->min_spd * 1.6093 : net->min_spd, -- net->max_lat, net->max_lon, -- metric ? net->max_alt / 3.3 : net->max_alt, -- metric ? net->max_spd * 1.6093 : net->max_spd); -- - if (net->ipdata.atype == address_dhcp) - fprintf(netfile, " Address found via DHCP %d.%d.%d.%d \n", - net->ipdata.range_ip[0], net->ipdata.range_ip[1], -@@ -1634,8 +1518,7 @@ - - fprintf(netfile, "Network;NetType;ESSID;BSSID;Info;Channel;Cloaked;Encryption;Decrypted;MaxRate;MaxSeenRate;Beacon;" - "LLC;Data;Crypt;Weak;Total;Carrier;Encoding;FirstTime;LastTime;BestQuality;BestSignal;BestNoise;" -- "GPSMinLat;GPSMinLon;GPSMinAlt;GPSMinSpd;GPSMaxLat;GPSMaxLon;GPSMaxAlt;GPSMaxSpd;" -- "GPSBestLat;GPSBestLon;GPSBestAlt;DataSize;IPType;IP;\n\r"); -+ "DataSize;IPType;IP;\n\r"); - - stable_sort(network_list.begin(), network_list.end(), SortFirstTimeLT()); - -@@ -1819,9 +1702,6 @@ - "%d;%d;%d;%d;%d;" - "%s;%s;%s;%s;" - "%d;%d;%d;" -- "%f;%f;%f;%f;" -- "%f;%f;%f;%f;" -- "%f;%f;%f;" - "%ld;%s;" - "%hu.%hu.%hu.%hu;\n\r", - netnum, type, SanitizeCSV(net->ssid).c_str(), -@@ -1835,9 +1715,6 @@ - (net->llc_packets + net->data_packets), - carrier.c_str(), encoding.c_str(), ft, lt, - net->best_quality, net->best_signal, net->best_noise, -- net->min_lat, net->min_lon, net->min_alt, net->min_spd, -- net->max_lat, net->max_lon, net->max_alt, net->max_spd, -- net->best_lat, net->best_lon, net->best_alt, - net->datasize, iptype.c_str(), - net->ipdata.range_ip[0], net->ipdata.range_ip[1], - net->ipdata.range_ip[2], net->ipdata.range_ip[3]); -@@ -2056,23 +1933,6 @@ - - fprintf(netfile, " %ld\n", net->datasize); - -- if (net->gps_fixed != -1) { -- fprintf(netfile, " \n", metric ? "metric" : "english"); -- fprintf(netfile, " %f\n", net->min_lat); -- fprintf(netfile, " %f\n", net->min_lon); -- fprintf(netfile, " %f\n", -- metric ? net->min_alt / 3.3 : net->min_alt); -- fprintf(netfile, " %f\n", -- metric ? net->min_spd * 1.6093 : net->min_spd); -- fprintf(netfile, " %f\n", net->max_lat); -- fprintf(netfile, " %f\n", net->max_lon); -- fprintf(netfile, " %f\n", -- metric ? net->max_alt / 3.3 : net->max_alt); -- fprintf(netfile, " %f\n", -- metric ? net->max_spd * 1.6093 : net->max_spd); -- fprintf(netfile, " \n"); -- } -- - if (net->ipdata.atype > address_factory) { - char *addrtype; - switch (net->ipdata.atype) { -@@ -2171,23 +2031,6 @@ - if (cli->crypt_set & crypt_pptp) - fprintf(netfile, " PPTP\n"); - -- if (cli->gps_fixed != -1) { -- fprintf(netfile, " \n", metric ? "metric" : "english"); -- fprintf(netfile, " %f\n", cli->min_lat); -- fprintf(netfile, " %f\n", cli->min_lon); -- fprintf(netfile, " %f\n", -- metric ? cli->min_alt / 3.3 : cli->min_alt); -- fprintf(netfile, " %f\n", -- metric ? cli->min_spd * 1.6093 : cli->min_spd); -- fprintf(netfile, " %f\n", cli->max_lat); -- fprintf(netfile, " %f\n", cli->max_lon); -- fprintf(netfile, " %f\n", -- metric ? cli->max_alt / 3.3 : cli->max_alt); -- fprintf(netfile, " %f\n", -- metric ? cli->max_spd * 1.6093 : cli->max_spd); -- fprintf(netfile, " \n"); -- } -- - fprintf(netfile, " %ld\n", cli->datasize); - fprintf(netfile, " %2.1f\n", cli->maxrate); - fprintf(netfile, " %ld\n", (long) cli->maxseenrate * 100); -@@ -2437,23 +2280,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", net->bssid.Mac2String().c_str(), lat, lon); -- } -- -- fflush(in_file); -- -- return 1; --} -diff -urN kismet.old/packetracker.h kismet.dev/packetracker.h ---- kismet.old/packetracker.h 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/packetracker.h 2005-08-15 00:32:27.876981744 +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.old/packetsourcetracker.cc kismet.dev/packetsourcetracker.cc ---- kismet.old/packetsourcetracker.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/packetsourcetracker.cc 2005-08-15 00:33:14.628874376 +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.old/packetsourcetracker.h kismet.dev/packetsourcetracker.h ---- kismet.old/packetsourcetracker.h 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/packetsourcetracker.h 2005-08-15 00:33:28.304795320 +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.old/packetstream.h kismet.dev/packetstream.h ---- kismet.old/packetstream.h 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/packetstream.h 2005-08-15 00:33:45.954112216 +0200 -@@ -45,7 +45,6 @@ - - typedef struct stream_version_packet { - uint16_t drone_version; -- uint8_t gps_enabled; - }; - - typedef struct stream_packet_header { -@@ -64,18 +63,6 @@ - uint8_t encoding __attribute__ ((packed)); - uint32_t datarate __attribute__ ((packed)); - -- int16_t gps_lat __attribute__ ((packed)); -- int64_t gps_lat_mant __attribute__ ((packed)); -- int16_t gps_lon __attribute__ ((packed)); -- int64_t gps_lon_mant __attribute__ ((packed)); -- int16_t gps_alt __attribute__ ((packed)); -- int64_t gps_alt_mant __attribute__ ((packed)); -- int16_t gps_spd __attribute__ ((packed)); -- int64_t gps_spd_mant __attribute__ ((packed)); -- int16_t gps_heading __attribute__ ((packed)); -- int64_t gps_heading_mant __attribute__ ((packed)); -- int8_t gps_fix __attribute__ ((packed)); -- - uint8_t sourcename[32] __attribute__ ((packed)); - }; - -diff -urN kismet.old/panelfront.cc kismet.dev/panelfront.cc ---- kismet.old/panelfront.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/panelfront.cc 2005-08-15 01:09:42.017809920 +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", -@@ -237,19 +236,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 +664,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 +1267,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.old/panelfront.h kismet.dev/panelfront.h ---- kismet.old/panelfront.h 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/panelfront.h 2005-08-15 00:34:52.481998440 +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.old/panelfront_display.cc kismet.dev/panelfront_display.cc ---- kismet.old/panelfront_display.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/panelfront_display.cc 2005-08-15 00:35:58.199007936 +0200 -@@ -727,56 +727,6 @@ - mvwaddstr(netwin, netwin->_maxy, netwin->_maxx - 14, ptxt); - } - --#ifdef HAVE_GPS -- -- -- if (!(lat == 0 && lon == 0 && alt == 0 && spd == 0 && fix == 0)) { -- -- char gpsdata[80]; -- char fixstr[16]; -- float show_alt = alt; -- float show_spd = spd; -- -- if (metric) { -- show_alt = alt / 3.3; -- show_spd = spd * 1.6093; -- } -- -- if (fix == -1) -- snprintf(fixstr, 16, "No signal"); -- else if (fix == 2) -- snprintf(fixstr, 5, "2D"); -- else if (fix == 3) -- snprintf(fixstr, 5, "3D"); -- else -- snprintf(fixstr, 5, "NONE"); -- -- // Convert if we're less than a mile/hr or kilom/hr -- int spdslow = 0; -- if (spd < 0.5) { -- spdslow = 1; -- if (metric) -- show_spd = spd * 0.2778; -- else -- show_spd = spd * 1.4667; -- } -- -- snprintf(gpsdata, 80, "Lat %.3f Lon %.3f Alt %.1f%c Spd %.3f%s Hed %.3f Fix %s", -- lat, lon, show_alt, -- metric ? 'm' : 'f', -- show_spd, -- spdslow ? (metric ? "m/s" : "f/s") : (metric ? "km/h" : "m/h"), -- heading, -- fixstr); -- -- if (color) -- wattrset(kwin->win, color_map["monitor"].pair); -- mvwaddstr(netwin, netwin->_maxy, 2, gpsdata); -- if (color) -- wattrset(kwin->win, color_map["text"].pair); -- -- } --#endif - - - return 1; -@@ -1496,51 +1446,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); -@@ -1848,49 +1753,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 -@@ -1898,184 +1760,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; - -@@ -3044,54 +2728,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); - snprintf(output, print_width, " Data : %d", details_client->data_packets); -diff -urN kismet.old/panelfront_input.cc kismet.dev/panelfront_input.cc ---- kismet.old/panelfront_input.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/panelfront_input.cc 2005-08-15 01:10:39.680043928 +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,32 +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) { -@@ -645,24 +611,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.old/pcapsource.cc kismet.dev/pcapsource.cc ---- kismet.old/pcapsource.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/pcapsource.cc 2005-08-15 00:40:28.291416856 +0200 -@@ -296,11 +296,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) { -@@ -1075,133 +1070,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; -@@ -1350,134 +1218,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 -@@ -1656,88 +1396,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; -@@ -2186,75 +1844,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.old/pcapsource.h kismet.dev/pcapsource.h ---- kismet.old/pcapsource.h 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/pcapsource.h 2005-08-15 00:42:50.849744696 +0200 -@@ -336,8 +336,6 @@ - char *in_err); - KisPacketSource *pcapsource_wextfcs_registrant(string in_name, string in_device, - char *in_err); --KisPacketSource *pcapsource_ciscowifix_registrant(string in_name, string in_device, -- char *in_err); - KisPacketSource *pcapsource_11g_registrant(string in_name, string in_device, - char *in_err); - KisPacketSource *pcapsource_11gfcs_registrant(string in_name, string in_device, -@@ -365,25 +363,12 @@ - int unmonitor_pcapfile(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); - - #ifdef HAVE_LINUX_WIRELESS --// Cisco (old) --int monitor_cisco(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); --int unmonitor_cisco(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); --// Cisco (new) --int monitor_cisco_wifix(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); - // hostap prism2 - int monitor_hostap(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); - int unmonitor_hostap(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); - // orinoco - int monitor_orinoco(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); - int unmonitor_orinoco(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); --// acx100 --int monitor_acx100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); --int unmonitor_acx100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); --// admtek --int monitor_admtek(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); --int unmonitor_admtek(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); --// ar5k --int monitor_vtar5k(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); - // Madwifi group of cards - int monitor_madwifi_a(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); - int monitor_madwifi_b(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); -@@ -393,11 +378,6 @@ - // prism54 needs to override the error messages it gets setting channels - int monitor_prism54g(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); - int unmonitor_prism54g(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); --// Centrino --int monitor_ipw2100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); --int unmonitor_ipw2100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); --int monitor_ipw2200(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); --int unmonitor_ipw2200(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); - // "Standard" wext monitor sequence - mostly a helper for other functions - // since most cards that use wext still have custom initialization that - // needs to be done. -@@ -406,10 +386,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); --// wlan-ng avs --int monitor_wlanng_avs(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); - // linksys wrt54g monitoring - int monitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); - #endif -@@ -434,16 +410,8 @@ - // Prism54 apparently returns a fail code on an iwconfig channel change but - // then works so we need to override the wext failure code - int chancontrol_prism54g(const char *in_dev, int in_ch, char *in_err, void *in_ext); --// We need a delay in it like orinoco, apparently --int chancontrol_ipw2100(const char *in_dev, int in_ch, char *in_err, void *in_ext); --int chancontrol_ipw2200(const char *in_dev, int in_ch, char *in_err, void *in_ext); - #endif - --#ifdef SYS_LINUX --// Modern wlan-ng and wlan-ng avs --int chancontrol_wlanng(const char *in_dev, int in_ch, char *in_err, void *in_ext); --int chancontrol_wlanng_avs(const char *in_dev, int in_ch, char *in_err, void *in_ext); --#endif - - #ifdef SYS_OPENBSD - // openbsd prism2 controls -diff -urN kismet.old/server_protocols.cc kismet.dev/server_protocols.cc ---- kismet.old/server_protocols.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/server_protocols.cc 2005-08-15 00:44:07.921028080 +0200 -@@ -96,7 +96,7 @@ - "bssid", "type", "ssid", "beaconinfo", - "llcpackets", "datapackets", "cryptpackets", - "weakpackets", "channel", "wep", "firsttime", -- "lasttime", "atype", "rangeip", "gpsfixed", -+ "lasttime", "atype", "rangeip", - "minlat", "minlon", "minalt", "minspd", - "maxlat", "maxlon", "maxalt", "maxspd", - "octets", "cloaked", "beaconrate", "maxrate", -@@ -104,7 +104,6 @@ - "quality", "signal", "noise", - "bestquality", "bestsignal", "bestnoise", - "bestlat", "bestlon", "bestalt", -- "agglat", "agglon", "aggalt", "aggpoints", - "datasize", - "turbocellnid", "turbocellmode", "turbocellsat", - "carrierset", "maxseenrate", "encodingset", -@@ -116,10 +115,6 @@ - "bssid", "mac", "type", "firsttime", "lasttime", - "manufkey", "manufscore", - "datapackets", "cryptpackets", "weakpackets", -- "gpsfixed", -- "minlat", "minlon", "minalt", "minspd", -- "maxlat", "maxlon", "maxalt", "maxspd", -- "agglat", "agglon", "aggalt", "aggpoints", - "maxrate", - "quality", "signal", "noise", - "bestquality", "bestsignal", "bestnoise", -@@ -399,33 +394,6 @@ - net->ipdata.range_ip[2], net->ipdata.range_ip[3]); - data->ndvec.push_back(tmpstr); - -- snprintf(tmpstr, 128, "%d", net->gps_fixed); -- data->ndvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", net->min_lat); -- data->ndvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", net->min_lon); -- data->ndvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", net->min_alt); -- data->ndvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", net->min_spd); -- data->ndvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", net->max_lat); -- data->ndvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", net->max_lon); -- data->ndvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", net->max_alt); -- data->ndvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", net->max_spd); -- data->ndvec.push_back(tmpstr); -- - snprintf(tmpstr, 128, "%d", net->ipdata.octets); - data->ndvec.push_back(tmpstr); - -@@ -476,18 +444,6 @@ - snprintf(tmpstr, 128, "%f", net->best_alt); - data->ndvec.push_back(tmpstr); - -- snprintf(tmpstr, 128, "%f", net->aggregate_lat); -- data->ndvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", net->aggregate_lon); -- data->ndvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", net->aggregate_alt); -- data->ndvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%ld", net->aggregate_points); -- data->ndvec.push_back(tmpstr); -- - snprintf(tmpstr, 128, "%ld", net->datasize); - data->ndvec.push_back(tmpstr); - -@@ -573,45 +529,6 @@ - snprintf(tmpstr, 128, "%d", cli->interesting_packets); - data->cdvec.push_back(tmpstr); - -- snprintf(tmpstr, 128, "%d", cli->gps_fixed); -- data->cdvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", cli->min_lat); -- data->cdvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", cli->min_lon); -- data->cdvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", cli->min_alt); -- data->cdvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", cli->min_spd); -- data->cdvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", cli->max_lat); -- data->cdvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", cli->max_lon); -- data->cdvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", cli->max_alt); -- data->cdvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", cli->max_spd); -- data->cdvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", cli->aggregate_lat); -- data->cdvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", cli->aggregate_lon); -- data->cdvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%f", cli->aggregate_alt); -- data->cdvec.push_back(tmpstr); -- -- snprintf(tmpstr, 128, "%ld", cli->aggregate_points); -- data->cdvec.push_back(tmpstr); -- - snprintf(tmpstr, 128, "%2.1f", cli->maxrate); - data->cdvec.push_back(tmpstr); - -diff -urN kismet.old/tcpclient.cc kismet.dev/tcpclient.cc ---- kismet.old/tcpclient.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/tcpclient.cc 2005-08-15 01:06:01.938267096 +0200 -@@ -29,18 +29,16 @@ - protocol_default_map["STRING"] = "bssid,sourcemac,text"; - protocol_default_map["KISMET"] = "version,starttime,servername,timestamp," - "channelhop,newversion"; -- protocol_default_map["GPS"] = "lat,lon,alt,spd,heading,fix"; - protocol_default_map["NETWORK"] = "bssid,type,ssid,beaconinfo,llcpackets,datapackets,cryptpackets," -- "weakpackets,channel,wep,firsttime,lasttime,atype,rangeip,gpsfixed,minlat,minlon,minalt,minspd," -- "maxlat,maxlon,maxalt,maxspd,octets,cloaked,beaconrate,maxrate," -- "quality,signal,noise,bestquality,bestsignal,bestnoise,bestlat,bestlon,bestalt," -- "agglat,agglon,aggalt,aggpoints,datasize,turbocellnid,turbocellmode,turbocellsat," -+ "weakpackets,channel,wep,firsttime,lasttime,atype,rangeip," -+ "octets,cloaked,beaconrate,maxrate," -+ "quality,signal,noise,bestquality,bestsignal,bestnoise," -+ "datasize,turbocellnid,turbocellmode,turbocellsat," - "carrierset,maxseenrate,encodingset,decrypted,dupeivpackets"; - protocol_default_map["CLIENT"] = "bssid,mac,type,firsttime,lasttime," - "datapackets,cryptpackets,weakpackets," -- "gpsfixed,minlat,minlon,minalt,minspd,maxlat,maxlon,maxalt,maxspd," -- "agglat,agglon,aggalt,aggpoints,maxrate,quality,signal,noise," -- "bestquality,bestsignal,bestnoise,bestlat,bestlon,bestalt," -+ "maxrate,quality,signal,noise," -+ "bestquality,bestsignal,bestnoise," - "atype,ip,datasize,maxseenrate,encodingset,decrypted,wep"; - protocol_default_map["WEPKEY"] = "origin,bssid,key,encrypted,failed"; - protocol_default_map["CARD"] = "interface,type,username,channel,id,packets,hopping"; -@@ -48,7 +46,6 @@ - sv_valid = 0; - client_fd = 0; - -- lat = lon = alt = spd = 0; - mode = 0; - - num_networks = num_packets = num_crypt = num_interesting = -@@ -343,14 +340,6 @@ - // Bitmask set of encoding types seen in this network - int encoding_set; - -- int gps_fixed; -- float min_lat, min_lon, min_alt, min_spd; -- float max_lat, max_lon, max_alt, max_spd; -- -- // Averaged center position -- double aggregate_lat, aggregate_lon, aggregate_alt; -- long aggregate_points; -- - // How fast we can go - float maxrate; - -@@ -359,7 +348,6 @@ - // Connection information - int quality, signal, noise; - int best_quality, best_signal, best_noise; -- float best_lat, best_lon, best_alt; - - // Amount of data, in bytes - unsigned long datasize; -@@ -393,23 +381,20 @@ - scanned = sscanf(in_data+hdrlen+18, "%d \001%255[^\001]\001 " - "\001%255[^\001]\001 " - "%d %d %d %d %d %d %d %d %d %hd.%hd.%hd.%hd " -- "%d %f %f %f %f %f %f %f %f %d %d %d %f %d %d %d %d %d %d " -- "%f %f %f %lf %lf %lf %ld %ld" -+ "%d %d %d %f %d %d %d %d %d %d " -+ "%ld" - "%d %d %d %d %d %d %d %d", - (int *) &type, ssid, beaconstr, - &llc_packets, &data_packets, &crypt_packets, - &interesting_packets, &channel, &crypt_set, - (int *) &first_time, (int *) &last_time, - (int *) &atype, &range[0], &range[1], &range[2], -- &range[3], &gps_fixed, &min_lat, &min_lon, -- &min_alt, &min_spd, &max_lat, &max_lon, -- &max_alt, &max_spd, &octets, -+ &range[3], -+ &octets, - &cloaked, &beacon, &maxrate, &quality, - &signal, &noise, &best_quality, - &best_signal, &best_noise, -- &best_lat, &best_lon, &best_alt, -- &aggregate_lat, &aggregate_lon, &aggregate_alt, -- &aggregate_points, &datasize, -+ &datasize, - &turbocell_nid, (int *) &turbocell_mode, - &turbocell_sat, &carrier_set, &maxseenrate, - &encoding_set, &decrypted, &dupeiv_packets); -@@ -456,15 +441,6 @@ - net->beacon = beacon; - net->carrier_set = carrier_set; - net->encoding_set = encoding_set; -- net->gps_fixed = gps_fixed; -- net->min_lat = min_lat; -- net->min_lon = min_lon; -- net->min_alt = min_alt; -- net->min_spd = min_spd; -- net->max_lat = max_lat; -- net->max_lon = max_lon; -- net->max_alt = max_alt; -- net->max_spd = max_spd; - net->maxrate = maxrate; - net->maxseenrate = maxseenrate; - net->quality = quality; -@@ -473,13 +449,6 @@ - net->best_quality = best_quality; - net->best_signal = best_signal; - net->best_noise = best_noise; -- net->best_lat = best_lat; -- net->best_lon = best_lon; -- net->best_alt = best_alt; -- net->aggregate_points = aggregate_points; -- net->aggregate_lat = aggregate_lat; -- net->aggregate_lon = aggregate_lon; -- net->aggregate_alt = aggregate_alt; - net->datasize = datasize; - net->dupeiv_packets = dupeiv_packets; - net->decrypted = decrypted; -@@ -505,13 +474,6 @@ - int crypt_packets; - int interesting_packets; - -- // gps data -- int gps_fixed; -- float min_lat, min_lon, min_alt, min_spd; -- float max_lat, max_lon, max_alt, max_spd; -- double aggregate_lat, aggregate_lon, aggregate_alt; -- long aggregate_points; -- - // How fast we can go - float maxrate; - // How fast we've been seen to go, in 100kbs units -@@ -523,7 +485,6 @@ - // Last seen quality for a packet from this client - int quality, signal, noise; - int best_quality, best_signal, best_noise; -- float best_lat, best_lon, best_alt; - - // ip data - address_type atype; -@@ -558,24 +519,16 @@ - return 0; - } - -- scanned = sscanf(in_data+hdrlen+36, "%d %d %d %d %d %d %d " -- "%f %f %f %f %f %f %f %f %lf %lf " -- "%lf %ld %f %d %d %d %d %d %d " -- "%f %f %f %d %hd.%hd.%hd.%hd %ld %d %d %d %d", -+ scanned = sscanf(in_data+hdrlen+36, "%d %d %d %d %d %d " -+ "%d %d %d %d %d %d " -+ "%d %hd.%hd.%hd.%hd %ld %d %d %d %d", - (int *) &type, - (int *) &first_time, (int *) &last_time, - &data_packets, &crypt_packets, - &interesting_packets, -- &gps_fixed, &min_lat, &min_lon, -- &min_alt, &min_spd, -- &max_lat, &max_lon, &max_alt, -- &max_spd, &aggregate_lat, -- &aggregate_lon, -- &aggregate_alt, &aggregate_points, - &maxrate, &quality, &signal, &noise, - &best_quality, &best_signal, - &best_noise, -- &best_lat, &best_lon, &best_alt, - (int *) &atype, &ip[0], &ip[1], &ip[2], &ip[3], - &datasize, &maxseenrate, &encoding_set, - &decrypted, &crypt_set); -@@ -607,15 +560,6 @@ - client->last_time = last_time; - client->first_time = first_time; - client->encoding_set = encoding_set; -- client->gps_fixed = gps_fixed; -- client->min_lat = min_lat; -- client->min_lon = min_lon; -- client->min_alt = min_alt; -- client->min_spd = min_spd; -- client->max_lat = max_lat; -- client->max_lon = max_lon; -- client->max_alt = max_alt; -- client->max_spd = max_spd; - client->maxrate = maxrate; - client->maxseenrate = maxseenrate; - client->quality = quality; -@@ -624,13 +568,6 @@ - client->best_quality = best_quality; - client->best_signal = best_signal; - client->best_noise = best_noise; -- client->best_lat = best_lat; -- client->best_lon = best_lon; -- client->best_alt = best_alt; -- client->aggregate_lat = aggregate_lat; -- client->aggregate_lon = aggregate_lon; -- client->aggregate_alt = aggregate_alt; -- client->aggregate_points = aggregate_points; - client->datasize = datasize; - client->decrypted = decrypted; - -@@ -653,10 +590,6 @@ - net_map[bssid]->type = network_remove; - } - -- } else if (!strncmp(header, "*GPS", 64)) { -- if (sscanf(in_data+hdrlen, "%f %f %f %f %f %d", &lat, &lon, &alt, &spd, &heading, &mode) < 5) -- return 0; -- - } else if (!strncmp(header, "*INFO", 64)) { - char chan_details[1024]; - char chan_details_sec[1024]; -@@ -843,14 +776,6 @@ - return serv_time; - } - --int TcpClient::FetchLoc(float *in_lat, float *in_lon, float *in_alt, float *in_spd, float *in_hed, int *in_mode) { -- *in_lat = lat; *in_lon = lon; -- *in_alt = alt; *in_spd = spd; -- *in_hed = heading; -- *in_mode = mode; -- return mode; --} -- - vector TcpClient::FetchCardList() { - return card_map_vec; - } -diff -urN kismet.old/tcpclient.h kismet.dev/tcpclient.h ---- kismet.old/tcpclient.h 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/tcpclient.h 2005-08-15 01:06:11.096874776 +0200 -@@ -125,8 +125,6 @@ - // Disable a protocol - void RemoveProtocol(string in_protocol); - -- // Fetch the location -- int FetchLoc(float *in_lat, float *in_lon, float *in_alt, float *in_spd, float *in_hed, int *in_mode); - // Fetch the mode - int FetchMode() { return mode; } - -@@ -236,8 +234,6 @@ - struct hostent *client_host; - - // Data sent to us -- // GPS -- float lat, lon, alt, spd, heading; - int mode; - // Timestampt - time_t serv_time; -diff -urN kismet.old/tcpstreamer.cc kismet.dev/tcpstreamer.cc ---- kismet.old/tcpstreamer.cc 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/tcpstreamer.cc 2005-08-15 00:54:02.870582000 +0200 -@@ -31,7 +31,6 @@ - - max_fd = 0; - -- gpsd = NULL; - } - - TcpStreamer::~TcpStreamer() -@@ -287,10 +286,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; -@@ -361,22 +356,6 @@ - packhdr.carrier = in_packet->carrier; - packhdr.encoding = in_packet->encoding; - packhdr.datarate = (uint32_t) htonl(in_packet->datarate); -- // GPS first-iteration -- Float2Pair(in_packet->gps_lat, &packhdr.gps_lat, &packhdr.gps_lat_mant); -- Float2Pair(in_packet->gps_lon, &packhdr.gps_lon, &packhdr.gps_lon_mant); -- Float2Pair(in_packet->gps_alt, &packhdr.gps_alt, &packhdr.gps_alt_mant); -- Float2Pair(in_packet->gps_spd, &packhdr.gps_spd, &packhdr.gps_spd_mant); -- packhdr.gps_fix = in_packet->gps_fix; -- // endianswap -- packhdr.gps_lat = (int16_t) htons(packhdr.gps_lat); -- packhdr.gps_lat_mant = (int64_t) kis_hton64(packhdr.gps_lat_mant); -- packhdr.gps_lon = (int16_t) htons(packhdr.gps_lon); -- packhdr.gps_lon_mant = (int64_t) kis_hton64(packhdr.gps_lon_mant); -- packhdr.gps_alt = (int16_t) htons(packhdr.gps_alt); -- packhdr.gps_alt_mant = (int64_t) kis_hton64(packhdr.gps_alt_mant); -- packhdr.gps_spd = (int16_t) htons(packhdr.gps_spd); -- packhdr.gps_spd_mant = (int64_t) kis_hton64(packhdr.gps_spd_mant); -- - // Sourcename - memcpy(packhdr.sourcename, in_packet->sourcename, 32); - -diff -urN kismet.old/tcpstreamer.h kismet.dev/tcpstreamer.h ---- kismet.old/tcpstreamer.h 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/tcpstreamer.h 2005-08-15 00:54:22.181646272 +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); -@@ -125,7 +121,6 @@ - - unsigned int max_fd; - -- GPSD *gpsd; - }; - - #endif -diff -urN kismet.old/tracktypes.h kismet.dev/tracktypes.h ---- kismet.old/tracktypes.h 2005-07-25 16:19:44.000000000 +0200 -+++ kismet.dev/tracktypes.h 2005-08-15 00:55:29.308441448 +0200 -@@ -104,22 +104,6 @@ - - data_packets = crypt_packets = interesting_packets = 0; - -- gps_fixed = -1; -- -- /* by setting the min to the highest possible values in the range and -- max to the lowest we ensure that the data is correct */ -- min_lat = 90; -- max_lat = -90; -- min_lon = 180; -- max_lon = -180; -- -- /* since these are not limited, we just set to 0 */ -- min_alt = min_spd = 0; -- max_alt = max_spd = 0; -- -- aggregate_lat = aggregate_lon = aggregate_alt = 0; -- aggregate_points = 0; -- - maxrate = 0; - maxseenrate = 0; - -@@ -219,13 +203,6 @@ - int crypt_packets; - int interesting_packets; - -- // gps data -- int gps_fixed; -- float min_lat, min_lon, min_alt, min_spd; -- float max_lat, max_lon, max_alt, max_spd; -- double aggregate_lat, aggregate_lon, aggregate_alt; -- long aggregate_points; -- - // How fast we can go - double maxrate; - // How fast we've been seen to go, in 100kbs units -@@ -288,22 +265,6 @@ - beacon = 0; - listed = 0; - -- gps_fixed = -1; -- -- /* by setting the min to the highest possible values in the range and -- max to the lowest we ensure that the data is correct */ -- min_lat = 90; -- max_lat = -90; -- min_lon = 180; -- max_lon = -180; -- -- /* since these are not limited, we just set to 0 */ -- min_alt = min_spd = 0; -- max_alt = max_spd = 0; -- -- aggregate_lat = aggregate_lon = aggregate_alt = 0; -- aggregate_points = 0; -- - maxrate = 0; - maxseenrate = 0; - -@@ -469,14 +430,6 @@ - - map cisco_equip; - -- int gps_fixed; -- float min_lat, min_lon, min_alt, min_spd; -- float max_lat, max_lon, max_alt, max_spd; -- -- // Averaged center position -- double aggregate_lat, aggregate_lon, aggregate_alt; -- long aggregate_points; -- - // How fast we can go - double maxrate; - diff --git a/openwrt/package/kismet/patches/100-wrt54g_source.patch b/openwrt/package/kismet/patches/100-wrt54g_source.patch new file mode 100644 index 0000000..3336a8f --- /dev/null +++ b/openwrt/package/kismet/patches/100-wrt54g_source.patch @@ -0,0 +1,189 @@ +diff -urN kismet.old/kis_packsources.cc kismet.dev/kis_packsources.cc +--- kismet.old/kis_packsources.cc 2005-08-16 03:22:51.000000000 +0200 ++++ kismet.dev/kis_packsources.cc 2005-08-23 00:59:04.465379568 +0200 +@@ -192,7 +192,7 @@ + chancontrol_wlanng_avs, 1); + sourcetracker->RegisterPacketsource("wrt54g", 1, "na", 0, + pcapsource_wrt54g_registrant, +- monitor_wrt54g, NULL, NULL, 0); ++ monitor_wrt54g, unmonitor_wrt54g, chancontrol_wext, 0); + #else + REG_EMPTY_CARD(sourcetracker, "wlanng"); + REG_EMPTY_CARD(sourcetracker, "wlanng_avs"); +diff -urN kismet.old/packetsourcetracker.cc kismet.dev/packetsourcetracker.cc +--- kismet.old/packetsourcetracker.cc 2005-08-16 03:22:51.000000000 +0200 ++++ kismet.dev/packetsourcetracker.cc 2005-08-23 00:59:39.969982048 +0200 +@@ -986,6 +986,7 @@ + (meta_packsources[chanpak.meta_num]->device.c_str(), + chanpak.channel, errstr, + (void *) (meta_packsources[chanpak.meta_num]->capsource)) < 0) { ++#if 0 + + meta_packsources[chanpak.meta_num]->consec_errors++; + +@@ -1007,6 +1008,7 @@ + CHANFLAG_FATAL)); + continue; + } ++#endif + } else { + // Otherwise reset the error count + meta_packsources[chanpak.meta_num]->consec_errors = 0; +diff -urN kismet.old/pcapsource.cc kismet.dev/pcapsource.cc +--- kismet.old/pcapsource.cc 2005-08-16 03:22:51.000000000 +0200 ++++ kismet.dev/pcapsource.cc 2005-08-23 01:03:45.652632608 +0200 +@@ -115,6 +115,53 @@ + u_char callback_data[MAX_PACKET_LEN]; + + // Open a source ++int PcapSourceWrt54g::OpenSource() { ++ channel = 0; ++ ++ errstr[0] = '\0'; ++ ++ char *unconst = strdup("prism0"); ++ ++ pd = pcap_open_live(unconst, MAX_PACKET_LEN, 1, 1000, errstr); ++ ++ #if defined (SYS_OPENBSD) || defined(SYS_NETBSD) && defined(HAVE_RADIOTAP) ++ /* Request desired DLT on multi-DLT systems that default to EN10MB. We do this ++ later anyway but doing it here ensures we have the desired DLT from the get go. */ ++ pcap_set_datalink(pd, DLT_IEEE802_11_RADIO); ++ #endif ++ ++ free(unconst); ++ ++ if (strlen(errstr) > 0) ++ return -1; // Error is already in errstr ++ ++ paused = 0; ++ ++ errstr[0] = '\0'; ++ ++ num_packets = 0; ++ ++ if (DatalinkType() < 0) ++ return -1; ++ ++#ifdef HAVE_PCAP_NONBLOCK ++ pcap_setnonblock(pd, 1, errstr); ++#elif !defined(SYS_OPENBSD) ++ // do something clever (Thanks to Guy Harris for suggesting this). ++ int save_mode = fcntl(pcap_get_selectable_fd(pd), F_GETFL, 0); ++ if (fcntl(pcap_get_selectable_fd(pd), F_SETFL, save_mode | O_NONBLOCK) < 0) { ++ snprintf(errstr, 1024, "fcntl failed, errno %d (%s)", ++ errno, strerror(errno)); ++ } ++#endif ++ ++ if (strlen(errstr) > 0) ++ return -1; // Ditto ++ ++ return 1; ++} ++ ++// Open a source + int PcapSource::OpenSource() { + channel = 0; + +@@ -1928,63 +1975,32 @@ + int monitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if, + void *in_ext) { + char cmdline[2048]; +- int mode; +- int wlmode = 0; +- +-#ifdef HAVE_LINUX_WIRELESS +- vector devbits = StrTokenize(in_dev, ":"); + +- if (devbits.size() < 2) { +- snprintf(cmdline, 2048, "/usr/sbin/wl monitor 1"); ++ snprintf(cmdline, 2048, "/usr/sbin/iwpriv %s set_monitor 1", in_dev); + if (RunSysCmd(cmdline) < 0) { +- snprintf(in_err, 1024, "Unable to set mode using 'wl monitor 1'. Some " +- "custom firmware images require you to specify the origial " ++ 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."); + return -1; + } +- } else { +- // Get the mode ... If this doesn't work, try the old wl method. +- if (Iwconfig_Get_Mode(devbits[0].c_str(), in_err, &mode) < 0) { +- fprintf(stderr, "WARNING: Getting wireless mode via ioctls failed, " +- "defaulting to trying the 'wl' command.\n"); +- wlmode = 1; +- } + +- if (wlmode == 1) { +- snprintf(cmdline, 2048, "/usr/sbin/wl monitor 1"); +- if (RunSysCmd(cmdline) < 0) { +- snprintf(in_err, 1024, "Unable to execute '%s'", cmdline); +- return -1; +- } +- } else if (mode != LINUX_WLEXT_MONITOR) { +- // Set it +- if (Iwconfig_Set_Mode(devbits[0].c_str(), in_err, +- LINUX_WLEXT_MONITOR) < 0) { +- snprintf(in_err, STATUS_MAX, "Unable to set iwconfig monitor " +- "mode. If you are using an older wrt54g, try specifying " +- "only the ethernet device, not ethX:prismX"); +- return -1; +- } ++ return 1; ++} ++ ++ ++int unmonitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if, ++ void *in_ext) { ++ char cmdline[2048]; ++ ++ snprintf(cmdline, 2048, "/usr/sbin/iwpriv %s set_monitor 0", in_dev); ++ if (RunSysCmd(cmdline) < 0) { ++ 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."); ++ return -1; + } +- } +-#else +- snprintf(cmdline, 2048, "/usr/sbin/wl monitor 1"); +- if (RunSysCmd(cmdline) < 0) { +- snprintf(in_err, 1024, "Unable to set mode using 'wl 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. " +- "Support for wireless extensions was not compiled in, so more " +- "advanced modes of setting monitor mode are not available."); +- return -1; +- } +- fprintf(stderr, "WARNING: Support for wireless extensions was not compiled " +- "into this binary. Using the iw* tools to set monitor mode will not " +- "be available. This may cause opening the source to fail on some " +- "firmware versions. To fix this, make sure wireless extensions are " +- "available and found by the configure script when building Kismet."); +-#endif + + return 1; + } +diff -urN kismet.old/pcapsource.h kismet.dev/pcapsource.h +--- kismet.old/pcapsource.h 2005-08-16 03:22:51.000000000 +0200 ++++ kismet.dev/pcapsource.h 2005-08-23 01:04:26.057490136 +0200 +@@ -265,6 +265,7 @@ + PcapSourceWrt54g(string in_name, string in_dev) : PcapSource(in_name, in_dev) { + fcsbytes = 4; + } ++ int OpenSource(); + int FetchPacket(kis_packet *packet, uint8_t *data, uint8_t *moddata); + protected: + carrier_type IEEE80211Carrier(); +@@ -412,6 +413,7 @@ + int monitor_wlanng_avs(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); + // linksys wrt54g monitoring + int monitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); ++int unmonitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); + #endif + + // This should be expanded to handle BSD... diff --git a/openwrt/package/kismet/patches/120-cleanup.patch b/openwrt/package/kismet/patches/120-cleanup.patch new file mode 100644 index 0000000..1743080 --- /dev/null +++ b/openwrt/package/kismet/patches/120-cleanup.patch @@ -0,0 +1,3113 @@ +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 diff --git a/openwrt/package/kismet/patches/120-wrt54g_source.patch b/openwrt/package/kismet/patches/120-wrt54g_source.patch deleted file mode 100644 index 2a0eac2..0000000 --- a/openwrt/package/kismet/patches/120-wrt54g_source.patch +++ /dev/null @@ -1,181 +0,0 @@ -diff -urN kismet.old/kis_packsources.cc kismet.dev/kis_packsources.cc ---- kismet.old/kis_packsources.cc 2005-08-15 00:15:11.107594000 +0200 -+++ kismet.dev/kis_packsources.cc 2005-08-15 01:56:36.467769104 +0200 -@@ -215,7 +215,7 @@ - #endif - sourcetracker->RegisterPacketsource("wrt54g", 1, "na", 0, - pcapsource_wrt54g_registrant, -- monitor_wrt54g, NULL, NULL, 0); -+ monitor_wrt54g, unmonitor_wrt54g, chancontrol_wext, 0); - #else - REG_EMPTY_CARD(sourcetracker, "wlanng"); - REG_EMPTY_CARD(sourcetracker, "wlanng_avs"); -diff -urN kismet.old/packetsourcetracker.cc kismet.dev/packetsourcetracker.cc ---- kismet.old/packetsourcetracker.cc 2005-08-15 00:33:14.628874000 +0200 -+++ kismet.dev/packetsourcetracker.cc 2005-08-15 01:20:41.284203096 +0200 -@@ -984,6 +984,7 @@ - (meta_packsources[chanpak.meta_num]->device.c_str(), - chanpak.channel, errstr, - (void *) (meta_packsources[chanpak.meta_num]->capsource)) < 0) { -+#if 0 - - meta_packsources[chanpak.meta_num]->consec_errors++; - -@@ -1005,6 +1006,7 @@ - CHANFLAG_FATAL)); - continue; - } -+#endif - } else { - // Otherwise reset the error count - meta_packsources[chanpak.meta_num]->consec_errors = 0; -diff -urN kismet.old/pcapsource.cc kismet.dev/pcapsource.cc ---- kismet.old/pcapsource.cc 2005-08-15 00:40:28.291416000 +0200 -+++ kismet.dev/pcapsource.cc 2005-08-15 01:55:53.972229408 +0200 -@@ -115,6 +115,53 @@ - u_char callback_data[MAX_PACKET_LEN]; - - // Open a source -+int PcapSourceWrt54g::OpenSource() { -+ channel = 0; -+ -+ errstr[0] = '\0'; -+ -+ char *unconst = strdup("prism0"); -+ -+ pd = pcap_open_live(unconst, MAX_PACKET_LEN, 1, 1000, errstr); -+ -+ #if defined (SYS_OPENBSD) || defined(SYS_NETBSD) && defined(HAVE_RADIOTAP) -+ /* Request desired DLT on multi-DLT systems that default to EN10MB. We do this -+ later anyway but doing it here ensures we have the desired DLT from the get go. */ -+ pcap_set_datalink(pd, DLT_IEEE802_11_RADIO); -+ #endif -+ -+ free(unconst); -+ -+ if (strlen(errstr) > 0) -+ return -1; // Error is already in errstr -+ -+ paused = 0; -+ -+ errstr[0] = '\0'; -+ -+ num_packets = 0; -+ -+ if (DatalinkType() < 0) -+ return -1; -+ -+#ifdef HAVE_PCAP_NONBLOCK -+ pcap_setnonblock(pd, 1, errstr); -+#elif !defined(SYS_OPENBSD) -+ // do something clever (Thanks to Guy Harris for suggesting this). -+ int save_mode = fcntl(pcap_get_selectable_fd(pd), F_GETFL, 0); -+ if (fcntl(pcap_get_selectable_fd(pd), F_SETFL, save_mode | O_NONBLOCK) < 0) { -+ snprintf(errstr, 1024, "fcntl failed, errno %d (%s)", -+ errno, strerror(errno)); -+ } -+#endif -+ -+ if (strlen(errstr) > 0) -+ return -1; // Ditto -+ -+ return 1; -+} -+ -+// Open a source - int PcapSource::OpenSource() { - channel = 0; - -@@ -1561,45 +1608,39 @@ - - int monitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if, - void *in_ext) { -- char cmdline[2048]; -+ char cmdline[2048]; - int mode; - int wlmode = 0; - -- vector devbits = StrTokenize(in_dev, ":"); -+ vector devbits = StrTokenize(in_dev, ":"); - -- if (devbits.size() < 2) { -- snprintf(cmdline, 2048, "/usr/sbin/wl monitor 1"); -- if (RunSysCmd(cmdline) < 0) { -- snprintf(in_err, 1024, "Unable to set mode using 'wl 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."); -- return -1; -- } -- } else { -- // Get the mode ... If this doesn't work, try the old wl method. -- if (Iwconfig_Get_Mode(devbits[0].c_str(), in_err, &mode) < 0) { -- fprintf(stderr, "WARNING: Getting wireless mode via ioctls failed, " -- "defaulting to trying the 'wl' command.\n"); -- wlmode = 1; -- } -+ snprintf(cmdline, 2048, "/usr/sbin/iwpriv %s set_monitor 1", in_dev); -+ if (RunSysCmd(cmdline) < 0) { -+ 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.", in_dev); -+ return -1; -+ } - -- if (wlmode == 1) { -- snprintf(cmdline, 2048, "/usr/sbin/wl monitor 1"); -- if (RunSysCmd(cmdline) < 0) { -- snprintf(in_err, 1024, "Unable to execute '%s'", cmdline); -- return -1; -- } -- } else if (mode != LINUX_WLEXT_MONITOR) { -- // Set it -- if (Iwconfig_Set_Mode(devbits[0].c_str(), in_err, -- LINUX_WLEXT_MONITOR) < 0) { -- snprintf(in_err, STATUS_MAX, "Unable to set iwconfig monitor " -- "mode. If you are using an older wrt54g, try specifying " -- "only the ethernet device, not ethX:prismX"); -- return -1; -- } -- } -+ return 1; -+} -+ -+int unmonitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if, -+ void *in_ext) { -+ char cmdline[2048]; -+ int mode; -+ int wlmode = 0; -+ -+ vector devbits = StrTokenize(in_dev, ":"); -+ -+ snprintf(cmdline, 2048, "/usr/sbin/iwpriv %s set_monitor 0", in_dev); -+ if (RunSysCmd(cmdline) < 0) { -+ 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.", in_dev); -+ return -1; - } - - return 1; -diff -urN kismet.old/pcapsource.h kismet.dev/pcapsource.h ---- kismet.old/pcapsource.h 2005-08-15 00:42:50.849744000 +0200 -+++ kismet.dev/pcapsource.h 2005-08-15 01:56:07.649150200 +0200 -@@ -265,6 +265,7 @@ - PcapSourceWrt54g(string in_name, string in_dev) : PcapSource(in_name, in_dev) { - fcsbytes = 4; - } -+ int OpenSource(); - int FetchPacket(kis_packet *packet, uint8_t *data, uint8_t *moddata); - protected: - carrier_type IEEE80211Carrier(); -@@ -388,6 +389,7 @@ - #ifdef SYS_LINUX - // linksys wrt54g monitoring - int monitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); -+int unmonitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext); - #endif - - // This should be expanded to handle BSD... -- cgit v1.1