Nmap Development mailing list archives
Re: [patch] The most minor issue ever: set noninteractive on -iL -
From: Patrick Donnelly <batrick () batbytes com>
Date: Wed, 28 Mar 2012 15:01:57 -0400
On Wed, Mar 28, 2012 at 2:14 PM, David Fifield <david () bamsoftware com> wrote:
On Wed, Mar 28, 2012 at 12:07:25PM -0500, Daniel Miller wrote:List, While digging through the option parsing in nmap.cc for a presentation, I noticed that the input of hostnames (-iL or -i) could come from stdin. I think if this is used, then o.noninteractive should be set, since there would be no way to get keystrokes:Index: nmap.cc =================================================================== --- nmap.cc (revision 28355) +++ nmap.cc (working copy) @@ -1048,6 +1048,7 @@ } if (!strcmp(optarg, "-")) { o.inputfd = stdin; + o.noninteractive = true; } else { o.inputfd = fopen(optarg, "r"); if (!o.inputfd) {I doubt this really matters much, but I thought I'd mention it.Thanks, Dan, but I think this is incorrect. Nmap doesn't get runtime interaction keystrokes from stdin, but from the tty. I just tested it and this works: nmap --scan-delay 10ms -iL - < input.txt But this doesn't: cat input.txt | nmap --scan-delay 10ms -iL - Probably there is some subshell interaction with the tty that prevents the second example from working.
The second example doesn't work because, in nmap_tty.cc, Nmap closes the tty FD if it is not the foreground process group leader. In tty_init: #ifndef __CYGWIN32__ if (tcgetpgrp(tty_fd) != getpid()) { close(tty_fd); return; } #endif getpid should maybe be getpgrp so that Nmap accepts terminal input even when it's part of a pipeline (i.e. not the process group leader). Also, I used to have problems with this when Nmap was called in a script (e.g. automated benchmarking) run in the foreground. For example: <test.sh> #!/bin/bash nmap -iL <(echo example.com) --scan-delay 10ms exit 1 </test.sh> [The exit 1 is necessary because bash optimizes a simple command to an exec if it is the only command.] I would argue that nmap in this case should still accept terminal input. -- - Patrick Donnelly _______________________________________________ Sent through the nmap-dev mailing list http://cgi.insecure.org/mailman/listinfo/nmap-dev Archived at http://seclists.org/nmap-dev/
Current thread:
- [patch] The most minor issue ever: set noninteractive on -iL - Daniel Miller (Mar 28)
- Re: [patch] The most minor issue ever: set noninteractive on -iL - David Fifield (Mar 28)
- Re: [patch] The most minor issue ever: set noninteractive on -iL - Patrick Donnelly (Mar 28)
- Re: [patch] The most minor issue ever: set noninteractive on -iL - David Fifield (Mar 28)