NetStumbler.org Forums

Go Back   NetStumbler.org Forums > NetStumbler Community > Scripts
Register Search Today's Posts Mark Forums Read

Reply
 
LinkBack Thread Tools Display Modes
Old 01-06-2005   #1 (permalink)
janolap1
Registered Member
 
Join Date: Nov 2004
Posts: 9
Talking Parsing ns1 files in PHP - Opensource

Hi,

Obviously, some people want to display the ns1 files from netstumbler on the internet... (enhancing my webstumbler script (Link on netstumbler forums) )
So I'm trying to create a script to do this.
I'm working on it but still have some problems.

This is the script :
PHP Code:
<?php
$jump
=0;

function 
dwSignature($s,$offset)
//4 dwSignature char[4] File Signature ('NetS') 
{
global 
$jump;
$jump=$jump+4;
return 
substr($s,$offset,4);
}

function 
dwFileVer($s,$offset)
//4 dwFileVer uint32 File Format Version 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
ApCount($s,$offset)
//4 ApCount uint32 Number of APINFO entries that follow 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
SSIDLength($s,$offset)
//1 SSIDLength uint8 Length of SSID 
{
global 
$jump;
$jump=$jump+1;
return 
hexdec(bin2hex($s[$offset]));
}

function 
SSID($s,$length,$offset)
//SSIDLength SSID char[] SSID (SSIDLength characters, no terminating null) 
{
global 
$jump;
$jump=$jump+$length;
return 
substr($s,$offset,$length);
}

function 
BSSID($s$offset)
//6 BSSID uint8[6] BSSID 
{
global 
$jump;
$jump=$jump+6;
return 
hexdec(bin2hex($s[0+$offset]))&":"&hexdec(bin2hex($s[1+$offset]))&":"&hexdec(bin2hex($s[2+$offset]))&":"&hexdec(bin2hex($s[3+$offset]))&":"&hexdec(bin2hex($s[4+$offset]))&":"&hexdec(bin2hex($s[5+$offset]));
}

function 
MaxSignal($s$offset)
//4 MaxSignal int32 Maximum reported signal level, dBm 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
MinNoise($s,$offset)
// 4 MinNoise int32 Minimum reported noise level, dBm 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
MaxSNR($s,$offset)
// 4 MaxSNR int32 Maximum reported signal-to-noise ratio, dB 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
Flags($s,$offset)
// 4 Flags uint32 802.11 capability flags 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
BeaconInterval ($s,$offset)
// 4 BeaconInterval uint32 Beacon Interval, Kµs 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
FirstSeen ($s,$offset)
// 8 FirstSeen FILETIME Time first seen 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))&hexdec(bin2hex($s[1+$offset]))&":"&hexdec(bin2hex($s[2+$offset]))&hexdec(bin2hex($s[3+$offset]))&":"&hexdec(bin2hex($s[4+$offset]))&":"&hexdec(bin2hex($s[5+$offset]))&":"&hexdec(bin2hex($s[6+$offset]))&hexdec(bin2hex($s[7+$offset]));
}

function 
LastSeen ($s,$offset)
// 8 LastSeen FILETIME Time last seen 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))&":"&hexdec(bin2hex($s[1+$offset]))&":"&hexdec(bin2hex($s[2+$offset]))&":"&hexdec(bin2hex($s[3+$offset]))&":"&hexdec(bin2hex($s[4+$offset]))&":"&hexdec(bin2hex($s[5+$offset]))&":"&hexdec(bin2hex($s[6+$offset]))&":"&hexdec(bin2hex($s[7+$offset]));
}

function 
BestLat ($s,$offset)
// 8 BestLat double Estimated Latitude 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))&":"&hexdec(bin2hex($s[1+$offset]))&":"&hexdec(bin2hex($s[2+$offset]))&":"&hexdec(bin2hex($s[3+$offset]))&":"&hexdec(bin2hex($s[4+$offset]))&":"&hexdec(bin2hex($s[5+$offset]))&":"&hexdec(bin2hex($s[6+$offset]))&":"&hexdec(bin2hex($s[7+$offset]));
}

function 
BestLong ($s,$offset)
// 8 BestLong double Estimated Longitude 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))&":"&hexdec(bin2hex($s[1+$offset]))&":"&hexdec(bin2hex($s[2+$offset]))&":"&hexdec(bin2hex($s[3+$offset]))&":"&hexdec(bin2hex($s[4+$offset]))&":"&hexdec(bin2hex($s[5+$offset]))&":"&hexdec(bin2hex($s[6+$offset]))&":"&hexdec(bin2hex($s[7+$offset]));
}

function 
DataCount ($s,$offset)
// 4 DataCount uint32 Number of APDATA entries that follow 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
ApData ($s,$length$offset)
// Variable ApData APDATA[] DataCount APDATA entries 
{
global 
$jump;
$jump=$jump+$length;
return 
substr($s,$offset,$length);
}

function 
NameLength ($s$offset)
// 1 NameLength uint8 Length of Name 
{
global 
$jump;
$jump=$jump+1;
return 
hexdec(bin2hex($s[0+$offset]));
}

function 
Name ($s$length$offset)
// NameLength Name char[] Name (NameLength characters, no terminating null) 
{
global 
$jump;
$jump=$jump+$length;
return 
substr($s,$offset,$length);
}

function 
Channels ($s$offset)
// 8 Channels uint64 Bit field indicating channel activity 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]))+255*255*255*255*hexdec(bin2hex($s[4+$offset]))+255*255*255*255*255*hexdec(bin2hex($s[5+$offset]))+255*255*255*255*255*255*hexdec(bin2hex($s[6+$offset]))+255*255*255*255*255*255*255*hexdec(bin2hex($s[7+$offset]));
}

function 
LastChannel ($s$offset)
// 4 LastChannel uint32 Last reported channel 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
IPAddress ($s$offset)
// 4 IPAddress uint32 IP Address 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset])).":".hexdec(bin2hex($s[1+$offset])).":".hexdec(bin2hex($s[2+$offset])).":".hexdec(bin2hex($s[3+$offset]));
}

function 
MinSignal ($s$offset)
// 4 MinSignal int32 Minimum reported signal level, dBm 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
MaxNoise ($s$offset)
// 4 MaxNoise int32 Maximum reported noise level, dBm 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
DataRate ($s$offset)
// 4 DataRate uint32 Highest reported data rate, units of 100 kbps 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
IPSubnet ($s$offset)
// 4 IPSubnet uint32 IP Subnet address 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset])).":".hexdec(bin2hex($s[1+$offset])).":".hexdec(bin2hex($s[2+$offset])).":".hexdec(bin2hex($s[3+$offset]));
}

function 
IPMask ($s$offset)
// 4 IPMask uint32 IP Subnet mask 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset])).":".hexdec(bin2hex($s[1+$offset])).":".hexdec(bin2hex($s[2+$offset])).":".hexdec(bin2hex($s[3+$offset]));
}

function 
ApFlags ($s$offset)
// 4 ApFlags uint32 Miscellaneous Flags 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
IELength ($s$offset)
// 4 IELength uint32 Number of bytes that follow (0 except when using NDIS 5.1 with a WPA capable driver) 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
InformationElements ($s,$length$offset)
// IELength InformationElements uint8[] 802.11 Information Elements 
{
global 
$jump;
$jump=$jump+$length;
return 
substr($s,$offset,$length);
}

function 
APInfo($s$offset$number)
//Variable ApInfo APINFO[] ApCount APINFO entries 
{
global 
$jump;
for (
$i=1$i<=$number$i++)
{
global 
$jump;
echo 
$jump;
$SSIDLength SSIDLength($s,$jump);
echo 
"SSIDLength = ".$SSIDLength;
echo 
"<br>";
echo 
"SSID = ".SSID($s$SSIDLength$jump);
echo 
"<br>";
echo 
"BSSID = ".BSSID($s,$jump);
echo 
"<br>";
echo 
"MaxSignal = ".MaxSignal($s,$jump);
echo 
"<br>";
echo 
"MinNoise = ".MinNoise($s,$jump);
echo 
"<br>";
echo 
"MaxSNR = ".MaxSNR($s,$jump);
echo 
"<br>";
echo 
"Flags = ".Flags($s,$jump);
echo 
"<br>";
echo 
"BeaconInterval = ".BeaconInterval($s,$jump);
echo 
"<br>";
echo 
"FirstSeen = ".FirstSeen($s,$jump);
echo 
"<br>";
echo 
"LastSeen = ".LastSeen($s,$jump);
echo 
"<br>";
echo 
"BestLat = ".BestLat($s,$jump);
echo 
"<br>";
echo 
"BestLong = ".BestLong($s,$jump);
echo 
"<br>";
$DataCount DataCount($s,$jump);
echo 
"DataCount = ".$DataCount;
echo 
"<br>";
echo 
"ApData = ".ApData($s$DataCount$jump);
echo 
"<br>";
$NameLength NameLength($s,$jump);
echo 
"NameLength = ".$NameLength;
echo 
"<br>";
echo 
"Name = ".Name($s$NameLength$jump);
echo 
"<br>";
echo 
"Channels = ".Channels($s,$jump);
echo 
"<br>";
echo 
"LastChannel = ".LastChannel($s,$jump);
echo 
"<br>";
echo 
"IPAddress = ".IPAddress($s,$jump);
echo 
"<br>";
echo 
"MinSignal = ".MinSignal($s,$jump);
echo 
"<br>";
echo 
"MaxNoise = ".MaxNoise($s,$jump);
echo 
"<br>";
echo 
"DataRate = ".DataRate($s,$jump);
echo 
"<br>";
echo 
"IPSubnet = ".IPSubnet($s,$jump);
echo 
"<br>";
echo 
"IPMask = ".IPMask($s,$jump);
echo 
"<br>";
echo 
"ApFlags = ".ApFlags($s,$jump);
echo 
"<br>";
$IELength IELength($s,$jump);
echo 
"IELength = ".$IELength;
echo 
"<br>";
echo 
"InformationElements = ".InformationElements($s$IELength$jump);
echo 
"<hr>";
}
}

// Read the file and put the content in a string
$filename "netstumbler.ns1";
$handle fopen ($filename"r");
$contents fread ($handlefilesize ($filename));
fclose ($handle);

echo 
"Signature of the file = ".dwSignature($contents,$jump);
echo 
"<br>";
echo 
"File version = ".dwFileVer($contents,$jump);
echo 
"<br>";
$APCount ApCount($contents,$jump);
echo 
" Number of AP = ".$APCount;
echo 
"<hr>";
echo 
APInfo($contents,$jump,$APCount);

php?>
Just put the script on your webserver, a ns1 file called netstumbler.ns1 and call the script.

The problems are :
- Some info are not correctly converted
- I only display 1 AP (because of IELength)

I you want to enhance this script... contact me to help me.

It's GPL so do what you want with it...

Cordially

Jean CARTIER
janolap1 is offline   Reply With Quote
Old 01-06-2005   #2 (permalink)
The Others
PeaceDriver
 
The Others's Avatar
 
Join Date: Apr 2002
Location: Dos Palabras, Mandoras
Posts: 2,920
Quote:
Originally Posted by janolap1
I only display 1 AP (because of IELength)
That was the problem I had. Never mind, the dtauls shown about that one access point were nice
__________________
all good ends all

?u=273
The Others is offline   Reply With Quote
Old 01-13-2005   #3 (permalink)
janolap1
Registered Member
 
Join Date: Nov 2004
Posts: 9
Arrow Got it !

Hi,

I have found the problem in my script.
The GPS data and the AP data were missing.
I'll correct this asap and post the result on this forum.

Jean CARTIER
janolap1 is offline   Reply With Quote
Old 01-14-2005   #4 (permalink)
janolap1
Registered Member
 
Join Date: Nov 2004
Posts: 9
Thumbs up It finally works

Hi,

I finally make my script work.
you can test it if you want and tell me if it's cool.
I would like to enhance it to convert data format, and to make it more readable.

This is the script...
PHP Code:
<?php

//
// NS1 to HTML in PHP
// Created by Jean CARTIER
// v 1.0 - 14-jan-2005
// For NetStumbler 0.4
// Under GPL Licence (See http://www.gnu.org/copyleft/gpl.html )
// ToDo : Convert results to be readable (LongInt to Date and time, Speed, ...)

//Constants to be displayed :
$header "HEADER";
$apinfo "AP Info";
$apnumber "AP number";
$extrainfos "Extra infos";
$apdatanumber "AP Data number";


$jump=0;

//
// ***************** HEAD **************************
//
function dwSignature($s,$offset)
//4 dwSignature char[4] File Signature ('NetS') 
{
global 
$jump;
$jump=$jump+4;
return 
substr($s,$offset,4);
}

function 
dwFileVer($s,$offset)
//4 dwFileVer uint32 File Format Version 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
ApCount($s,$offset)
//4 ApCount uint32 Number of APINFO entries that follow 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}
//
// *********************************************
//

//
// ****************** GPS DATA ***************************
//
function Latitude($s$offset)
//8 Latitude double Reported latitude 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]))+255*255*255*255*hexdec(bin2hex($s[4+$offset]))+255*255*255*255*255*hexdec(bin2hex($s[5+$offset]))+255*255*255*255*255*255*hexdec(bin2hex($s[6+$offset]))+255*255*255*255*255*255*255*hexdec(bin2hex($s[7+$offset]));
}

function 
Longitude($s$offset)
//8 Longitude double Reported longitude 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]))+255*255*255*255*hexdec(bin2hex($s[4+$offset]))+255*255*255*255*255*hexdec(bin2hex($s[5+$offset]))+255*255*255*255*255*255*hexdec(bin2hex($s[6+$offset]))+255*255*255*255*255*255*255*hexdec(bin2hex($s[7+$offset]));
}

function 
Altitude($s$offset)
//8 Altitude double Reported altitude 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]))+255*255*255*255*hexdec(bin2hex($s[4+$offset]))+255*255*255*255*255*hexdec(bin2hex($s[5+$offset]))+255*255*255*255*255*255*hexdec(bin2hex($s[6+$offset]))+255*255*255*255*255*255*255*hexdec(bin2hex($s[7+$offset]));
}

function 
NumSats($s$offset)
//4 NumSats uint32 Number of satellites in view of GPS receiver 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
Speed($s$offset)
//8 Speed double Reported speed 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]))+255*255*255*255*hexdec(bin2hex($s[4+$offset]))+255*255*255*255*255*hexdec(bin2hex($s[5+$offset]))+255*255*255*255*255*255*hexdec(bin2hex($s[6+$offset]))+255*255*255*255*255*255*255*hexdec(bin2hex($s[7+$offset]));
}

function 
Track($s$offset)
//8 Track double Reported track 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]))+255*255*255*255*hexdec(bin2hex($s[4+$offset]))+255*255*255*255*255*hexdec(bin2hex($s[5+$offset]))+255*255*255*255*255*255*hexdec(bin2hex($s[6+$offset]))+255*255*255*255*255*255*255*hexdec(bin2hex($s[7+$offset]));
}

function 
MagVariation($s$offset)
//8 MagVariation double Reported magnetic variation 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]))+255*255*255*255*hexdec(bin2hex($s[4+$offset]))+255*255*255*255*255*hexdec(bin2hex($s[5+$offset]))+255*255*255*255*255*255*hexdec(bin2hex($s[6+$offset]))+255*255*255*255*255*255*255*hexdec(bin2hex($s[7+$offset]));
}

function 
Hdop($s$offset)
//8 Hdop double Reported HDOP 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]))+255*255*255*255*hexdec(bin2hex($s[4+$offset]))+255*255*255*255*255*hexdec(bin2hex($s[5+$offset]))+255*255*255*255*255*255*hexdec(bin2hex($s[6+$offset]))+255*255*255*255*255*255*255*hexdec(bin2hex($s[7+$offset]));
}
//
// *********************************************
//


//
// ******************* APDATA **************************
//
function Time_($s$offset)
//8 Time FILETIME Time that this data was collected 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]))+255*255*255*255*hexdec(bin2hex($s[4+$offset]))+255*255*255*255*255*hexdec(bin2hex($s[5+$offset]))+255*255*255*255*255*255*hexdec(bin2hex($s[6+$offset]))+255*255*255*255*255*255*255*hexdec(bin2hex($s[7+$offset]));
}

function 
Signal($s$offset)
//4 Signal int32 Reported Signal, dBm 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
Noise($s$offset)
//4 Noise int32 Reported Noise, dBm 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
LocationSource($s$offset)
//4 Location Source int32 Kind of location fix (None=0, GPS=1) 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
GPSData($s)
//0 or sizeof(GPSDATA) GpsData GPSDATA If LocationSource is None(0), this structure is not present. 
{
global 
$jump;
echo 
"<br>Latitude :".Latitude($s,$jump);
echo 
"<br>Longitude :".Longitude($s,$jump);
echo 
"<br>Altitude :".Altitude($s,$jump);
echo 
"<br>NumSats :".NumSats($s,$jump);
echo 
"<br>Speed :".Speed($s,$jump);
echo 
"<br>Track :".Track($s,$jump);
echo 
"<br>MagVariation :".MagVariation($s,$jump);
echo 
"<br>Hdop :".Hdop($s,$jump);
}
//
// *********************************************
//



//
// ***************** APINFO **************************
//
function SSIDLength($s,$offset)
//1 SSIDLength uint8 Length of SSID 
{
global 
$jump;
$jump=$jump+1;
return 
hexdec(bin2hex($s[$offset]));
}

function 
SSID($s,$length,$offset)
//SSIDLength SSID char[] SSID (SSIDLength characters, no terminating null) 
{
global 
$jump;
$jump=$jump+$length;
return 
substr($s,$offset,$length);
}

function 
BSSID($s$offset)
//6 BSSID uint8[6] BSSID 
{
global 
$jump;
$jump=$jump+6;
return 
hexdec(bin2hex($s[0+$offset]))&":"&hexdec(bin2hex($s[1+$offset]))&":"&hexdec(bin2hex($s[2+$offset]))&":"&hexdec(bin2hex($s[3+$offset]))&":"&hexdec(bin2hex($s[4+$offset]))&":"&hexdec(bin2hex($s[5+$offset]));
}

function 
MaxSignal($s$offset)
//4 MaxSignal int32 Maximum reported signal level, dBm 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
MinNoise($s,$offset)
// 4 MinNoise int32 Minimum reported noise level, dBm 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
MaxSNR($s,$offset)
// 4 MaxSNR int32 Maximum reported signal-to-noise ratio, dB 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
Flags($s,$offset)
// 4 Flags uint32 802.11 capability flags 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
BeaconInterval ($s,$offset)
// 4 BeaconInterval uint32 Beacon Interval, Kµs 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
FirstSeen ($s,$offset)
// 8 FirstSeen FILETIME Time first seen 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))&hexdec(bin2hex($s[1+$offset]))&":"&hexdec(bin2hex($s[2+$offset]))&hexdec(bin2hex($s[3+$offset]))&":"&hexdec(bin2hex($s[4+$offset]))&":"&hexdec(bin2hex($s[5+$offset]))&":"&hexdec(bin2hex($s[6+$offset]))&hexdec(bin2hex($s[7+$offset]));
}

function 
LastSeen ($s,$offset)
// 8 LastSeen FILETIME Time last seen 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))&":"&hexdec(bin2hex($s[1+$offset]))&":"&hexdec(bin2hex($s[2+$offset]))&":"&hexdec(bin2hex($s[3+$offset]))&":"&hexdec(bin2hex($s[4+$offset]))&":"&hexdec(bin2hex($s[5+$offset]))&":"&hexdec(bin2hex($s[6+$offset]))&":"&hexdec(bin2hex($s[7+$offset]));
}

function 
BestLat ($s,$offset)
// 8 BestLat double Estimated Latitude 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))&":"&hexdec(bin2hex($s[1+$offset]))&":"&hexdec(bin2hex($s[2+$offset]))&":"&hexdec(bin2hex($s[3+$offset]))&":"&hexdec(bin2hex($s[4+$offset]))&":"&hexdec(bin2hex($s[5+$offset]))&":"&hexdec(bin2hex($s[6+$offset]))&":"&hexdec(bin2hex($s[7+$offset]));
}

function 
BestLong ($s,$offset)
// 8 BestLong double Estimated Longitude 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))&":"&hexdec(bin2hex($s[1+$offset]))&":"&hexdec(bin2hex($s[2+$offset]))&":"&hexdec(bin2hex($s[3+$offset]))&":"&hexdec(bin2hex($s[4+$offset]))&":"&hexdec(bin2hex($s[5+$offset]))&":"&hexdec(bin2hex($s[6+$offset]))&":"&hexdec(bin2hex($s[7+$offset]));
}

function 
DataCount ($s,$offset)
// 4 DataCount uint32 Number of APDATA entries that follow 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
ApData ($s,$count)
// Variable ApData APDATA[] DataCount APDATA entries 
{
global 
$jump;
global 
$apdatanumber;
for (
$i=1;$i<=$count;$i++)
{
echo 
"<br><h3>$apdatanumber $i</h3>";
$time_ Time_($s,$jump);
echo 
"Time :".$time_;
echo 
"<br>Signal :".Signal($s,$jump);
echo 
"<br>Noise :".Noise($s,$jump);
$locationsource LocationSource($s,$jump);
echo 
"<br>Location Source : ".$locationsource;
if (
$locationsource>0)
{echo 
GPSData($s);}
}
}

function 
NameLength ($s$offset)
// 1 NameLength uint8 Length of Name 
{
global 
$jump;
$jump=$jump+1;
return 
hexdec(bin2hex($s[0+$offset]));
}

function 
Name ($s$length$offset)
// NameLength Name char[] Name (NameLength characters, no terminating null) 
{
global 
$jump;
$jump=$jump+$length;
return 
substr($s,$offset,$length);
}

function 
Channels ($s$offset)
// 8 Channels uint64 Bit field indicating channel activity 
{
global 
$jump;
$jump=$jump+8;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]))+255*255*255*255*hexdec(bin2hex($s[4+$offset]))+255*255*255*255*255*hexdec(bin2hex($s[5+$offset]))+255*255*255*255*255*255*hexdec(bin2hex($s[6+$offset]))+255*255*255*255*255*255*255*hexdec(bin2hex($s[7+$offset]));
}

function 
LastChannel ($s$offset)
// 4 LastChannel uint32 Last reported channel 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
IPAddress ($s$offset)
// 4 IPAddress uint32 IP Address 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset])).":".hexdec(bin2hex($s[1+$offset])).":".hexdec(bin2hex($s[2+$offset])).":".hexdec(bin2hex($s[3+$offset]));
}

function 
MinSignal ($s$offset)
// 4 MinSignal int32 Minimum reported signal level, dBm 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
MaxNoise ($s$offset)
// 4 MaxNoise int32 Maximum reported noise level, dBm 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
DataRate ($s$offset)
// 4 DataRate uint32 Highest reported data rate, units of 100 kbps 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
IPSubnet ($s$offset)
// 4 IPSubnet uint32 IP Subnet address 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset])).":".hexdec(bin2hex($s[1+$offset])).":".hexdec(bin2hex($s[2+$offset])).":".hexdec(bin2hex($s[3+$offset]));
}

function 
IPMask ($s$offset)
// 4 IPMask uint32 IP Subnet mask 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset])).":".hexdec(bin2hex($s[1+$offset])).":".hexdec(bin2hex($s[2+$offset])).":".hexdec(bin2hex($s[3+$offset]));
}

function 
ApFlags ($s$offset)
// 4 ApFlags uint32 Miscellaneous Flags 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
IELength ($s$offset)
// 4 IELength uint32 Number of bytes that follow (0 except when using NDIS 5.1 with a WPA capable driver) 
{
global 
$jump;
$jump=$jump+4;
return 
hexdec(bin2hex($s[0+$offset]))+255*hexdec(bin2hex($s[1+$offset]))+255*255*hexdec(bin2hex($s[2+$offset]))+255*255*255*hexdec(bin2hex($s[3+$offset]));
}

function 
InformationElements ($s,$length$offset)
// IELength InformationElements uint8[] 802.11 Information Elements 
{
global 
$jump;
$jump=$jump+$length;
return 
substr($s,$offset,$length);
}
//
// *******************************************
//

function APInfo($s$number)
//Variable ApInfo APINFO[] ApCount APINFO entries 
{
global 
$jump;
global 
$extrainfos;
for (
$i=1$i<=$number$i++)
{
echo 
"<H2>apnumber $i</h2>";
$SSIDLength SSIDLength($s,$jump);
echo 
"SSIDLength = ".$SSIDLength;
echo 
"<br>SSID = ".SSID($s$SSIDLength$jump);
echo 
"<br>BSSID = ".BSSID($s,$jump);
echo 
"<br>MaxSignal = ".MaxSignal($s,$jump);
echo 
"<br>MinNoise = ".MinNoise($s,$jump);
echo 
"<br>MaxSNR = ".MaxSNR($s,$jump);
echo 
"<br>Flags = ".Flags($s,$jump);
echo 
"<br>BeaconInterval = ".BeaconInterval($s,$jump);
echo 
"<br>FirstSeen = ".FirstSeen($s,$jump);
echo 
"<br>LastSeen = ".LastSeen($s,$jump);
echo 
"<br>BestLat = ".BestLat($s,$jump);
echo 
"<br>BestLong = ".BestLong($s,$jump);
$DataCount DataCount($s,$jump);
echo 
"<br>DataCount = ".$DataCount;
ApData($s$DataCount);
echo 
"<h3>$extrainfos</h3>";
$NameLength NameLength($s,$jump);
echo 
"NameLength = ".$NameLength;
echo 
"<br>Name = ".Name($s$NameLength$jump);
echo 
"<br>Channels = ".Channels($s,$jump);
echo 
"<br>LastChannel = ".LastChannel($s,$jump);
echo 
"<br>IPAddress = ".IPAddress($s,$jump);
echo 
"<br>MinSignal = ".MinSignal($s,$jump);
echo 
"<br>MaxNoise = ".MaxNoise($s,$jump);
echo 
"<br>DataRate = ".DataRate($s,$jump);
echo 
"<br>IPSubnet = ".IPSubnet($s,$jump);
echo 
"<br>IPMask = ".IPMask($s,$jump);
echo 
"<br>ApFlags = ".ApFlags($s,$jump);
$IELength IELength($s,$jump);
echo 
"<br>IELength = ".$IELength;
echo 
"<br>InformationElements = ".InformationElements($s$IELength$jump);
echo 
"<br><hr>";
}
}

// Read the file and put the content in a string
$filename "netstumbler.ns1";
$handle fopen ($filename"r");
$contents fread ($handlefilesize ($filename));
fclose ($handle);
echo 
"<h1>$header</h1>";
echo 
"Signature of the file = ".dwSignature($contents,$jump);
echo 
"<br>File version = ".dwFileVer($contents,$jump);
$APCount ApCount($contents,$jump);
echo 
"<br>Number of AP = ".$APCount;
echo 
"<br><hr><h1>$apinfo</h1><hr>";
APInfo($contents,$APCount);
?>
Enjoy

Jean CARTIER
Attached Files
File Type: txt readbinary.php.txt (16.7 KB, 87 views)
janolap1 is offline   Reply With Quote
Old 02-14-2005   #5 (permalink)
widyawan
Registered Member
 
Join Date: Feb 2005
Posts: 5
strange result

Quote:
Originally Posted by janolap1
Hi,

I finally make my script work.
you can test it if you want and tell me if it's cool.
I would like to enhance it to convert data format, and to make it more readable.

This is the script...
[php]<?php
Hi ...

I have tried your script. It's work unless that I can not understand the number that represent signal/noise. My php output file looks like this

......
AP Data number 6
Time :1.24295290856E+017
Signal :4244897216
Noise :4244897181
Location Source : 0
.........

How can I read this in dBm (as it show in .ns1 file)?

Thanks
widyawan is offline   Reply With Quote
Old 02-15-2005   #6 (permalink)
janolap1
Registered Member
 
Join Date: Nov 2004
Posts: 9
Readable output

Hi,

Thanx for testing the script.

The problem is that I don't have enough time to transform output into DBm, or whatever. If you have the time, and a little programming skills, try to enhance it.

I'll try to make a better script later.

Cordially

Jean CARTIER
janolap1 is offline   Reply With Quote
Old 02-15-2005   #7 (permalink)
beakmyn
Free Public Wifi
 
beakmyn's Avatar
 
Join Date: Aug 2003
Posts: 4,992
The number is already in dBm you're just translating it wrong. It's a 4 byte signed integer.

The time looks the way it does because it's stored in the file as a FILETIME structure which is two longs that need to be 'transmorgified'.

I use the following function to handle 90% of the data types in the Ns1 file
I'm not the author of this function
Code:
Function BytesToNumEx(ByteArray() As Byte, StartRec As Long, _
   EndRec As Long, UnSigned As Boolean) As Double
' ###################################################
' Author                : Imran Zaheer
' Contact               : imraanz@mail.com
' Date                  : January 2000
' Function BytesToNumEx : Convertes the specified byte array
'                         into the corresponding Integer or Long
'                         or any signed/unsigned
'                        ;(non-float) data type.
'
' * BYTES : LIKE NUMBERS(Integer/Long etc.) STORED IN A
' * BINARY FILE

' Parameters :
'  (All parameters are reuuired: No Optional)
'     ByteArray() : byte array containg a number in byte format
'  StartRec    : specify the starting array record within the
                 ' array
'     EndRec      : specify the end array record within the array
'     UnSigned    : when False process bytes for both -ve and
'                   +ve values.
'                   when true only process the bytes for +ve
'                   values.
'
' Note: If both "StartRec" and "EndRec" Parameters are zero,
'       then the complete array will be processed.
'
' Example Calls :
'      dim myArray(1 To 4) as byte
'      dim myVar1 as Integer
'      dim myVar2 as Long
'
'      myArray(1) = 255
'      myArray(2) = 127
'      myVar1 = BytesToNumEx(myArray(), 1, 2, False)
'  after execution of above statement myVar1 will be 32767
'
'      myArray(1) = 0
'      myArray(2) = 0
'      myArray(3) = 0
'      myArray(4) = 128
'      myVar2 = BytesToNumEx(myArray(), 1, 4, False)
'  after execution of above statement myVar2 will be -2147483648
'
'
'####################################################
On Error GoTo ErrorHandler
Dim i As Integer
Dim lng256 As Double
Dim lngReturn As Double
    
    lng256 = 1
    lngReturn = 0
    
    If EndRec < 1 Then
        EndRec = UBound(ByteArray)
    End If
    
    If StartRec > EndRec Or StartRec < 0 Then
        MsgBox _
         "Start record can not be greater then End record...!", _
          vbInformation
        BytesToNumEx = -1
        Exit Function
    End If
    
    lngReturn = lngReturn + (ByteArray(StartRec))
    For i = (StartRec + 1) To EndRec
        lng256 = lng256 * 256
        If i < EndRec Then
            lngReturn = lngReturn + (ByteArray(i) * lng256)
        Else
           ' if -ve

            If ByteArray(i) > 127 And UnSigned = False Then
             lngReturn = (lngReturn + ((ByteArray(i) - 256) _
                  * lng256))
            Else
                lngReturn = lngReturn + (ByteArray(i) * lng256)
            End If
        End If
    Next i
    
    BytesToNumEx = lngReturn
ErrorHandler:
End Function

The FILETIME is a bit harder as it needs to be converted from a UTC FILETIME to a LOCAL FILETIME then to a SYSTEMTIME then to a standard date and time.
__________________
┌──────────────────────────────┐
NS Icons Explained|et hoc genus omne
└──────────────────────────────┘


Creating yesterday's future, Today!
beakmyn is offline   Reply With Quote
Old 02-17-2005   #8 (permalink)
widyawan
Registered Member
 
Join Date: Feb 2005
Posts: 5
Quote:
Originally Posted by beakmyn
The number is already in dBm you're just translating it wrong. It's a 4 byte signed integer.

The time looks the way it does because it's stored in the file as a FILETIME structure which is two longs that need to be 'transmorgified'.
Hi thanks for the respond ...

4 bytes signed integer? So if we have 10 dbm (1010) it will show as 0101 0000 0000 0000 0000 0000 0000 0000 (1342177280 in dec)?
Your function is written in VB ? And its for conversting to ' normal' dbm?

Cheer
Widy
widyawan is offline   Reply With Quote
Old 02-17-2005   #9 (permalink)
beakmyn
Free Public Wifi
 
beakmyn's Avatar
 
Join Date: Aug 2003
Posts: 4,992
It's written in vb. I read 4 bytes from the file into a byte array and pass it through the function and get a human readable number.

MaxSignal 4 bytes int32 Maximum signal level reported in dBm

After reading 4 bytes from the file
Bytes(0)=188
Bytes(1)=255
Bytes(2)=255
Bytes(3)=255

Pass byte array to function
ns1.APINFO(Index).MaxSignal = BytesToNumEx(bytes, 0, 0, False)

Result of Function
-68
__________________
┌──────────────────────────────┐
NS Icons Explained|et hoc genus omne
└──────────────────────────────┘


Creating yesterday's future, Today!

Last edited by beakmyn : 02-17-2005 at 06:15 AM.
beakmyn is offline   Reply With Quote
Old 07-27-2005   #10 (permalink)
Evil.2000
Registered Member
 
Join Date: Jul 2005
Posts: 4
OK.

There is a little line to get this worked in PHP.

$value holds the BINARY Data for the Noise and Signal Rate.
i.e. $value is œ’’’ which is hex 0x9cffffff or decimal 2634022911
But that is not the real value. The Real one is -100 dBm.
Because the bytes for this value in the file are reversed and we have to reverse it again.
Now it is 0xffffff9c or decimal 4294967196
Then invert all the bytes (0x000063) and convert it to decimal (99) and add 1 (100).
Give it the "-" sign and be happy

We have -100. Thats the right value.

The Code:
PHP Code:
$dBm "-".(hexdec(bin2hex(~(strrev($value))))+1); 
EDIT:
But don't forget: This workes only for negative Values.
If you have a positive number such as MaxSNR you don't have to invert the bytes and don't add 1.
PHP-Code looks like this:
PHP Code:
$dBm hexdec(bin2hex(strrev($value))); 
HTH

Evil

Last edited by Evil.2000 : 07-27-2005 at 11:59 AM.
Evil.2000 is offline   Reply With Quote
Old 07-28-2005   #11 (permalink)
Evil.2000
Registered Member
 
Join Date: Jul 2005
Posts: 4
OK guys, i've a problem and hopefully someone can help me.

I've wirtten a NS1-Parser in PHP.
It works fine but i have trouble with 2 Variables.

If you export the data as SUM-File there are the fields with its values like this:
Code:
[ SNR Sig Noise ]
[ 98 47 -51 ]
OK. how does Netstumbler calculate the Sig and Noise Values?
If i parse the NS1-File there isn't a field containong the values 47 and -51.
The fields [MaxSignal] => -102 and [MinNoise] => -200 are other values and the [MinSignal]and [MaxNoise] give values like 1235368 and 14549456.

So can anyone tell me how Netstumbler calculates the Sig and Noise in it's SUM-Files?

Thanx for Help.

Evil.2000
Evil.2000 is offline   Reply With Quote
Old 07-28-2005   #12 (permalink)
Thorn
Did you do the math?
 
Thorn's Avatar
 
Join Date: Apr 2002
Location: Villa Straylight
Posts: 10,359
Search on "149"
__________________
Thorn
"Read Altas Shrugged. Compare it to today. Repeat as necessary"
Thorn is offline   Reply With Quote
Old 07-28-2005   #13 (permalink)
Evil.2000
Registered Member
 
Join Date: Jul 2005
Posts: 4
Quote:
Originally Posted by Thorn
Search on "149"
Sorry there isn't a field containing 149.

Can you explain to me how to get on 149?

EDIT:
OK. Please give me next time the hint to search for 149 on the forum not in my Values :P

Last edited by Evil.2000 : 07-28-2005 at 04:56 PM.
Evil.2000 is offline   Reply With Quote
Old 04-27-2007   #14 (permalink)
gabecrowe
Registered Member
 
Join Date: Apr 2007
Posts: 1
odd bug

got a parsing problem there chaps:
Quote:
InformationElements = ���šč,—{Ē£’’’œ’’’����@9ś-—{Ē€’’€’’����P°½.—{ĒŖ’’’œ’’’����-Ņ/—{Ē€’’€’’����0Äś/—{Ē£’’’œ’’’���� ˜0—{Ē”’’’œ’’’���� 31—{Ǧ’’’œ’’’����żĶ1—{Ē£’’’œ’’’����ąå2—{Ē€’ ’€’’����p‚ 3—{Ē„’’’œ’’’����š‰Ø3—{Ē„’’’œ’’’����@½ŗ4—{Ē€’’ €’’����€ŚĘ9—{Ǧ’’’œ’’’����ŠļŻ:—{Ē€’’€’’����`_ ;—{ĒØ’’’œ’’’����°!<—{Ē€’’€’’����Jb—{ĒŖ’’’œ ’’’����ąŪYc—{Ē€’’€’’����€€c—{Ē*’’’œ’’’����š4" d—{Ē«’’’œ’’’����`†æd—{Ē„’’’œ’’’����°HĻe—{Ē€’’ €’’�����žŻj—{Ē£’’’œ’’’����PĄķk—{Ē€’’€’’����ąÆN m—{Ē ’’’œ’’’����Pģm—{Ē£’’’œ’’’���� Ćūn—{Ē€’’€’’����°«Įo—{Ǧ’’’œ’’’�����ßÓp—{Ē€’ ’€’’����å”q—{ĒØ’’’œ’’’����`ś«r—{Ē€’’€’’���� ŚWx—{Ē„’’’œ’’’����`œgy—{Ē€’’€’’����põ/z—{ĒŖ’’’œ’’’����Ą(B{—{Ē€’’€’’����@b„|—{Ǧ’’’œ ’’’����°³B}—{Ǧ’’’œ’’’����0»Ż}—{ĒŖ’’’œ’’’���� ›x~—{ĒØ’’’œ’’’����Ļ—{Ē«’’’œ’’’����€ ø—{Ē„’’’œ’’’�����(S€—{Ǧ’’’œ’’’����P[e—{Ē€’’€’’����š€‹—{ĒØ’’’œ’’’����@“‚—{Ē€’’ €’’�����¬‡—{Ē”’’’œ’’’����pż°‡—{Ǧ’’’œ’’’����š Lˆ—{Ē*’’’œ’’’����0‚`‰—{Ē€’’€’’����Љ‰—{Ē„’’’ œ’’’���� L›Š—{Ē€’’€’’����ĄqĮŠ—{Ē”’’’œ’’’����„Ӌ—{Ē€’ ’€’’����ąpB—{Ē„’’’œ’’’����03R‘—{Ē€’’€’’����Š M;˜—{Ē£’’’œ’’’���� K™—{Ē€’’€’’����PŁ–Ÿ—{Ē„’’’œ’’’���� © —{Ē€’’€’’����Šó聯{Ē£’’’œ’’’����
Has anyone made a working version of this?
gabecrowe is offline   Reply With Quote
Old 04-27-2007   #15 (permalink)
MikeP928
Heeere's your sign!
 
MikeP928's Avatar
 
Join Date: May 2002
Location: Mexico Beach, FL
Posts: 1,169
Quote:
Originally Posted by gabecrowe
got a parsing problem there chaps:


Has anyone made a working version of this?
Proceed immediately to the Welcome Desk and read ALL the threads there. Your duration on this forum will be greatly effected by how well you use the info there.

Or you can just Procreate Elsewhere for Zombie thread revival.

MikeP
__________________
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
-- Benjamin Franklin, 1759
MikeP928 is offline   Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



Google
 
Web NetStumbler.org

All times are GMT -7. The time now is 02:39 PM.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0 ©2007, Crawlability, Inc.


All messages express the views of the author and are for entertainment purposes only. Netstumbler.org cannot be held responsible for the authenticity of the content or the actions of its members. By using this site and its services, you warrant that you will not post any messages that are discriminating, obscene, hateful, threatening, or otherwise violates any laws and you release Netstumbler.org from any future claims of any kind whatsoever including, but not limited to, addiction and loss of productivity. All forum messages, private messages and any other content are properties of Netstumbler.org. Even if publicly available, personal or copyrighted information are not to be posted without the consent of the owner. Distribution of licensed and copyrighted materials in any way not endorsed by the copyright owner is strictly prohibited. You may not use this site and its resources to spam other sites or individuals or perform any action that violates any law. Items sold or bought in the For Sale forum are sold as is and no warranty or insurance of any kind is provided. Netstumbler.org cannot be held responsible for the outcome of any transactions and no warranty of any kind is provided, either express or implied. Vulgar words are not allowed in the subject lines ; they may be used in the message body in any forum. The Administrator, Super Moderators and Moderators of Netstumbler.org have the right to remove, edit, move or close any thread for any reason and to reveal your identity and other known information in the event of a complaint or legal action arising from any message posted by you.