Beispiel #1
0
        private static void AddorUpdateClientsSqliteNew(ref detectionrun ds, int i, ref int clienttotal, ref int clientnew, ref int clientseen)
        {
            SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();
            builder.DataSource = string.Format("{0}\\kismetdata.db", Application.StartupPath);
            builder.SyncMode = SynchronizationModes.Off;
            builder.CacheSize = 5000;

            SQLiteConnection connection = new SQLiteConnection(builder.ToString());
            //SQLiteCommand command = connection.CreateCommand();
            connection.Open();
            SQLiteCommand insertclients = connection.CreateCommand();
            SQLiteCommand updateclients = connection.CreateCommand();
            insertclients.CommandText = "Insert into clients values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            updateclients.CommandText=@"UPDATE [Clients] SET
                [Clientipaddress]=?,
                [oui]=?,
                [clientencryption]=?,
                [clientfirsttime]=?,
                [clientgpsminlat]=?,
                [clientgpsminlon]=?,
                [clientgpsmaxlat]=?,
                [clientgpsmaxlon]=?,
                [clientgpsminalt]=?,
                [clientgpsmaxalt]=?,
                [clientgpsminspeed]=?,
                [clientgpsmaxspeed]=?,
                [clientdatasize]=?,
                [clientmaxrate]=?,
                [clientmaxseenrate]=?,
                [clientlasttime]=?,
                [clientpacketscrypt]=?,
                [clientpacketsdata]=?,
                [clientpacketsweak]=?,
                [Number]=?,
                [Type]=?,
                [wep]=?
            WHERE
                [bssid]=? AND
                [clientmac]=?";
            SQLiteParameter Clientipaddress = insertclients.CreateParameter();
            SQLiteParameter updateClientipaddress = updateclients.CreateParameter();
            SQLiteParameter insertoui = insertclients.CreateParameter();
            SQLiteParameter updateoui = updateclients.CreateParameter();
            SQLiteParameter bssid = insertclients.CreateParameter();

            SQLiteParameter clientmac = insertclients.CreateParameter();

            SQLiteParameter clientencryption = insertclients.CreateParameter();
            SQLiteParameter updateclientencryption = updateclients.CreateParameter();
            SQLiteParameter clientfirsttime = insertclients.CreateParameter();
            SQLiteParameter updateclientfirsttime = updateclients.CreateParameter();
            SQLiteParameter clientgpsminlat=insertclients.CreateParameter();
            SQLiteParameter clientgpsminlon=insertclients.CreateParameter();
            SQLiteParameter clientgpsmaxlat=insertclients.CreateParameter();
            SQLiteParameter clientgpsmaxlon=insertclients.CreateParameter();
            SQLiteParameter clientgpsminalt=insertclients.CreateParameter();
            SQLiteParameter clientgpsmaxalt=insertclients.CreateParameter();
            SQLiteParameter clientgpsminspeed=insertclients.CreateParameter();
            SQLiteParameter clientgpsmaxspeed=insertclients.CreateParameter();
            SQLiteParameter clientdatasize=insertclients.CreateParameter();
            SQLiteParameter clientmaxrate=insertclients.CreateParameter();
            SQLiteParameter clientmaxseenrate=insertclients.CreateParameter();
            SQLiteParameter clientlasttime=insertclients.CreateParameter();
            SQLiteParameter clientpacketscrypt=insertclients.CreateParameter();
            SQLiteParameter clientpacketsdata=insertclients.CreateParameter();
            SQLiteParameter clientpacketsweak=insertclients.CreateParameter();
            SQLiteParameter Number=insertclients.CreateParameter();
            SQLiteParameter Type=insertclients.CreateParameter();
            SQLiteParameter wep = insertclients.CreateParameter();

            SQLiteParameter updateclientgpsminlat = updateclients.CreateParameter();
            SQLiteParameter updateclientgpsminlon = updateclients.CreateParameter();
            SQLiteParameter updateclientgpsmaxlat = updateclients.CreateParameter();
            SQLiteParameter updateclientgpsmaxlon = updateclients.CreateParameter();
            SQLiteParameter updateclientgpsminalt = updateclients.CreateParameter();
            SQLiteParameter updateclientgpsmaxalt = updateclients.CreateParameter();
            SQLiteParameter updateclientgpsminspeed = updateclients.CreateParameter();
            SQLiteParameter updateclientgpsmaxspeed = updateclients.CreateParameter();
            SQLiteParameter updateclientdatasize = updateclients.CreateParameter();
            SQLiteParameter updateclientmaxrate = updateclients.CreateParameter();
            SQLiteParameter updateclientmaxseenrate = updateclients.CreateParameter();
            SQLiteParameter updateclientlasttime = updateclients.CreateParameter();
            SQLiteParameter updateclientpacketscrypt = updateclients.CreateParameter();
            SQLiteParameter updateclientpacketsdata = updateclients.CreateParameter();
            SQLiteParameter updateclientpacketsweak = updateclients.CreateParameter();
            SQLiteParameter updateNumber = updateclients.CreateParameter();
            SQLiteParameter updateType = updateclients.CreateParameter();
            SQLiteParameter updatewep = updateclients.CreateParameter();
            SQLiteParameter updatebssid = insertclients.CreateParameter();
            SQLiteParameter updateclientmac = updateclients.CreateParameter();

            insertclients.Parameters.Add(Clientipaddress);
                insertclients.Parameters.Add(insertoui);
                insertclients.Parameters.Add(bssid);
                insertclients.Parameters.Add(clientmac);
            insertclients.Parameters.Add(clientencryption);
            insertclients.Parameters.Add(clientfirsttime);
                insertclients.Parameters.Add(clientgpsminlat);
                insertclients.Parameters.Add(clientgpsminlon);
                insertclients.Parameters.Add(clientgpsmaxlat);
                insertclients.Parameters.Add(clientgpsmaxlon);
                insertclients.Parameters.Add(clientgpsminalt);
                insertclients.Parameters.Add(clientgpsmaxalt);
                insertclients.Parameters.Add(clientgpsminspeed);
                insertclients.Parameters.Add(clientgpsmaxspeed);
                insertclients.Parameters.Add(clientdatasize);
                insertclients.Parameters.Add(clientmaxrate);
                insertclients.Parameters.Add(clientmaxseenrate);
                insertclients.Parameters.Add(clientlasttime);
                insertclients.Parameters.Add(clientpacketscrypt);
                insertclients.Parameters.Add(clientpacketsdata);
                insertclients.Parameters.Add(clientpacketsweak);
                insertclients.Parameters.Add(Number);
                insertclients.Parameters.Add(Type);
            insertclients.Parameters.Add(wep);

            updateclients.Parameters.Add(updateClientipaddress);
            updateclients.Parameters.Add(updateoui);

            updateclients.Parameters.Add(updateclientencryption);
            updateclients.Parameters.Add(updateclientfirsttime);
            updateclients.Parameters.Add(updateclientgpsminlat);
            updateclients.Parameters.Add(updateclientgpsminlon);
            updateclients.Parameters.Add(updateclientgpsmaxlat);
            updateclients.Parameters.Add(updateclientgpsmaxlon);
            updateclients.Parameters.Add(updateclientgpsminalt);
            updateclients.Parameters.Add(updateclientgpsmaxalt);
            updateclients.Parameters.Add(updateclientgpsminspeed);
            updateclients.Parameters.Add(updateclientgpsmaxspeed);
            updateclients.Parameters.Add(updateclientdatasize);
            updateclients.Parameters.Add(updateclientmaxrate);
            updateclients.Parameters.Add(updateclientmaxseenrate);
            updateclients.Parameters.Add(updateclientlasttime);
            updateclients.Parameters.Add(updateclientpacketscrypt);
            updateclients.Parameters.Add(updateclientpacketsdata);
            updateclients.Parameters.Add(updateclientpacketsweak);
            updateclients.Parameters.Add(updateNumber);
            updateclients.Parameters.Add(updateType);
            updateclients.Parameters.Add(updatewep);
            updateclients.Parameters.Add(updatebssid);
            updateclients.Parameters.Add(updateclientmac);
            ClientsTableAdapter theclientstableadaptor = new ClientsTableAdapter();
            DataTable t;
            clienttotal += ds.wirelessnetwork[i].wirelessclient.Length;
            for (int j = 0; j < ds.wirelessnetwork[i].wirelessclient.Length; j++)
            {
                t=theclientstableadaptor.GetDataByClientBssid(ds.wirelessnetwork[i].wirelessclient[j].clientmac, ds.wirelessnetwork[i].BSSID);
                if(t.Rows.Count == 0)
                {
                    //theClientData.AddNew();
                    //Console.WriteLine("Client Add");
                    clientnew++;
                    bssid.Value = ds.wirelessnetwork[i].BSSID;
                    insertoui.Value = LookupOuiData(ds.wirelessnetwork[i].wirelessclient[j].clientmac);
                    clientmac.Value = ds.wirelessnetwork[i].wirelessclient[j].clientmac;
                    clientdatasize.Value = ds.wirelessnetwork[i].wirelessclient[j].clientdatasize;
                    clientencryption.Value = ds.wirelessnetwork[i].wirelessclient[j].clientencryption;
                    clientfirsttime.Value = ds.wirelessnetwork[i].wirelessclient[j].firsttime;
                    clientlasttime.Value = ds.wirelessnetwork[i].wirelessclient[j].lasttime;
                    if (ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo != null)
                    {
                        clientgpsmaxalt.Value = ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientmaxalt;
                        clientgpsmaxlat.Value = ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientmaxlat;
                        clientgpsmaxlon.Value = ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientmaxlon;
                        clientgpsminalt.Value = ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientminalt;
                        clientgpsminlat.Value = ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientminlat;
                        clientgpsminlon.Value = ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientminlon;
                    }
                    clientmaxrate.Value = ds.wirelessnetwork[i].wirelessclient[j].clientmaxrate;
                    if (ds.wirelessnetwork[i].wirelessclient[j].clientipaddress != null)
                    {
                        Clientipaddress.Value = ds.wirelessnetwork[i].wirelessclient[j].clientipaddress;
                    }
                    clientmaxseenrate.Value = ds.wirelessnetwork[i].wirelessclient[j].clientmaxseenrate;
                    clientpacketscrypt.Value = ds.wirelessnetwork[i].wirelessclient[j].clientpackets.clientcrypt;
                    clientpacketsdata.Value = ds.wirelessnetwork[i].wirelessclient[j].clientpackets.clientdata;
                    clientpacketsweak.Value = ds.wirelessnetwork[i].wirelessclient[j].clientpackets.clientweak;

                    insertclients.ExecuteNonQuery();

                    //theClientData.Save();
                }
                else
                {
                    clientseen++;
                    DataTableReader thereader = t.CreateDataReader();
                    thereader.Read();
                    //Console.WriteLine("Client Update");
                    updateoui.Value = LookupOuiData(ds.wirelessnetwork[i].wirelessclient[j].clientmac);
                    updateclientdatasize.Value = Convert.ToInt32(thereader["clientdatasize"]) + ds.wirelessnetwork[i].wirelessclient[j].clientdatasize;
                    updateclientencryption.Value = ds.wirelessnetwork[i].wirelessclient[j].clientencryption;
                    IFormatProvider format = new CultureInfo("en-US");
                    string[] expectedformats = { "ddd MMM  d HH:mm:ss yyyy", "ddd MMM d HH:mm:ss yyyy" };
                    string firsttime = thereader["clientfirsttime"].ToString();
                    string lasttime = thereader["clientlasttime"].ToString();
                    DateTime dbfirsttime;
                    DateTime xmlfirsttime;
                    DateTime dblasttime;
                    DateTime xmllasttime;
                    // Wed Mar 29 14:52:56 2006
                        dbfirsttime = DateTime.ParseExact(firsttime, expectedformats, format, DateTimeStyles.AllowWhiteSpaces);
                        xmlfirsttime = DateTime.ParseExact(ds.wirelessnetwork[i].wirelessclient[j].firsttime, expectedformats, format, DateTimeStyles.AllowWhiteSpaces);
                        dblasttime = DateTime.ParseExact(lasttime, expectedformats, format, DateTimeStyles.AllowWhiteSpaces);
                        xmllasttime = DateTime.ParseExact(ds.wirelessnetwork[i].wirelessclient[j].lasttime, expectedformats, format, DateTimeStyles.AllowWhiteSpaces);

                    if (xmlfirsttime < dbfirsttime)
                    {
                        updateclientfirsttime.Value = ds.wirelessnetwork[i].firsttime;
                    }
                    else
                    {
                        updateclientfirsttime.Value = thereader["clientfirsttime"];
                    }
                    if (xmllasttime > dblasttime)
                    {
                        updateclientlasttime.Value = ds.wirelessnetwork[i].lasttime;
                    }
                    else
                    {
                        updateclientlasttime.Value = thereader["clientlasttime"];
                    }

                    //theClientData.Clientfirsttime = ds.wirelessnetwork[i].wirelessclient[j].firsttime;
                    //theClientData.Clientlasttime = ds.wirelessnetwork[i].wirelessclient[j].lasttime;
                    if (ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo != null)
                    {
                        updateclientgpsmaxalt.Value = ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientmaxalt;
                        updateclientgpsmaxlat.Value = ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientmaxlat;
                        updateclientgpsmaxlon.Value = ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientmaxlon;
                        updateclientgpsminalt.Value = ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientminalt;
                        updateclientgpsminlat.Value = ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientminlat;
                        updateclientgpsminlon.Value = ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientminlon;
                    }
                    updateclientmaxrate.Value = ds.wirelessnetwork[i].wirelessclient[j].clientmaxrate;
                    if (ds.wirelessnetwork[i].wirelessclient[j].clientipaddress != null)
                    {
                        updateClientipaddress.Value = ds.wirelessnetwork[i].wirelessclient[j].clientipaddress;
                    }
                    updateclientmaxseenrate.Value = ds.wirelessnetwork[i].wirelessclient[j].clientmaxseenrate;
                    updateclientpacketscrypt.Value = Convert.ToInt32(thereader["clientpacketscrypt"])+ ds.wirelessnetwork[i].wirelessclient[j].clientpackets.clientcrypt;
                    updateclientpacketsdata.Value = Convert.ToInt32(thereader["clientpacketsdata"])+ ds.wirelessnetwork[i].wirelessclient[j].clientpackets.clientdata;
                    updateclientpacketsweak.Value = Convert.ToInt32(thereader["clientpacketsweak"])+ds.wirelessnetwork[i].wirelessclient[j].clientpackets.clientweak;
                    //theClientData.Save();
                    updateclients.ExecuteNonQuery();

                    thereader.Close();
                }

            }
        }
Beispiel #2
0
        private static void AddDataTableNew(detectionrun ds, int i, SQLiteCommand insertdata)
        {
            //insertdata.Parameters["Oui"].Value = LookupOuiData(ds.wirelessnetwork[i].BSSID);
            insertdata.Parameters["Cloaked"].Value = ds.wirelessnetwork[i].cloaked;
            insertdata.Parameters["FirstTime"].Value = ds.wirelessnetwork[i].firsttime;
            insertdata.Parameters["LastTime"].Value = ds.wirelessnetwork[i].lasttime;
            insertdata.Parameters["BSSID"].Value = ds.wirelessnetwork[i].BSSID;
            insertdata.Parameters["Network"].Value = ds.wirelessnetwork[i].number;
            insertdata.Parameters["NetType"].Value = ds.wirelessnetwork[i].type;
            insertdata.Parameters["Channel"].Value = ds.wirelessnetwork[i].channel;
            insertdata.Parameters["Encryption"].Value = ds.wirelessnetwork[i].encryption;
            insertdata.Parameters["Totalpacketscrypt"].Value = ds.wirelessnetwork[i].packets.crypt;
            insertdata.Parameters["Totalpacketsdata"].Value = ds.wirelessnetwork[i].packets.data;
            insertdata.Parameters["Totalpacketsdupeiv"].Value = ds.wirelessnetwork[i].packets.dupeiv;
            insertdata.Parameters["Totalpacketsllc"].Value = ds.wirelessnetwork[i].packets.LLC;
            insertdata.Parameters["Totalpacketstotal"].Value = ds.wirelessnetwork[i].packets.total;
            insertdata.Parameters["Totalpacketsweak"].Value = ds.wirelessnetwork[i].packets.weak;

            insertdata.Parameters["ESSID"].Value = ds.wirelessnetwork[i].SSID ?? "no ssid";
            insertdata.Parameters["GPSMaxLat"].Value = ds.wirelessnetwork[i].gpsinfo.maxlat;
            insertdata.Parameters["GPSMaxLon"].Value = ds.wirelessnetwork[i].gpsinfo.maxlon;
            insertdata.Parameters["GPSMinLat"].Value = ds.wirelessnetwork[i].gpsinfo.minlat;
            insertdata.Parameters["GPSMinLon"].Value = ds.wirelessnetwork[i].gpsinfo.minlon;
            insertdata.ExecuteNonQuery();
        }
Beispiel #3
0
        /*
        private static string CreateOuiData(string bssid)
        {
            string temp;
            string temp2;
            temp=bssid.Substring(0, 8);
            temp2=temp.Replace(':','-');
            ouidata theouitable= new ouidata();
            string  theconnectionstring = "Data Source="+ Application.StartupPath + "\\kismetdata.db;Version=3;New=False;Compress=False;Synchronous=Off";
            theouitable.ConnectionString=theconnectionstring;
            if(theouitable.LoadByPrimaryKey(temp2))
            {
                return theouitable.Company_name;
            }
            else
            {
                return "Unknown";
            }

        }
        */
        private static void AddorUpdateClientsSqlite(detectionrun ds, int i, _Clients theClientData)
        {
            for(int j=0; j<ds.wirelessnetwork[i].wirelessclient.Length; j++)
                {

                    if(!theClientData.LoadByPrimaryKey(ds.wirelessnetwork[i].BSSID, ds.wirelessnetwork[i].wirelessclient[j].clientmac))
                    {
                        theClientData.AddNew();
                        //Console.WriteLine("Client Add");

                        theClientData.Bssid=ds.wirelessnetwork[i].BSSID;
                        theClientData.Oui=LookupOuiData(ds.wirelessnetwork[i].wirelessclient[j].clientmac);
                        theClientData.Clientmac=ds.wirelessnetwork[i].wirelessclient[j].clientmac;
                        theClientData.Clientdatasize=ds.wirelessnetwork[i].wirelessclient[j].clientdatasize;
                        theClientData.Clientencryption=ds.wirelessnetwork[i].wirelessclient[j].clientencryption;
                        theClientData.Clientfirsttime=ds.wirelessnetwork[i].wirelessclient[j].firsttime;
                        theClientData.Clientlasttime=ds.wirelessnetwork[i].wirelessclient[j].lasttime;
                        if(ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo != null)
                        {
                            theClientData.Clientgpsmaxalt=ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientmaxalt;
                            theClientData.Clientgpsmaxlat=ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientmaxlat;
                            theClientData.Clientgpsmaxlon=ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientmaxlon;
                            theClientData.Clientgpsminalt=ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientminalt;
                            theClientData.Clientgpsminlat=ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientminlat;
                            theClientData.Clientgpsminlon=ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientminlon;
                        }
                        theClientData.Clientmaxrate=ds.wirelessnetwork[i].wirelessclient[j].clientmaxrate;
                        if(ds.wirelessnetwork[i].wirelessclient[j].clientipaddress != null)
                        {
                            theClientData.Clientipaddress=ds.wirelessnetwork[i].wirelessclient[j].clientipaddress;
                        }
                        theClientData.Clientmaxseenrate=ds.wirelessnetwork[i].wirelessclient[j].clientmaxseenrate;
                        theClientData.Clientpacketscrypt=ds.wirelessnetwork[i].wirelessclient[j].clientpackets.clientcrypt;
                        theClientData.Clientpacketsdata=ds.wirelessnetwork[i].wirelessclient[j].clientpackets.clientdata;
                        theClientData.Clientpacketsweak=ds.wirelessnetwork[i].wirelessclient[j].clientpackets.clientweak;
                        theClientData.Save();
                    }
                    else
                    {
                        //Console.WriteLine("Client Update");
                        theClientData.Clientdatasize+=ds.wirelessnetwork[i].wirelessclient[j].clientdatasize;
                        theClientData.Clientencryption=ds.wirelessnetwork[i].wirelessclient[j].clientencryption;

                        theClientData.Clientfirsttime=ds.wirelessnetwork[i].wirelessclient[j].firsttime;
                        theClientData.Clientlasttime=ds.wirelessnetwork[i].wirelessclient[j].lasttime;
                        if(ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo != null)
                        {
                            theClientData.Clientgpsmaxalt=ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientmaxalt;
                            theClientData.Clientgpsmaxlat=ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientmaxlat;
                            theClientData.Clientgpsmaxlon=ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientmaxlon;
                            theClientData.Clientgpsminalt=ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientminalt;
                            theClientData.Clientgpsminlat=ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientminlat;
                            theClientData.Clientgpsminlon=ds.wirelessnetwork[i].wirelessclient[j].clientgpsinfo.clientminlon;
                        }
                        theClientData.Clientmaxrate=ds.wirelessnetwork[i].wirelessclient[j].clientmaxrate;
                        if(ds.wirelessnetwork[i].wirelessclient[j].clientipaddress != null)
                        {
                            theClientData.Clientipaddress=ds.wirelessnetwork[i].wirelessclient[j].clientipaddress;
                        }
                        theClientData.Clientmaxseenrate=ds.wirelessnetwork[i].wirelessclient[j].clientmaxseenrate;
                        theClientData.Clientpacketscrypt+=ds.wirelessnetwork[i].wirelessclient[j].clientpackets.clientcrypt;
                        theClientData.Clientpacketsdata+=ds.wirelessnetwork[i].wirelessclient[j].clientpackets.clientdata;
                        theClientData.Clientpacketsweak+=ds.wirelessnetwork[i].wirelessclient[j].clientpackets.clientweak;
                        theClientData.Save();
                    }

                }
        }
Beispiel #4
0
        /*
        private static void ProcessGPSFiles(string theconnectionstring, DirectoryInfo dir, XmlSerializer xs2, gpsdata thegpsdata, gpsfiles thegpsfiles)
        {
            thegpsdata = new gpsdata();
            thegpsfiles = new gpsfiles();
            thegpsfiles.ConnectionString = theconnectionstring;
            thegpsdata.ConnectionString = theconnectionstring;

            foreach (FileInfo f in dir.GetFiles("Kismet*.gps"))
            {
                //Console.WriteLine(dir.ToString());
                FileStream fs2 = new FileStream(f.DirectoryName + "\\" + f.Name, FileMode.Open);
                Console.WriteLine("Processing " + f.Name);
                if (!thegpsfiles.LoadByPrimaryKey(f.Name))
                {
                    try
                    {
                        gpsrun ds2;
                        int thecount;
                        ds2 = (gpsrun) xs2.Deserialize(fs2);

                        thegpsfiles.AddNew();
                        thegpsfiles.Filename = f.Name;
                        thegpsfiles.Save();

                        thecount = ds2.Items.Length;
                        Console.WriteLine(thecount);
                        for (int i = 0; i < thecount; i++)
                        {
                            if (ds2.Items[i].bssid != "GP:SD:TR:AC:KL:OG")
                            {
                                //thegpsdata.Where.Bssid.Value=ds2.Items[i].bssid;
                                //thegpsdata.Where.Bssid.Operator=WhereParameter.Operand.Equal;
                                //Kisdata.Where.BSSID.Value="00:0F:3D:3E:41:9A";
                                //Kisdata.Where.BSSID.Operator=WhereParameter.Operand.Equal;
                                //Console.WriteLine(thegpsdata.Query.GenerateSQL());
                                //thegpsdata.Query.Load();

                                if (!thegpsdata.LoadByPrimaryKey(ds2.Items[i].bssid))
                                {
                                    //Console.WriteLine(i);

                                    thegpsdata.AddNew();
                                    thegpsdata.Bssid = ds2.Items[i].bssid;
                                    thegpsdata.Timesec = ds2.Items[i].timesec;
                                    thegpsdata.Timeusec = ds2.Items[i].timeusec;
                                    thegpsdata.Source = ds2.Items[i].source;
                                    thegpsdata.Lat = ds2.Items[i].lat;
                                    thegpsdata.Lon = ds2.Items[i].lon;
                                    thegpsdata.Alt = ds2.Items[i].alt;
                                    thegpsdata.Speed = ds2.Items[i].spd;
                                    thegpsdata.Heading = ds2.Items[i].heading;
                                    thegpsdata.Fix = ds2.Items[i].fix;
                                    thegpsdata.Signal = ds2.Items[i].signal;
                                    thegpsdata.Quality = ds2.Items[i].quality;
                                    thegpsdata.Noise = ds2.Items[i].noise;
                                    thegpsdata.Save();
                                }
                                else
                                {
                                    if ((thegpsdata.Signal <= ds2.Items[i].signal) && ds2.Items[i].fix=="3")
                                    {
                                        thegpsdata.Timesec = ds2.Items[i].timesec;
                                        thegpsdata.Timeusec = ds2.Items[i].timeusec;
                                        thegpsdata.Source = ds2.Items[i].source;
                                        thegpsdata.Lat = ds2.Items[i].lat;
                                        thegpsdata.Lon = ds2.Items[i].lon;
                                        thegpsdata.Alt = ds2.Items[i].alt;
                                        thegpsdata.Speed = ds2.Items[i].spd;
                                        thegpsdata.Heading = ds2.Items[i].heading;
                                        thegpsdata.Fix = ds2.Items[i].fix;
                                        thegpsdata.Signal = ds2.Items[i].signal;
                                        thegpsdata.Quality = ds2.Items[i].quality;
                                        thegpsdata.Noise = ds2.Items[i].noise;
                                        thegpsdata.Save();
                                    }

                                }
                            }
                        }
                    }
                    catch (Exception)
                    {
                        //Console.WriteLine(ex.ToString());
                        Console.WriteLine("Bad gps file " + f.Name);
                    }
                }
            }
        }
        */
        public static void AddDataTableSqlite(_Data Kisdata, detectionrun ds, int i)
        {
            Kisdata.AddNew();
            //Console.WriteLine("Network add");
            //Console.WriteLine(ds.wirelessnetwork[i].BSSID);

            Kisdata.Oui=LookupOuiData(ds.wirelessnetwork[i].BSSID);
            Kisdata.Cloaked=ds.wirelessnetwork[i].cloaked;
            Kisdata.FirstTime=ds.wirelessnetwork[i].firsttime;
            Kisdata.LastTime=ds.wirelessnetwork[i].lasttime;
            Kisdata.BSSID=ds.wirelessnetwork[i].BSSID;
            Kisdata.Network=ds.wirelessnetwork[i].number;
            Kisdata.NetType=ds.wirelessnetwork[i].type;
            Kisdata.Channel=ds.wirelessnetwork[i].channel;
            Kisdata.Encryption=ds.wirelessnetwork[i].encryption;
            Kisdata.Totalpacketscrypt=ds.wirelessnetwork[i].packets.crypt;
            Kisdata.Totalpacketsdata=ds.wirelessnetwork[i].packets.data;
            Kisdata.Totalpacketsdupeiv=ds.wirelessnetwork[i].packets.dupeiv;
            Kisdata.Totalpacketsllc=ds.wirelessnetwork[i].packets.LLC;
            Kisdata.Totalpacketstotal=ds.wirelessnetwork[i].packets.total;
            Kisdata.Totalpacketsweak=ds.wirelessnetwork[i].packets.weak;

            Kisdata.ESSID = ds.wirelessnetwork[i].SSID ?? "no ssid";
            Kisdata.GPSMaxLat=ds.wirelessnetwork[i].gpsinfo.maxlat;
            Kisdata.GPSMaxLon=ds.wirelessnetwork[i].gpsinfo.maxlon;
            Kisdata.GPSMinLat=ds.wirelessnetwork[i].gpsinfo.minlat;
            Kisdata.GPSMinLon=ds.wirelessnetwork[i].gpsinfo.minlon;
            Kisdata.Save();
        }