Nmap Development mailing list archives

Re: Nmap SoC Ideas? (progress estimates)


From: David Fifield <david () bamsoftware com>
Date: Sun, 21 Mar 2010 20:11:08 -0600

On Sun, Mar 21, 2010 at 06:21:32PM -0700, Fyodor wrote:
On Sun, Mar 14, 2010 at 11:15:03PM +1100, Chip Panarchy wrote:
Progress status bar &/or estimated time of scan completion

I think this is an excellent idea.  Nmap used to give basically no
feedback during a scan.  Eventually we added occasional status
messages and later still we the runtime interaction feature where you
can request a status by pressing enter at any time.  Users really
loved this ability (especially when it was on demand) to get a better
idea of what Nmap was doing and when it would be done.  But the status
messages are far from perfect.

Of course providing these stats isn't enough--they have to be
accurate.  I actually think Nmap currently does pretty well (much
better than it used to) in that regard.  I believe that is due to
David's handywork.  For example, 16 minutes after the status message

I wasn't able to make an improvement in this despite trying. My page on
it is http://www.bamsoftware.com/wiki/Nmap/CompletionTimeEstimates.

Things that make this hard for Nmap are the fact that the scanning rate
is not constant (speeds up and slows down for congestion control, so you
have to filter the signal, but how much?), that the completion
percentage at any instant is only an estimate (though it is pretty close
in the case of a port scan), and that the completion percentage may
decrease instantaneously when the retry counter increases.

Bram Cohen has said it's "non-trivial." And that's for estimating
download time, which is probably easier than what Nmap is doing. There
are some ideas here though: http://bramcohen.livejournal.com/24122.html.

You could measure the goodness of an estimation algorithm after the
fact. If you have a sequence of N + 1 e (estimated) and a (actual)
values, taken at times t[0..N], take the sum from i = 1 to N of
(t[i] - t[i - 1]) * (e(t[i]) - a(t[i])^2 and divide by t[N] - t[0].

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


Current thread: