Files
nmap.src
map = function(list, func)
- lmap = 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_ports = 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_services = function()
- scope = self
- port_to_service = function(port)
- service = new Service
- service.init(scope, port)
-
- return service
- end function
self.ports = map(self.ports, @port_to_map)
end function
Nmap.ip = "82.132.52.75"
Nmap.init
print(Nmap.ports)
- self.services = lmap(self.ports, @port_to_service)
-
- service = new Service
- service.init(scope)
- self.services.push service
- end function