Loading src/in-binary.c +4 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ */ #include "masscan.h" #include "masscan-app.h" #include "main-globals.h" #include "output.h" #include "string_s.h" Loading Loading @@ -44,6 +45,7 @@ parse_status(struct Output *out, * Now report ther result */ output_report_status(out, record.timestamp, status, record.ip, record.port, Loading Loading @@ -77,6 +79,7 @@ parse_banner3(struct Output *out, unsigned char *buf, size_t buf_length) */ output_report_banner( out, record.timestamp, record.ip, 6, /* this is always TCP */ record.port, Loading Loading @@ -108,6 +111,7 @@ parse_banner4(struct Output *out, unsigned char *buf, size_t buf_length) */ output_report_banner( out, record.timestamp, record.ip, record.ip_proto, /* TCP=6, UDP=17 */ record.port, Loading src/logger.c +8 −5 Original line number Diff line number Diff line /* log messages to console, depending on verbose level Use -v (or -d) to get more verbose output. The more -v you add, the Use -d to get more verbose output. The more -v you add, the more verbose the output becomes. Details about the running of the program go to <stderr>. Loading @@ -13,15 +13,18 @@ #include <stdarg.h> #include <stdio.h> int verbosity = 0; /* yea! a global variable!! */ int debuglevel = 0; static int global_debug_level = 0; /* yea! a global variable!! */ void LOG_add_level(int x) { global_debug_level += x; } /*************************************************************************** ***************************************************************************/ void vLOG(int level, const char *fmt, va_list marker) { if (level <= verbosity) { if (level <= global_debug_level) { vfprintf(stderr, fmt, marker); fflush(stderr); } Loading @@ -46,7 +49,7 @@ LOG(int level, const char *fmt, ...) void vLOGip(int level, unsigned ip, unsigned port, const char *fmt, va_list marker) { if (level <= verbosity) { if (level <= global_debug_level) { char sz_ip[16]; sprintf_s(sz_ip, sizeof(sz_ip), "%u.%u.%u.%u", Loading src/logger.h +2 −2 Original line number Diff line number Diff line #ifndef LOGGER_H #define LOGGER_H extern int verbosity; /* defined in logger.c */ extern int debuglevel; void LOG(int level, const char *fmt, ...); void LOGip(int level, unsigned ip, unsigned port, const char *fmt, ...); void LOG_add_level(int level); #endif src/main-conf.c +46 −4 Original line number Diff line number Diff line Loading @@ -195,6 +195,16 @@ masscan_echo(struct Masscan *masscan, FILE *fp) case Output_XML: fprintf(fp, "output-format = xml\n"); break; case Output_Binary: fprintf(fp, "output-format = binary\n"); break; case Output_JSON: fprintf(fp, "output-format = json\n"); break; case Output_Redis: fprintf(fp, "output-format = redis\n"); fprintf(fp, "redis = %u.%u.%u.%u:%u\n", (unsigned char)(masscan->redis.ip>>24), (unsigned char)(masscan->redis.ip>>16), (unsigned char)(masscan->redis.ip>> 8), (unsigned char)(masscan->redis.ip>> 0), masscan->redis.port); break; default: fprintf(fp, "output-format = unknown(%u)\n", masscan->nmap.format); break; Loading Loading @@ -903,6 +913,7 @@ masscan_set_parameter(struct Masscan *masscan, else if (EQUALS("xml", value)) masscan->nmap.format = Output_XML; else if (EQUALS("binary", value)) masscan->nmap.format = Output_Binary; else if (EQUALS("json", value)) masscan->nmap.format = Output_JSON; else if (EQUALS("redis", value)) masscan->nmap.format = Output_Redis; else { fprintf(stderr, "error: %s=%s\n", name, value); } Loading @@ -927,6 +938,33 @@ masscan_set_parameter(struct Masscan *masscan, ; } else if (EQUALS("reason", name)) { masscan->nmap.reason = 1; } else if (EQUALS("redis", name)) { struct Range range; unsigned offset = 0; unsigned max_offset = (unsigned)strlen(value); unsigned port = 6379; range = range_parse_ipv4(value, &offset, max_offset); if ((range.begin == 0 && range.end == 0) || range.begin != range.end) { LOG(0, "FAIL: bad redis IP address: %s\n", value); exit(1); } if (offset < max_offset) { while (offset < max_offset && isspace(value[offset])) offset++; if (offset+1 < max_offset && value[offset] == ';' && isdigit(value[offset+1]&0xFF)) { port = strtoul(value+offset+1, 0, 0); if (port > 65535 || port == 0) { LOG(0, "FAIL: bad redis port: %s\n", value+offset+1); exit(1); } } } masscan->redis.ip = range.begin; masscan->redis.port = port; masscan->nmap.format = Output_Redis; strcpy_s(masscan->nmap.filename, sizeof(masscan->nmap.filename), "<redis>"); } else if (EQUALS("release-memory", name)) { fprintf(stderr, "nmap(%s): this is our default option\n", name); } else if (EQUALS("resume", name)) { Loading Loading @@ -1202,8 +1240,7 @@ masscan_command_line(struct Masscan *masscan, int argc, char *argv[]) { int v; for (v=1; argv[i][v] == 'd'; v++) { verbosity++; debuglevel++; LOG_add_level(1); } } break; Loading Loading @@ -1282,6 +1319,11 @@ masscan_command_line(struct Masscan *masscan, int argc, char *argv[]) case 'X': masscan->nmap.format = Output_XML; break; case 'R': masscan->nmap.format = Output_Redis; if (i+1 < argc && argv[i+1][0] != '-') masscan_set_parameter(masscan, "redis", argv[i+1]); break; case 'S': masscan->nmap.format = Output_ScriptKiddie; fprintf(stderr, "nmap(%s): unsupported output format\n", argv[i]); Loading Loading @@ -1414,7 +1456,7 @@ masscan_command_line(struct Masscan *masscan, int argc, char *argv[]) { int v; for (v=1; argv[i][v] == 'v'; v++) verbosity++; LOG_add_level(1); } break; case 'V': /* print version and exit */ Loading src/main-globals.h 0 → 100644 +10 −0 Original line number Diff line number Diff line #ifndef MAIN_GLOBALS_H #define MAIN_GLOBALS_H #include <time.h> extern unsigned control_c_pressed; extern time_t global_now; extern uint64_t global_tcb_count; #endif Loading
src/in-binary.c +4 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ */ #include "masscan.h" #include "masscan-app.h" #include "main-globals.h" #include "output.h" #include "string_s.h" Loading Loading @@ -44,6 +45,7 @@ parse_status(struct Output *out, * Now report ther result */ output_report_status(out, record.timestamp, status, record.ip, record.port, Loading Loading @@ -77,6 +79,7 @@ parse_banner3(struct Output *out, unsigned char *buf, size_t buf_length) */ output_report_banner( out, record.timestamp, record.ip, 6, /* this is always TCP */ record.port, Loading Loading @@ -108,6 +111,7 @@ parse_banner4(struct Output *out, unsigned char *buf, size_t buf_length) */ output_report_banner( out, record.timestamp, record.ip, record.ip_proto, /* TCP=6, UDP=17 */ record.port, Loading
src/logger.c +8 −5 Original line number Diff line number Diff line /* log messages to console, depending on verbose level Use -v (or -d) to get more verbose output. The more -v you add, the Use -d to get more verbose output. The more -v you add, the more verbose the output becomes. Details about the running of the program go to <stderr>. Loading @@ -13,15 +13,18 @@ #include <stdarg.h> #include <stdio.h> int verbosity = 0; /* yea! a global variable!! */ int debuglevel = 0; static int global_debug_level = 0; /* yea! a global variable!! */ void LOG_add_level(int x) { global_debug_level += x; } /*************************************************************************** ***************************************************************************/ void vLOG(int level, const char *fmt, va_list marker) { if (level <= verbosity) { if (level <= global_debug_level) { vfprintf(stderr, fmt, marker); fflush(stderr); } Loading @@ -46,7 +49,7 @@ LOG(int level, const char *fmt, ...) void vLOGip(int level, unsigned ip, unsigned port, const char *fmt, va_list marker) { if (level <= verbosity) { if (level <= global_debug_level) { char sz_ip[16]; sprintf_s(sz_ip, sizeof(sz_ip), "%u.%u.%u.%u", Loading
src/logger.h +2 −2 Original line number Diff line number Diff line #ifndef LOGGER_H #define LOGGER_H extern int verbosity; /* defined in logger.c */ extern int debuglevel; void LOG(int level, const char *fmt, ...); void LOGip(int level, unsigned ip, unsigned port, const char *fmt, ...); void LOG_add_level(int level); #endif
src/main-conf.c +46 −4 Original line number Diff line number Diff line Loading @@ -195,6 +195,16 @@ masscan_echo(struct Masscan *masscan, FILE *fp) case Output_XML: fprintf(fp, "output-format = xml\n"); break; case Output_Binary: fprintf(fp, "output-format = binary\n"); break; case Output_JSON: fprintf(fp, "output-format = json\n"); break; case Output_Redis: fprintf(fp, "output-format = redis\n"); fprintf(fp, "redis = %u.%u.%u.%u:%u\n", (unsigned char)(masscan->redis.ip>>24), (unsigned char)(masscan->redis.ip>>16), (unsigned char)(masscan->redis.ip>> 8), (unsigned char)(masscan->redis.ip>> 0), masscan->redis.port); break; default: fprintf(fp, "output-format = unknown(%u)\n", masscan->nmap.format); break; Loading Loading @@ -903,6 +913,7 @@ masscan_set_parameter(struct Masscan *masscan, else if (EQUALS("xml", value)) masscan->nmap.format = Output_XML; else if (EQUALS("binary", value)) masscan->nmap.format = Output_Binary; else if (EQUALS("json", value)) masscan->nmap.format = Output_JSON; else if (EQUALS("redis", value)) masscan->nmap.format = Output_Redis; else { fprintf(stderr, "error: %s=%s\n", name, value); } Loading @@ -927,6 +938,33 @@ masscan_set_parameter(struct Masscan *masscan, ; } else if (EQUALS("reason", name)) { masscan->nmap.reason = 1; } else if (EQUALS("redis", name)) { struct Range range; unsigned offset = 0; unsigned max_offset = (unsigned)strlen(value); unsigned port = 6379; range = range_parse_ipv4(value, &offset, max_offset); if ((range.begin == 0 && range.end == 0) || range.begin != range.end) { LOG(0, "FAIL: bad redis IP address: %s\n", value); exit(1); } if (offset < max_offset) { while (offset < max_offset && isspace(value[offset])) offset++; if (offset+1 < max_offset && value[offset] == ';' && isdigit(value[offset+1]&0xFF)) { port = strtoul(value+offset+1, 0, 0); if (port > 65535 || port == 0) { LOG(0, "FAIL: bad redis port: %s\n", value+offset+1); exit(1); } } } masscan->redis.ip = range.begin; masscan->redis.port = port; masscan->nmap.format = Output_Redis; strcpy_s(masscan->nmap.filename, sizeof(masscan->nmap.filename), "<redis>"); } else if (EQUALS("release-memory", name)) { fprintf(stderr, "nmap(%s): this is our default option\n", name); } else if (EQUALS("resume", name)) { Loading Loading @@ -1202,8 +1240,7 @@ masscan_command_line(struct Masscan *masscan, int argc, char *argv[]) { int v; for (v=1; argv[i][v] == 'd'; v++) { verbosity++; debuglevel++; LOG_add_level(1); } } break; Loading Loading @@ -1282,6 +1319,11 @@ masscan_command_line(struct Masscan *masscan, int argc, char *argv[]) case 'X': masscan->nmap.format = Output_XML; break; case 'R': masscan->nmap.format = Output_Redis; if (i+1 < argc && argv[i+1][0] != '-') masscan_set_parameter(masscan, "redis", argv[i+1]); break; case 'S': masscan->nmap.format = Output_ScriptKiddie; fprintf(stderr, "nmap(%s): unsupported output format\n", argv[i]); Loading Loading @@ -1414,7 +1456,7 @@ masscan_command_line(struct Masscan *masscan, int argc, char *argv[]) { int v; for (v=1; argv[i][v] == 'v'; v++) verbosity++; LOG_add_level(1); } break; case 'V': /* print version and exit */ Loading
src/main-globals.h 0 → 100644 +10 −0 Original line number Diff line number Diff line #ifndef MAIN_GLOBALS_H #define MAIN_GLOBALS_H #include <time.h> extern unsigned control_c_pressed; extern time_t global_now; extern uint64_t global_tcb_count; #endif