KISMACK KISmet Merge And Convert to Kml

Take a script, leave a script - Like the penny tray only different

Postby Scruge » Fri Mar 24, 2006 5:06 am

Glad to hear it worked for you.

I'll be releasing a newer version in near future, maybe by months end if I can work the bugs out of the Bezier curves.
I'll be changing the name as well to reflect its ability to handle NS1 files.

I've been hesitant to get to carried away with to much stuff because GE seems to get highly unstable with upwards of 80k+ coordinates.

The next release will have crop circles (coverage area) and a few other enhancements.
User avatar
Scruge
 
Posts: 1399
Joined: Wed Jan 26, 2005 3:29 pm

Postby Scruge » Fri Mar 24, 2006 6:12 am

Here's a shot of how the crop circles are looking so far.
User avatar
Scruge
 
Posts: 1399
Joined: Wed Jan 26, 2005 3:29 pm

Postby Dutch » Fri Mar 24, 2006 6:23 am

Scruge wrote:Here's a shot of how the crop circles are looking so far.

Uhm.. Is that from the Mel Gibson film "Signs" ? ;)

Dutch
All your answers are belong to Google. SEARCH DAMMIT!
Warning. Warning.
Low C8H10N4O2 level detected. Operator halted....
User avatar
Dutch
 
Posts: 6698
Joined: Fri Mar 05, 2004 12:00 pm
Location: City of Mermaids, Denmark

Postby Scruge » Fri Mar 24, 2006 7:11 am

[quote="Dutch"]Uhm.. Is that from the Mel Gibson film "Signs" ? ]
I know its rather lame, but I'm having a hell of a problem with calculating/smoothing the perimeter of a group of data points and then connecting them with curves. I've got the Beziers working, it just a matter of coming up with new data points. Trig/Calculus weren't my stronger subjects.:)
User avatar
Scruge
 
Posts: 1399
Joined: Wed Jan 26, 2005 3:29 pm

Postby Scruge » Wed Mar 29, 2006 5:55 pm

Got the network boundaries working. This screen shot is of a NS1 file that had approx 800 nets and 25k gps data. Couple that with the curve plots and the kml had about 115k coordinates. It took about 11 total sec to parse the NS1 file and create the KML
Hopefully I'll have it ready to release this weekend.

Interesting to see all the overlapping networks and understand why wireless is crap. :)
User avatar
Scruge
 
Posts: 1399
Joined: Wed Jan 26, 2005 3:29 pm

KLC http://boet.cc/

Postby someone0012 » Thu Aug 17, 2006 3:00 pm

Code: Select all
#!/usr/bin/perl
# copyright 2005 tud.thaunderdog
# minor bugfix and speedup attempt by Dutch 2006

use XML::LibXML;

unless ( @ARGV > 2 ) {
    print "Usage: $0 <input-1st> <input-Nth> <output>\n";
    exit;
}

$start_time = localtime(time);

$out_file_name = pop @ARGV;
@log_files = @ARGV;
$net_num = 0;
$firstlog = 0;
foreach $this_log (@log_files) {
   $firstlog++;
   print "KLV: Reading Logfile $this_log....\n";
   

   $doc = XML::LibXML::Document->new();
   $root = $doc->createElement('html');
   $doc->setDocumentElement($root);
   $body = $doc->createElement('body');
   $root->appendChild($body);
   
   
   
   if (!$xml_body) {
      open(LOG_FILE,"<$this_log");
      @log_file = <LOG_FILE>;
      close(LOG_FILE);
      
      foreach $line (@log_file) {
         if ($line=~/<?xml/) { $xml_head .= $line; }
         elsif ($line=~/<!DOCTYPE/) {$xml_head .= $line; }
         elsif ($line=~/<detection-run/) { $xml_head .= $line; }
         elsif ($line=~/<\/detection-run/) { $xml_foot .= $line; }
      }
      
      open(OUT_FILE,">$out_file_name");
      print OUT_FILE ("$xml_head");
      print OUT_FILE ("$xml_foot");
      close(OUT_FILE);
      $xml_body = 1;
   }
   
      
   $parser = XML::LibXML->new();
   $parser->expand_entities(0);
   $tree = $parser->parse_file($this_log);
   $root = $tree->getDocumentElement;
   
   @networks = $root->getElementsByTagName('wireless-network');
   
   foreach $this_network (@networks) {
   
      $net_bssid = $this_network->getElementsByTagName('BSSID')->[0]->getFirstChild->getData;
      
      $out_parser = XML::LibXML->new();
      $out_parser->expand_entities(0);
      $out_tree = $out_parser->parse_file($out_file_name);
      $out_root = $out_tree->getDocumentElement;
      
      if ( $temp = $out_root->getElementsByTagName('wireless-network') ) { @out_networks = $out_root->getElementsByTagName('wireless-network'); }
      
      $unique = 1;
      
      if ("$firstlog" > "1") {
      if (@out_networks) {

         foreach $this_out_network (@out_networks) {
            
            $out_net_bssid = $this_out_network->getElementsByTagName('BSSID')->[0]->getFirstChild->getData;
            
            if ( "$net_bssid" eq "$out_net_bssid" ) {
               undef $unique;
               $out_net = $this_out_network;
               last;
            }
      
         } # end foreach $this_out_network
      
       } # end if there are networks in out file
      }
      if ($unique) {
         print "KLV: Merging $net_bssid  -  $net_num - $firstlog\n";
         
         ## Is this faster?...
         #$net_num = 0;
         #foreach $this_out_network (@out_networks) {
         #   
         #   $this_network_xml = $this_out_network->toString;
         #   if ( $this_network_xml =~ /<wireless-network number="\d+"/ ) {
         #      $net_num++;
         #      $this_network_xml=~ s/<wireless-network number="\d+"/<wireless-network number="$net_num"/;
         #   } else {
         #      $networks .= "\n$this_network_xml";
         #   }
         #}
         #$this_network_xml = $this_network->toString;
         #$networks .= "\n$this_network_xml";
         #
         ## ...Or is this?
          $net_num++;
          $this_network_xml = $this_network->toString;
          $this_network_xml=~ s/<wireless-network number="\d+"/  <wireless-network number="$net_num"/;
          $networks .= "\n$this_network_xml";
         
         
         
      } else {
         print "KLV: Merging $net_bssid  -  Updated\n";
         undef $networks;
         undef $gps;
         
         $net_packets_LLC = $this_network->getElementsByTagName('LLC')->[0]->getFirstChild->getData;
         $out_net_packets_LLC = $out_net->getElementsByTagName('LLC')->[0]->getFirstChild->getData;
         $net_packets_LLC += $out_net_packets_LLC;
         
         $net_packets_data = $this_network->getElementsByTagName('data')->[0]->getFirstChild->getData;
         $out_net_packets_data = $out_net->getElementsByTagName('data')->[0]->getFirstChild->getData;
         $net_packets_data += $out_net_packets_data;
         
         $net_packets_crypt = $this_network->getElementsByTagName('crypt')->[0]->getFirstChild->getData;
         $out_net_packets_crypt = $out_net->getElementsByTagName('crypt')->[0]->getFirstChild->getData;
         $net_packets_crypt += $out_net_packets_crypt;
         
         $net_packets_weak = $this_network->getElementsByTagName('weak')->[0]->getFirstChild->getData;
         $out_net_packets_weak = $out_net->getElementsByTagName('weak')->[0]->getFirstChild->getData;
         $net_packets_weak += $out_net_packets_weak;
         
         $net_packets_dupeiv = $this_network->getElementsByTagName('dupeiv')->[0]->getFirstChild->getData;
         $out_net_packets_dupeiv = $out_net->getElementsByTagName('dupeiv')->[0]->getFirstChild->getData;
         $net_packets_dupeiv += $out_net_packets_dupeiv;
         
         $net_packets_total = $this_network->getElementsByTagName('total')->[0]->getFirstChild->getData;
         $out_net_packets_total = $out_net->getElementsByTagName('total')->[0]->getFirstChild->getData;
         $net_packets_total += $out_net_packets_total;
         
         $net_packets_datasize = $this_network->getElementsByTagName('datasize')->[0]->getFirstChild->getData;
         $out_net_packets_datasize = $out_net->getElementsByTagName('datasize')->[0]->getFirstChild->getData;
         $net_packets_datasize += $out_net_packets_datasize;
         
         if ( ( $temp = $this_network->getElementsByTagName('min-lat')->[0] ) && ( $temp = $out_net->getElementsByTagName('min-lat')->[0] ) ) {
            $gps = 1;
            
            $net_gps_min_lat = $this_network->getElementsByTagName('min-lat')->[0]->getFirstChild->getData;
            $out_net_gps_min_lat = $out_net->getElementsByTagName('min-lat')->[0]->getFirstChild->getData;
            if ( $net_gps_min_lat > $out_net_gps_min_lat ) { $net_gps_min_lat = $out_net_gps_min_lat; }
            
            $net_gps_min_lon = $this_network->getElementsByTagName('min-lon')->[0]->getFirstChild->getData;
            $out_net_gps_min_lon = $out_net->getElementsByTagName('min-lon')->[0]->getFirstChild->getData;
            if ( $net_gps_min_lon > $out_net_gps_min_lon ) { $net_gps_min_lon = $out_net_gps_min_lon; }
            
            $net_gps_min_alt = $this_network->getElementsByTagName('min-alt')->[0]->getFirstChild->getData;
            $out_net_gps_min_alt = $out_net->getElementsByTagName('min-alt')->[0]->getFirstChild->getData;
            if ( $net_gps_min_alt > $out_net_gps_min_alt ) { $net_gps_min_alt = $out_net_gps_min_alt; }
            
            $net_gps_min_spd = $this_network->getElementsByTagName('min-spd')->[0]->getFirstChild->getData;
            $out_net_gps_min_spd = $out_net->getElementsByTagName('min-spd')->[0]->getFirstChild->getData;
            if ( $net_gps_min_spd > $out_net_gps_min_spd ) { $net_gps_min_spd = $out_net_gps_min_spd; }
            
            $net_gps_max_lat = $this_network->getElementsByTagName('max-lat')->[0]->getFirstChild->getData;
            $out_net_gps_max_lat = $out_net->getElementsByTagName('max-lat')->[0]->getFirstChild->getData;
            if ( $net_gps_max_lat < $out_net_gps_max_lat ) { $net_gps_max_lat = $out_net_gps_max_lat; }
            
            $net_gps_max_lon = $this_network->getElementsByTagName('max-lon')->[0]->getFirstChild->getData;
            $out_net_gps_max_lon = $out_net->getElementsByTagName('max-lon')->[0]->getFirstChild->getData;
            if ( $net_gps_max_lon < $out_net_gps_max_lon ) { $net_gps_max_lon = $out_net_gps_max_lon; }
            
            $net_gps_max_alt = $this_network->getElementsByTagName('max-alt')->[0]->getFirstChild->getData;
            $out_net_gps_max_alt = $out_net->getElementsByTagName('max-alt')->[0]->getFirstChild->getData;
            if ( $net_gps_max_alt < $out_net_gps_max_alt ) { $net_gps_max_alt = $out_net_gps_max_alt; }
            
            $net_gps_max_spd = $this_network->getElementsByTagName('max-spd')->[0]->getFirstChild->getData;
            $out_net_gps_max_spd = $out_net->getElementsByTagName('max-spd')->[0]->getFirstChild->getData;
            if ( $net_gps_max_spd < $out_net_gps_max_spd ) { $net_gps_max_spd = $out_net_gps_max_spd; }
            
         }
         
         foreach $this_out_network (@out_networks) {
            $this_network_xml = $this_out_network->toString;
            if ($this_out_network eq $out_net) {
               $this_network_xml=~ s/<LLC>\d*<\/LLC>/<LLC>$net_packets_LLC<\/LLC>/;
               $this_network_xml=~ s/<data>\d*<\/data>/<data>$net_packets_data<\/data>/;
               $this_network_xml=~ s/<crypt>\d*<\/crypt>/<crypt>$net_packets_crypt<\/crypt>/;
               $this_network_xml=~ s/<weak>\d*<\/weak>/<weak>$net_packets_weak<\/weak>/;
               $this_network_xml=~ s/<dupeiv>\d*<\/dupeiv>/<dupeiv>$net_packets_dupeiv<\/dupeiv>/;
               $this_network_xml=~ s/<total>\d*<\/total>/<total>$net_packets_total<\/total>/;
               $this_network_xml=~ s/<datasize>\d*<\/datasize>/<datasize>$net_packets_datasize<\/datasize>/;
               
               if ($gps) {
                  $this_network_xml=~ s/<min-lat>\d*\.\d*<\/min-lat>/<min-lat>$net_gps_min_lat<\/min-lat>/;
                  $this_network_xml=~ s/<min-lon>\d*\.\d*<\/min-lon>/<min-lon>$net_gps_min_lon<\/min-lon>/;
                  $this_network_xml=~ s/<min-alt>\d*\.\d*<\/min-alt>/<min-alt>$net_gps_min_alt<\/min-alt>/;
                  $this_network_xml=~ s/<min-spd>\d*\.\d*<\/min-spd>/<min-spd>$net_gps_min_spd<\/min-spd>/;
                  $this_network_xml=~ s/<max-lat>\d*\.\d*<\/max-lat>/<max-lat>$net_gps_max_lat<\/max-lat>/;
                  $this_network_xml=~ s/<max-lon>\d*\.\d*<\/max-lon>/<max-lon>$net_gps_max_lon<\/max-lon>/;
                  $this_network_xml=~ s/<max-alt>\d*\.\d*<\/max-alt>/<max-alt>$net_gps_max_alt<\/max-alt>/;
                  $this_network_xml=~ s/<max-spd>\d*\.\d*<\/max-spd>/<max-spd>$net_gps_max_spd<\/max-spd>/;
               }
               
               
               $client_num = @net_clients = $this_network->getElementsByTagName('wireless-client');
               undef $client_num;
               if (@net_clients) {
               
                  while ($this_network_xml=~ /.*client.*\n/) { $this_network_xml=~ s/.*client.*\n//; }
                  $this_network_xml=~ s/.*<\/wireless-network>.*//;
                  
                  
                  foreach $this_client (@net_clients) {
                     $unique = 1;
                     $client_mac = $this_client->getElementsByTagName('client-mac')->[0]->getFirstChild->getData;
                     $out_net_clients_total = @out_net_clients = $out_net->getElementsByTagName('wireless-client');
                     
                     foreach $out_this_client (@out_net_clients) {
                        $out_client_mac = $out_this_client->getElementsByTagName('client-mac')->[0]->getFirstChild->getData;
                        
                        if ( "$client_mac" eq "$out_client_mac" ) {
                           undef $unique;
                           $out_client = $this_out_client;
                           last;
                        }

                     }
                     
                     if ($unique) {
                        print "     Client  $client_mac\n";
                        $this_client_xml = $this_client->toString;
                        $client_num++;
                        $this_client_xml=~ s/<wireless-client number="\d+"/<wireless-client number="$client_num"/;
                        
                     } else {
                        print "     Client  $client_mac  -  Updated\n";
                        undef $gps;
                        $client_packets_data = $this_client->getElementsByTagName('client-data')->[0]->getFirstChild->getData;
                        $out_net_packets_data = $out_net->getElementsByTagName('client-data')->[0]->getFirstChild->getData;
                        $client_packets_data += $out_net_packets_data;
         
                        $client_packets_crypt = $this_client->getElementsByTagName('client-crypt')->[0]->getFirstChild->getData;
                        $out_net_packets_crypt = $out_net->getElementsByTagName('client-crypt')->[0]->getFirstChild->getData;
                        $client_packets_crypt += $out_net_packets_crypt;
         
                        $client_packets_weak = $this_client->getElementsByTagName('client-weak')->[0]->getFirstChild->getData;
                        $out_net_packets_weak = $out_net->getElementsByTagName('client-weak')->[0]->getFirstChild->getData;
                        $client_packets_weak += $out_net_packets_weak;
                        
                        $client_packets_datasize = $this_client->getElementsByTagName('client-datasize')->[0]->getFirstChild->getData;
                        $out_client_packets_datasize = $out_net->getElementsByTagName('client-datasize')->[0]->getFirstChild->getData;
                        $client_packets_datasize += $out_cliet_packets_datasize;
                        
                        if ( ( $temp = $this_client->getElementsByTagName('client-min-lat')->[0] ) && ( $temp = $out_net->getElementsByTagName('client-min-lat')->[0] ) ) {
                           $gps = 1;
            
                           $client_gps_min_lat = $this_client->getElementsByTagName('client-min-lat')->[0]->getFirstChild->getData;
                           $out_net_gps_min_lat = $out_net->getElementsByTagName('client-min-lat')->[0]->getFirstChild->getData;
                           if ( $client_gps_min_lat > $out_net_gps_min_lat ) { $client_gps_min_lat = $out_net_gps_min_lat; }
                     
                           $client_gps_min_lon = $this_client->getElementsByTagName('client-min-lon')->[0]->getFirstChild->getData;
                           $out_net_gps_min_lon = $out_net->getElementsByTagName('client-min-lon')->[0]->getFirstChild->getData;
                           if ( $client_gps_min_lon > $out_net_gps_min_lon ) { $client_gps_min_lon = $out_net_gps_min_lon; }
            
                           $client_gps_min_alt = $this_client->getElementsByTagName('client-min-alt')->[0]->getFirstChild->getData;
                           $out_net_gps_min_alt = $out_net->getElementsByTagName('client-min-alt')->[0]->getFirstChild->getData;
                           if ( $client_gps_min_alt > $out_net_gps_min_alt ) { $client_gps_min_alt = $out_net_gps_min_alt; }
            
                           $client_gps_min_spd = $this_client->getElementsByTagName('client-min-spd')->[0]->getFirstChild->getData;
                           $out_net_gps_min_spd = $out_net->getElementsByTagName('client-min-spd')->[0]->getFirstChild->getData;
                           if ( $client_gps_min_spd > $out_net_gps_min_spd ) { $client_gps_min_spd = $out_net_gps_min_spd; }
            
                           $client_gps_max_lat = $this_client->getElementsByTagName('client-max-lat')->[0]->getFirstChild->getData;
                           $out_net_gps_max_lat = $out_net->getElementsByTagName('client-max-lat')->[0]->getFirstChild->getData;
                           if ( $client_gps_max_lat < $out_net_gps_max_lat ) { $client_gps_max_lat = $out_net_gps_max_lat; }
            
                           $client_gps_max_lon = $this_client->getElementsByTagName('client-max-lon')->[0]->getFirstChild->getData;
                           $out_net_gps_max_lon = $out_net->getElementsByTagName('client-max-lon')->[0]->getFirstChild->getData;
                           if ( $client_gps_max_lon < $out_net_gps_max_lon ) { $client_gps_max_lon = $out_net_gps_max_lon; }
            
                           $client_gps_max_alt = $this_client->getElementsByTagName('client-max-alt')->[0]->getFirstChild->getData;
                           $out_net_gps_max_alt = $out_net->getElementsByTagName('client-max-alt')->[0]->getFirstChild->getData;
                           if ( $client_gps_max_alt < $out_net_gps_max_alt ) { $client_gps_max_alt = $out_net_gps_max_alt; }
            
                           $client_gps_max_spd = $this_client->getElementsByTagName('client-max-spd')->[0]->getFirstChild->getData;
                           $out_net_gps_max_spd = $out_net->getElementsByTagName('client-max-spd')->[0]->getFirstChild->getData;
                           if ( $client_gps_max_spd < $out_net_gps_max_spd ) { $client_gps_max_spd = $out_net_gps_max_spd; }
                        } # enf client if gps
                        
                        $this_client_xml = $this_client->toString;
                        $this_client_xml=~ s/<client-data>\d*<\/client-data>/<client-data>$client_packets_data<\/client-data>/;
                        $this_client_xml=~ s/<client-crypt>\d*<\/client-crypt>/<client-crypt>$client_packets_crypt<\/client-crypt>/;
                        $this_client_xml=~ s/<client-weak>\d*<\/client-weak>/<client-weak>$client_packets_weak<\/client-weak>/;
                        $this_client_xml=~ s/<client-datasize>\d*<\/client-datasize>/<client-datasize>$client_packets_datasize<\/client-datasize>/;
                        if ($gps) {
                           $this_client_xml=~ s/<client-min-lat>\d*\.\d*<\/client-min-lat>/<client-min-lat>$client_gps_min_lat<\/client-min-lat>/;
                           $this_client_xml=~ s/<client-min-lon>\d*\.\d*<\/client-min-lon>/<client-min-lon>$client_gps_min_lon<\/client-min-lon>/;
                           $this_client_xml=~ s/<client-min-alt>\d*\.\d*<\/client-min-alt>/<client-min-alt>$client_gps_min_alt<\/client-min-alt>/;
                           $this_client_xml=~ s/<client-min-spd>\d*\.\d*<\/client-min-spd>/<client-min-spd>$client_gps_min_spd<\/client-min-spd>/;
                           $this_client_xml=~ s/<client-max-lat>\d*\.\d*<\/client-max-lat>/<client-max-lat>$client_gps_max_lat<\/client-max-lat>/;
                           $this_client_xml=~ s/<client-max-lon>\d*\.\d*<\/client-max-lon>/<client-max-lon>$client_gps_max_lon<\/client-max-lon>/;
                           $this_client_xml=~ s/<client-max-alt>\d*\.\d*<\/client-max-alt>/<client-max-alt>$client_gps_max_alt<\/client-max-alt>/;
                           $this_client_xml=~ s/<client-max-spd>\d*\.\d*<\/client-max-spd>/<client-max-spd>$client_gps_max_spd<\/client-max-spd>/;
                        } # end gps
                        $client_num++;
                        $this_client_xml=~ s/<wireless-client number="\d+"/<wireless-client number="$client_num"/;
                                                
                        
                        
                     } # end if client unique
                     
                     $this_network_xml .= "$this_client_xml\n";
                     
                  } # end foreach client this net
                  $this_network_xml.= "</wireless-network>\n";
               } # end if net has clients
               
               $networks .= "\n$this_network_xml";
               
            } else {
               $networks .= "\n$this_network_xml";
            } # end if found unique net
         } # end foreach out network
         
      } # end if net unique
               
      open(OUT_FILE,">$out_file_name");
      print OUT_FILE ("$xml_head");
      print OUT_FILE ("$networks\n");
      print OUT_FILE ("$xml_foot\n");
      close(OUT_FILE);
         
      

      
   } # end foreach $this_network
   
} # end foreach $this_log

$end_time = localtime(time);

print "KLV: Combined Logs to $out_file_name\n";
print "KLV: Operation Started: $start_time\n";
print "KLV: Operation Ended:   $end_time\n";
print "KLV: Done\n";
# EOF


Whoa, I'll get my site back up...sine my code is actually being used...
Please referance http://boet.cc/ nothing there yet, but I'll get it posted back there.

Please be sure you referance the new contact when distributing this. Thanks!
someone0012
Mini Stumbler
 
Posts: 4
Joined: Tue Sep 07, 2004 3:17 pm

Postby G8tK33per » Thu Aug 17, 2006 6:22 pm

...reference, maybe?
"Make yourselves sheep and the wolves will eat you." ~ Benjamin Franklin

Sons of Confederate Veterans
User avatar
G8tK33per
 
Posts: 6078
Joined: Fri May 09, 2003 4:00 am
Location: Goomba's Booty Boardwalk

Previous

Return to Scripts

Who is online

Users browsing this forum: No registered users and 1 guest