Open main menu
Posts
Gists
Guilds
Users
Decipher
Docs
Open user menu
Log in
Sign up
Create a new gist
Posts
Gists
Guilds
Users
Decipher
Docs
Files
nmap.src
nmap.src
map = function(list, func)
l
map = function(list, func)
result = list[0:] //list copy.
for i in indexes(list)
result[i] = func(result[i])
end for
return result
end function
Service = {}
// port : port number
// lan_ip
// info : service name and version
// port_obj : port obj
// version_to_int : int of 3 digits
Service.attrs = ["port", "status", "lan_ip", "info"]
Service.init = function(nmap, port = null)
self.nmap = nmap
if port == null then
self.port_obj = null
self.port = null
self.status = null
self.info = "router " + self.nmap.router.kernel_version
self.lan_ip = self.nmap.router.local_ip
else
self.port_obj = port
self.port = self.port_obj.port_number
self.status = "open"
if(self.port_obj.is_closed and not self.nmap.is_lan) then
self.status = "closed"
end if
self.info = self.nmap.router.port_info(self.port_obj)
self.lan_ip = self.port_obj.get_lan_ip
end if
self.version_to_int = self.info.split(" ")[1].split(".").join("").to_int
end function
Service.lib_dict = {"router": "kernel_router.so", "http": "libhttp.so", "ssh": "libssh.so", "repository": "librepository.so"}
Service.info_to_key = function()
return self.info.replace(".", "").replace(" ", "")
end function
Nmap = {}
Nmap.ip = ""
Nmap.init = function(
)
Nmap.init = function(
ip)
self.ip = ip
if not is_valid_ip(self.ip) then exit("nmap: invalid ip address")
self.is_lan = is_lan_ip(self.ip)
self.set_router
()
self.set_ports
()
self.set_router
self.set_ports
self.set_services
end function
Nmap.set_router = function()
if self.is_lan then
self.router = get_router;
else
self.router = get_router(self.ip)
end if
if self.router == null then exit("nmap: ip address not found")
end function
Nmap.set_ports = function()
if not self.is_lan then
self.ports = self.router.used_ports
else
self.ports = self.router.device_ports(self.ip)
end if
if self.ports == null then exit("nmap: ip address not found")
if typeof(self.ports) == "string" then exit(self.ports)
self.format_ports()
end function
Nmap.
format_port
s = function()
port_to_
map
= function(port)
service
_info = self.router.port_info(port)
lan_ip = port.get_lan_ip
port_status = "open"
if(port.is_closed and not self.is_lan) then
port
_status = "closed"
end if
return
{"port": port.port_number, "state": port_status, "service":
service
_info, "lan_ip": lan_ip, "obj": port}
Nmap.
set_service
s = function()
scope = self
port_to_
service
= function(port)
service
= new Service
service.init(scope,
port
)
return service
end function
self.
port
s = map(self.ports, @port_to_
map)
end function
Nmap.ip = "82.132.52.75"
Nmap.init
print(Nmap.ports)
self.
service
s =
l
map(self.ports, @port_to_
service)
service = new Service
service.init(scope)
self.services.push service
end function