Loading src/main-conf.c +13 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ #include "string_s.h" #include "logger.h" #include "proto-banner1.h" #include "templ-payloads.h" #include <ctype.h> #include <limits.h> Loading Loading @@ -705,6 +706,18 @@ masscan_set_parameter(struct Masscan *masscan, } else if (EQUALS("nmap", name)) { print_nmap_help(); exit(1); } else if (EQUALS("nmap-payloads", name)) { FILE *fp; int err; err = fopen_s(&fp, value, "rt"); if (err || fp == NULL) { perror(value); } else { if (masscan->payloads == NULL) masscan->payloads = payloads_create(); payloads_read_file(fp, value, masscan->payloads); fclose(fp); } } else if (EQUALS("offline", name)) { /* Run in "offline" mode where it thinks it's sending packets, but * it's not */ Loading src/main.c +14 −1 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ #include "pixie-timer.h" /* portable time functions */ #include "pixie-threads.h" /* portable threads */ #include "proto-preprocess.h" /* quick parse of packets */ #include "templ-payloads.h" /* UDP packet payloads */ #include <string.h> #include <time.h> Loading Loading @@ -716,9 +717,16 @@ main_scan(struct Masscan *masscan) tmplset, adapter_ip, adapter_mac, router_mac); router_mac, masscan->payloads); masscan->pkt_template = tmplset; /* * trim the nmap UDP payloads down to only those ports we are using. This * makes lookups faster at high packet rates. */ payloads_trim(masscan->payloads, &masscan->ports); /* * Reconfigure the packet template according to command-line options */ Loading @@ -727,6 +735,9 @@ main_scan(struct Masscan *masscan) if (masscan->nmap.ttl) template_set_ttl(tmplset, masscan->nmap.ttl); /* * Read back what we've set */ Loading Loading @@ -845,6 +856,7 @@ int main(int argc, char *argv[]) masscan->adapter_port = 0x10000; /* value not set */ masscan->shard.one = 1; masscan->shard.of = 1; masscan->payloads = payloads_create(); strcpy_s( masscan->rotate_directory, sizeof(masscan->rotate_directory), "."); Loading Loading @@ -925,6 +937,7 @@ int main(int argc, char *argv[]) */ { int x = 0; x += payloads_selftest(); x += blackrock_selftest(); x += rawsock_selftest(); x += randlcg_selftest(); Loading src/masscan.h +2 −0 Original line number Diff line number Diff line Loading @@ -171,6 +171,8 @@ struct Masscan struct { unsigned timeout; } tcb; struct NmapPayloads *payloads; }; Loading src/ranges.c +25 −7 Original line number Diff line number Diff line Loading @@ -14,6 +14,22 @@ #define REGRESS(x) if (!(x)) return (fprintf(stderr, "regression failed %s:%u\n", __FILE__, __LINE__)|1) /*************************************************************************** ***************************************************************************/ int rangelist_is_contains(const struct RangeList *task, unsigned number) { unsigned i; for (i=0; i<task->count; i++) { struct Range *range = &task->list[i]; if (range->begin <= number && number <= range->end) return 1; } return 0; } /*************************************************************************** * ??? ***************************************************************************/ Loading Loading @@ -511,7 +527,7 @@ regress_pick2() /*************************************************************************** ***************************************************************************/ void const char * rangelist_parse_ports(struct RangeList *ports, const char *string) { char *p = (char*)string; Loading Loading @@ -552,10 +568,8 @@ rangelist_parse_ports(struct RangeList *ports, const char *string) p += 2; } if (!isdigit(p[0] & 0xFF)) { fprintf(stderr, "CONF: bad port charactern = 0x%02x\n", p[0]); exit(1); } if (!isdigit(p[0] & 0xFF)) break; port = strtoul(p, &p, 0); end = port; Loading @@ -563,8 +577,6 @@ rangelist_parse_ports(struct RangeList *ports, const char *string) p++; end = strtoul(p, &p, 0); } if (*p == ',') p++; if (port > 0xFFFF || end > 0xFFFF || end < port) { fprintf(stderr, "CONF: bad ports: %u-%u\n", port, end); Loading @@ -572,7 +584,13 @@ rangelist_parse_ports(struct RangeList *ports, const char *string) } else { rangelist_add_range(ports, port+proto_offset, end+proto_offset); } if (*p == ',') p++; else break; } return p; } Loading src/ranges.h +2 −1 Original line number Diff line number Diff line Loading @@ -25,11 +25,12 @@ struct RangeList void rangelist_add_range(struct RangeList *task, unsigned begin, unsigned end); void rangelist_remove_range(struct RangeList *task, unsigned begin, unsigned end); void rangelist_remove_range2(struct RangeList *task, struct Range range); int rangelist_is_contains(const struct RangeList *task, unsigned number); struct Range range_parse_ipv4(const char *line, unsigned *inout_offset, unsigned max); uint64_t rangelist_count(struct RangeList *targets); unsigned rangelist_pick(struct RangeList *targets, uint64_t i); void rangelist_parse_ports(struct RangeList *ports, const char *string); const char *rangelist_parse_ports(struct RangeList *ports, const char *string); void rangelist_free(struct RangeList *list); Loading Loading
src/main-conf.c +13 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ #include "string_s.h" #include "logger.h" #include "proto-banner1.h" #include "templ-payloads.h" #include <ctype.h> #include <limits.h> Loading Loading @@ -705,6 +706,18 @@ masscan_set_parameter(struct Masscan *masscan, } else if (EQUALS("nmap", name)) { print_nmap_help(); exit(1); } else if (EQUALS("nmap-payloads", name)) { FILE *fp; int err; err = fopen_s(&fp, value, "rt"); if (err || fp == NULL) { perror(value); } else { if (masscan->payloads == NULL) masscan->payloads = payloads_create(); payloads_read_file(fp, value, masscan->payloads); fclose(fp); } } else if (EQUALS("offline", name)) { /* Run in "offline" mode where it thinks it's sending packets, but * it's not */ Loading
src/main.c +14 −1 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ #include "pixie-timer.h" /* portable time functions */ #include "pixie-threads.h" /* portable threads */ #include "proto-preprocess.h" /* quick parse of packets */ #include "templ-payloads.h" /* UDP packet payloads */ #include <string.h> #include <time.h> Loading Loading @@ -716,9 +717,16 @@ main_scan(struct Masscan *masscan) tmplset, adapter_ip, adapter_mac, router_mac); router_mac, masscan->payloads); masscan->pkt_template = tmplset; /* * trim the nmap UDP payloads down to only those ports we are using. This * makes lookups faster at high packet rates. */ payloads_trim(masscan->payloads, &masscan->ports); /* * Reconfigure the packet template according to command-line options */ Loading @@ -727,6 +735,9 @@ main_scan(struct Masscan *masscan) if (masscan->nmap.ttl) template_set_ttl(tmplset, masscan->nmap.ttl); /* * Read back what we've set */ Loading Loading @@ -845,6 +856,7 @@ int main(int argc, char *argv[]) masscan->adapter_port = 0x10000; /* value not set */ masscan->shard.one = 1; masscan->shard.of = 1; masscan->payloads = payloads_create(); strcpy_s( masscan->rotate_directory, sizeof(masscan->rotate_directory), "."); Loading Loading @@ -925,6 +937,7 @@ int main(int argc, char *argv[]) */ { int x = 0; x += payloads_selftest(); x += blackrock_selftest(); x += rawsock_selftest(); x += randlcg_selftest(); Loading
src/masscan.h +2 −0 Original line number Diff line number Diff line Loading @@ -171,6 +171,8 @@ struct Masscan struct { unsigned timeout; } tcb; struct NmapPayloads *payloads; }; Loading
src/ranges.c +25 −7 Original line number Diff line number Diff line Loading @@ -14,6 +14,22 @@ #define REGRESS(x) if (!(x)) return (fprintf(stderr, "regression failed %s:%u\n", __FILE__, __LINE__)|1) /*************************************************************************** ***************************************************************************/ int rangelist_is_contains(const struct RangeList *task, unsigned number) { unsigned i; for (i=0; i<task->count; i++) { struct Range *range = &task->list[i]; if (range->begin <= number && number <= range->end) return 1; } return 0; } /*************************************************************************** * ??? ***************************************************************************/ Loading Loading @@ -511,7 +527,7 @@ regress_pick2() /*************************************************************************** ***************************************************************************/ void const char * rangelist_parse_ports(struct RangeList *ports, const char *string) { char *p = (char*)string; Loading Loading @@ -552,10 +568,8 @@ rangelist_parse_ports(struct RangeList *ports, const char *string) p += 2; } if (!isdigit(p[0] & 0xFF)) { fprintf(stderr, "CONF: bad port charactern = 0x%02x\n", p[0]); exit(1); } if (!isdigit(p[0] & 0xFF)) break; port = strtoul(p, &p, 0); end = port; Loading @@ -563,8 +577,6 @@ rangelist_parse_ports(struct RangeList *ports, const char *string) p++; end = strtoul(p, &p, 0); } if (*p == ',') p++; if (port > 0xFFFF || end > 0xFFFF || end < port) { fprintf(stderr, "CONF: bad ports: %u-%u\n", port, end); Loading @@ -572,7 +584,13 @@ rangelist_parse_ports(struct RangeList *ports, const char *string) } else { rangelist_add_range(ports, port+proto_offset, end+proto_offset); } if (*p == ',') p++; else break; } return p; } Loading
src/ranges.h +2 −1 Original line number Diff line number Diff line Loading @@ -25,11 +25,12 @@ struct RangeList void rangelist_add_range(struct RangeList *task, unsigned begin, unsigned end); void rangelist_remove_range(struct RangeList *task, unsigned begin, unsigned end); void rangelist_remove_range2(struct RangeList *task, struct Range range); int rangelist_is_contains(const struct RangeList *task, unsigned number); struct Range range_parse_ipv4(const char *line, unsigned *inout_offset, unsigned max); uint64_t rangelist_count(struct RangeList *targets); unsigned rangelist_pick(struct RangeList *targets, uint64_t i); void rangelist_parse_ports(struct RangeList *ports, const char *string); const char *rangelist_parse_ports(struct RangeList *ports, const char *string); void rangelist_free(struct RangeList *list); Loading