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   #