1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-06 04:31:29 +00:00

New option --noscript turns off script scanning

I often need something like this when creating and testing new service
probes. It's handier than modifying script.db every time to remove
the "version" category.
This commit is contained in:
dmiller
2014-06-08 02:49:50 +00:00
parent 3a3c7243d1
commit 8c82e5e3fe
3 changed files with 15 additions and 5 deletions

View File

@@ -1,5 +1,8 @@
# Nmap Changelog ($Id$); -*-text-*- # Nmap Changelog ($Id$); -*-text-*-
o Added new option --noscript to turn off NSE. Useful to avoid running
version-category scripts during a quick -sV scan. [Daniel Miller]
o [NSE] Add bacnet-info script to get device information from SCADA/ICS devices o [NSE] Add bacnet-info script to get device information from SCADA/ICS devices
via BACnet (Building Automation and Control Networks) [Stephen Hilt, Michael via BACnet (Building Automation and Control Networks) [Stephen Hilt, Michael
Toecker] Toecker]

View File

@@ -377,6 +377,7 @@ class NmapOps {
#ifndef NOLUA #ifndef NOLUA
int script; int script;
bool noscript;
char *scriptargs; char *scriptargs;
char *scriptargsfile; char *scriptargsfile;
int scriptversion; int scriptversion;

16
nmap.cc
View File

@@ -639,6 +639,7 @@ void parse_options(int argc, char **argv) {
{"script_args_file", required_argument, 0, 0}, {"script_args_file", required_argument, 0, 0},
{"script-help", required_argument, 0, 0}, {"script-help", required_argument, 0, 0},
{"script_help", required_argument, 0, 0}, {"script_help", required_argument, 0, 0},
{"noscript", no_argument, 0, 0},
#endif #endif
{"ip_options", required_argument, 0, 0}, {"ip_options", required_argument, 0, 0},
{"ip-options", required_argument, 0, 0}, {"ip-options", required_argument, 0, 0},
@@ -676,6 +677,8 @@ void parse_options(int argc, char **argv) {
} else if (optcmp(long_options[option_index].name, "script-help") == 0) { } else if (optcmp(long_options[option_index].name, "script-help") == 0) {
o.scripthelp = true; o.scripthelp = true;
o.chooseScripts(optarg); o.chooseScripts(optarg);
} else if (optcmp(long_options[option_index].name, "noscript") == 0) {
o.noscript = true;
} else } else
#endif #endif
if (optcmp(long_options[option_index].name, "max-os-tries") == 0) { if (optcmp(long_options[option_index].name, "max-os-tries") == 0) {
@@ -1440,6 +1443,9 @@ void apply_delayed_options() {
if (o.portlist && o.fastscan) if (o.portlist && o.fastscan)
fatal("You cannot use -F (fast scan) with -p (explicit port selection) but see --top-ports and --port-ratio to fast scan a range of ports"); fatal("You cannot use -F (fast scan) with -p (explicit port selection) but see --top-ports and --port-ratio to fast scan a range of ports");
if (o.noscript && o.script)
fatal("You have specified --noscript and explicitly enabled script scanning. Make up your mind");
if (o.ipprotscan) { if (o.ipprotscan) {
if (o.portlist) if (o.portlist)
getpts(o.portlist, &ports); getpts(o.portlist, &ports);
@@ -1791,11 +1797,11 @@ int nmap_main(int argc, char *argv[]) {
} }
if (o.servicescan) if (o.servicescan)
o.scriptversion = 1; o.scriptversion = 1;
if (o.scriptversion || o.script || o.scriptupdatedb) if (!o.noscript && (o.scriptversion || o.script || o.scriptupdatedb))
open_nse(); open_nse();
/* Run the script pre-scanning phase */ /* Run the script pre-scanning phase */
if (o.script) { if (!o.noscript && o.script) {
new_targets = NewTargets::get(); new_targets = NewTargets::get();
script_scan_results = get_script_scan_results_obj(); script_scan_results = get_script_scan_results_obj();
script_scan(Targets, SCRIPT_PRE_SCAN); script_scan(Targets, SCRIPT_PRE_SCAN);
@@ -1822,7 +1828,7 @@ int nmap_main(int argc, char *argv[]) {
if ((o.noportscan && !o.traceroute if ((o.noportscan && !o.traceroute
#ifndef NOLUA #ifndef NOLUA
&& !o.script && (!o.script || o.noscript)
#endif #endif
) || o.listscan) { ) || o.listscan) {
/* We're done with the hosts */ /* We're done with the hosts */
@@ -1983,7 +1989,7 @@ int nmap_main(int argc, char *argv[]) {
traceroute(Targets); traceroute(Targets);
#ifndef NOLUA #ifndef NOLUA
if (o.script || o.scriptversion) { if (!o.noscript && (o.script || o.scriptversion)) {
script_scan(Targets, SCRIPT_SCAN); script_scan(Targets, SCRIPT_SCAN);
} }
#endif #endif
@@ -2042,7 +2048,7 @@ int nmap_main(int argc, char *argv[]) {
} while (!o.max_ips_to_scan || o.max_ips_to_scan > o.numhosts_scanned); } while (!o.max_ips_to_scan || o.max_ips_to_scan > o.numhosts_scanned);
#ifndef NOLUA #ifndef NOLUA
if (o.script) { if (!o.noscript && o.script) {
script_scan(Targets, SCRIPT_POST_SCAN); script_scan(Targets, SCRIPT_POST_SCAN);
printscriptresults(script_scan_results, SCRIPT_POST_SCAN); printscriptresults(script_scan_results, SCRIPT_POST_SCAN);
while (!script_scan_results->empty()) { while (!script_scan_results->empty()) {