PATH:
usr
/
share
/
nmap
/
nselib
local bit = require "bit" local os = require "os" local package = require "package" local stdnse = require "stdnse" local string = require "string" _ENV = stdnse.module("gps", stdnse.seeall) --- -- A smallish gps parsing module. -- Currently does GPRMC NMEA decoding -- -- @author "Patrik Karlsson <patrik@cqure.net>" -- -- NMEA = { -- Parser for the RMC sentence RMC = { parse = function(str) local time, status, latitude, ns_indicator, longitude, ew_indicator, speed, course, date, variation, ew_variation, checksum = str:match("^%$GPRMC,([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^%*]*)(.*)$") if ( not(latitude) or not(longitude) ) then return end local deg, min = latitude:match("^(..)(.*)$") if ( not(deg) or not(min) ) then return end latitude = tonumber(deg) + (tonumber(min)/60) deg, min = longitude:match("^(..)(.*)$") if ( not(deg) or not(min) ) then return end longitude = tonumber(deg) + (tonumber(min)/60) if ( ew_indicator == 'W' ) then longitude = -longitude end if ( ns_indicator == 'S' ) then latitude = -latitude end return { time = time, status = status, latitude = latitude, longitude = longitude, speed = speed, course = course, date = date, variation = variation, ew_variation = ew_variation } end, }, -- Calculates an verifies the message checksum -- -- @param str containing the GPS sentence -- @return status true on success, false if the checksum does not match -- @return err string if status is false checksum = function(str) local val = 0 for c in str:sub(2,-4):gmatch(".") do val = bit.bxor(val, string.byte(c)) end if ( str:sub(-2):upper() ~= stdnse.tohex(string.char(val)):upper() ) then return false, ("Failed to verify checksum (got: %s; expected: %s)"):format(stdnse.tohex(string.char(val)), str:sub(-2)) end return true end, -- Parses a GPS sentence using the apropriate parser -- -- @param str containing the GPS sentence -- @return entry table containing the parsed response or -- err string if status is false -- @return status true on success, false on failure parse = function(str) local status, err = NMEA.checksum(str) if ( not(status) ) then return false, err end local prefix = str:match("^%$GP([^,]*)") if ( not(prefix) ) then return false, "Not a NMEA sentence" end if ( NMEA[prefix] and NMEA[prefix].parse ) then local e = NMEA[prefix].parse(str) if (not(e)) then return false, ("Failed to parse entry: %s"):format(str) end return true, e else local err = ("No parser for prefix: %s"):format(prefix) stdnse.print_debug(2, err) return false, err end end } Util = { convertTime = function(date, time) local d = {} d.hour, d.min, d.sec = time:match("(..)(..)(..)") d.day, d.month, d.year = date:match("(..)(..)(..)") d.year = d.year + 2000 return os.time(d) end } return _ENV;
[-] iscsi.lua
[edit]
[-] httpspider.lua
[edit]
[-] rmi.lua
[edit]
[-] socks.lua
[edit]
[-] dhcp6.lua
[edit]
[-] sasl.lua
[edit]
[-] drda.lua
[edit]
[+]
data
[-] dhcp.lua
[edit]
[-] omp2.lua
[edit]
[-] ospf.lua
[edit]
[-] ipp.lua
[edit]
[-] pop3.lua
[edit]
[-] netbios.lua
[edit]
[-] pgsql.lua
[edit]
[-] packet.lua
[edit]
[-] rpc.lua
[edit]
[-] xdmcp.lua
[edit]
[-] msrpc.lua
[edit]
[+]
..
[-] eigrp.lua
[edit]
[-] giop.lua
[edit]
[-] afp.lua
[edit]
[-] bjnp.lua
[edit]
[-] match.lua
[edit]
[-] iax2.lua
[edit]
[-] smtp.lua
[edit]
[-] msrpctypes.lua
[edit]
[-] cvs.lua
[edit]
[-] natpmp.lua
[edit]
[-] bitcoin.lua
[edit]
[-] snmp.lua
[edit]
[-] rsync.lua
[edit]
[-] mssql.lua
[edit]
[-] base64.lua
[edit]
[-] ncp.lua
[edit]
[-] base32.lua
[edit]
[-] sip.lua
[edit]
[-] http.lua
[edit]
[-] asn1.lua
[edit]
[-] stun.lua
[edit]
[-] citrixxml.lua
[edit]
[-] nrpc.lua
[edit]
[-] proxy.lua
[edit]
[-] pppoe.lua
[edit]
[-] amqp.lua
[edit]
[-] dns.lua
[edit]
[-] informix.lua
[edit]
[-] tftp.lua
[edit]
[-] sslcert.lua
[edit]
[-] strbuf.lua
[edit]
[-] unpwdb.lua
[edit]
[-] strict.lua
[edit]
[-] vulns.lua
[edit]
[-] jdwp.lua
[edit]
[-] stdnse.lua
[edit]
[-] dnssd.lua
[edit]
[-] mysql.lua
[edit]
[-] rdp.lua
[edit]
[-] mongodb.lua
[edit]
[-] ndmp.lua
[edit]
[-] isns.lua
[edit]
[-] ldap.lua
[edit]
[-] creds.lua
[edit]
[-] tab.lua
[edit]
[-] ftp.lua
[edit]
[-] brute.lua
[edit]
[-] comm.lua
[edit]
[-] ipOps.lua
[edit]
[-] mobileme.lua
[edit]
[-] target.lua
[edit]
[-] rpcap.lua
[edit]
[-] eap.lua
[edit]
[-] cassandra.lua
[edit]
[-] ssh1.lua
[edit]
[-] url.lua
[edit]
[-] datafiles.lua
[edit]
[-] ajp.lua
[edit]
[-] vuzedht.lua
[edit]
[-] nsedebug.lua
[edit]
[-] rtsp.lua
[edit]
[-] shortport.lua
[edit]
[-] bittorrent.lua
[edit]
[-] ssh2.lua
[edit]
[-] msrpcperformance.lua
[edit]
[-] listop.lua
[edit]
[-] dnsbl.lua
[edit]
[-] json.lua
[edit]
[-] redis.lua
[edit]
[-] wsdd.lua
[edit]
[-] tns.lua
[edit]
[-] ike.lua
[edit]
[-] gps.lua
[edit]
[-] versant.lua
[edit]
[-] imap.lua
[edit]
[-] smb.lua
[edit]
[-] smbauth.lua
[edit]
[-] xmpp.lua
[edit]
[-] upnp.lua
[edit]
[-] membase.lua
[edit]
[-] vnc.lua
[edit]
[-] srvloc.lua
[edit]