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