--- /dev/null
+#!/usr/bin/perl
+
+use Net::Kismet;
+use DBI;
+
+my $dbh = DBI->connect("DBI:mysql:database=wireless;host=127.0.0.1",
+ "USERNAME", "PASSWORD",
+ {'RaiseError' => 1});
+
+$k = new Net::Kismet('localhost', 2501);
+$k->register('SSID', \&ssidhandler, '*');
+$k->register('BSSID', \&bssidhandler, '*');
+$k->register('CLIENT', \&clienthandler, '*');
+#$k->timer_register(\&timer, 5);
+KismetRun($k);
+
+
+sub ssidhandler {
+ my $vars = shift;
+ my $ssid = "<cloked>";
+ if ($vars->{'ssid'} eq "") {
+ $ssid = "<CLOKED>";
+ } else {
+ $ssid = $vars->{'ssid'};
+ }
+ #print $vars->{'mac'}."\n";
+ #print "lt: ".$vars->{'lasttime'}."\n";
+ #print "INSERT INTO ssid VALUES ('". $ssid. "', '" . $vars->{'mac'} . "', " . $vars->{'lasttime'} . ")";
+ #print "\n";
+ my $sth = $dbh->prepare("SELECT LASTSEEN from ssid where SSID=? and MAC='" . $vars->{'mac'} . "'");
+ $sth->execute($ssid);
+ if ($sth->rows() > 0) {
+ $sth = $dbh->prepare("UPDATE ssid set LASTSEEN=" . $vars->{'lasttime'} . " where SSID=? and MAC = '" . $vars->{'mac'} . "'");
+ } else {
+ $sth = $dbh->prepare("INSERT INTO ssid VALUES (?, '" . $vars->{'mac'} . "', " . $vars->{'lasttime'} . ")");
+ }
+ $sth->execute($ssid);
+}
+
+sub bssidhandler {
+ my $vars = shift;
+ #print $vars->{'bssid'}."\n";
+ #print "lt: ".$vars->{'lasttime'}."\n";
+ #print "INSERT INTO bssid VALUES ('". $vars->{'bssid'}. "', " . $vars->{'lasttime'} . ")";
+ my $sth = $dbh->prepare("SELECT LASTSEEN from bssid where BSSID='" . $vars->{'bssid'} . "'");
+ $sth->execute();
+ if ($sth->rows() > 0) {
+ $dbh->do("UPDATE bssid set LASTSEEN=" . $vars->{'lasttime'} . " where BSSID = '" . $vars->{'bssid'} . "'");
+ } else {
+ $dbh->do("INSERT INTO bssid VALUES ('". $vars->{'bssid'}. "', " . $vars->{'lasttime'} . ")");
+ }
+ #$dbh->do("INSERT INTO bssid VALUES ('". $vars->{'bssid'}. "', " . $vars->{'lasttime'} . ")");
+}
+
+sub clienthandler {
+ my $vars = shift;
+ #print $vars->{'bssid'}."\n";
+ #print $vars->{'mac'}."\n";
+ #print "lt: ".$vars->{'lasttime'}."\n";
+ my $sth = $dbh->prepare("SELECT LASTSEEN from clients where BSSID='". $vars->{'bssid'}. "' and MAC='" . $vars->{'mac'} . "'");
+ $sth->execute();
+ if ($sth->rows() > 0) {
+ $dbh->do("UPDATE clients set LASTSEEN=" . $vars->{'lasttime'} . " where BSSID = '". $vars->{'bssid'}. "' and MAC = '" . $vars->{'mac'} . "'");
+ } else {
+ $dbh->do("INSERT INTO clients VALUES ('". $vars->{'bssid'}. "', '" . $vars->{'mac'} . "', " . $vars->{'lasttime'} . ")");
+ #$dbh->do("INSERT INTO clients VALUES ('". $ssid. "', '" . $vars->{'mac'} . "', " . $vars->{'lasttime'} . ")");
+ }
+
+ #print "INSERT INTO clients VALUES ('". $vars->{'bssid'}. "', '" . $vars->{'mac'} . "', " . $vars->{'lasttime'} . ")";
+ #print "\n";
+ #$dbh->do("INSERT INTO clients VALUES ('". $vars->{'bssid'}. "', '" . $vars->{'mac'} . "', " . $vars->{'lasttime'} . ")");
+}
+
+
+
+sub timer {
+ print "<<TIMER CALLBACK CALLED>>\n";
+ # check for lame threads and kill if hung
+ my $rin = "";
+ vec ( $rin, fileno ("PREAD00"), 1 ) = 1;
+ #while (1) {
+ if ( $nfound = select($rout=$rin, undef, undef, 0) ) {
+ $line = <PREAD00>;
+ #print "TIMER: $line";
+ }
+ #}
+}
+
+sub print_hash {
+ my $href = shift;
+ while( my( $key, $val ) = each %{$href} ) {
+ print "$key\t=>$val\n";
+ }
+}