Nmap Development mailing list archives

Adding non-blocking connect(), pre_loop and post_loop to NSE?


From: Jacek Wielemborek <d33tah () gmail com>
Date: Mon, 25 Aug 2014 19:11:11 +0200

Hi,

Today I felt like hacking my nmap-nseportscan branch to see how hard
would it be implement connect scan using NSE scanning. I wanted the code
layout to mimick the one I worked out while developing nmap-nsock-scan,
but then I realized that in order to connect()-scan multiple ports at
once, instead of doing this like this:

do_connect = function(host, port)
  local sock = nmap.new_socket()
  local constatus, conerr = sock:connect(host, port)
  sock:close()
  --interpret the resuls etc.
end

action = function(host)
  local ports = getports(host)
  for _, port in ipairs(ports) do
    connect(host, port)
  end
end

I would prefer to do it like this:

connected = function(event, userdata)
  --interpret the resuls etc.
end

pre_loop = function(host)
  startTimeoutClock(host)
  local ports = getports(host)
  for _, port in ipairs(ports) do
    schedule_connect(host, port, connected, nil)
  end

end

post_loop = function(host)
  finishTimeoutClock(host)
end

The pre_loop here would just schedule the connections and return
immediately, leaving the execution of "connected" callback function to NSE.

I took a look at the code and realized that it would probably be wiser
to ask people that know the NSE subsystem better how such a modification
should look instead of modifying it blindly. I am especially lost on
running the post_loop part. Could someone take a look at
nmap-nseportscan branch and see how to fit my concept there?

Cheers,
Jacek

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Sent through the dev mailing list
http://nmap.org/mailman/listinfo/dev
Archived at http://seclists.org/nmap-dev/

Current thread: