Haha, fixed some sillyness with the client in c.
[soho-sigint.git] / client-wifi / client-old / kismet.pl
diff --git a/client-wifi/client-old/kismet.pl b/client-wifi/client-old/kismet.pl
new file mode 100755 (executable)
index 0000000..c784ee8
--- /dev/null
@@ -0,0 +1,94 @@
+#!/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";
+    }
+}