Page 3 of 3

PostPosted: Fri Mar 24, 2006 5:06 am
by Scruge
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.

PostPosted: Fri Mar 24, 2006 6:12 am
by Scruge
Here's a shot of how the crop circles are looking so far.

PostPosted: Fri Mar 24, 2006 6:23 am
by Dutch
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

PostPosted: Fri Mar 24, 2006 7:11 am
by Scruge
[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.:)

PostPosted: Wed Mar 29, 2006 5:55 pm
by Scruge
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. :)

KLC http://boet.cc/

PostPosted: Thu Aug 17, 2006 3:00 pm
by someone0012
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!

PostPosted: Thu Aug 17, 2006 6:22 pm
by G8tK33per
...reference, maybe?