Commit 833933a5 authored by Robert David Graham's avatar Robert David Graham
Browse files

mac addr can now be zero

parent f802dfb2
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -144,12 +144,12 @@ masscan_echo_nic(struct Masscan *masscan, FILE *fp, unsigned i)
            );

    fprintf(fp, "adapter-mac%s = %02x:%02x:%02x:%02x:%02x:%02x\n", zzz,
            masscan->nic[i].adapter_mac[0],
            masscan->nic[i].adapter_mac[1],
            masscan->nic[i].adapter_mac[2],
            masscan->nic[i].adapter_mac[3],
            masscan->nic[i].adapter_mac[4],
            masscan->nic[i].adapter_mac[5]);
            masscan->nic[i].my_mac[0],
            masscan->nic[i].my_mac[1],
            masscan->nic[i].my_mac[2],
            masscan->nic[i].my_mac[3],
            masscan->nic[i].my_mac[4],
            masscan->nic[i].my_mac[5]);
    if (masscan->nic[i].router_ip) {
        fprintf(fp, "router-ip%s = %u.%u.%u.%u\n", zzz,
            (masscan->nic[i].router_ip>>24)&0xFF,
@@ -695,7 +695,17 @@ masscan_set_parameter(struct Masscan *masscan,
            return;
        }
        
        memcpy(masscan->nic[index].adapter_mac, mac, 6);
        /* Check for duplicates */
        if (memcmp(masscan->nic[index].my_mac, mac, 6) == 0)
            return;
        
        /* Warn if we are overwriting a Mac address */
        if (masscan->nic[index].my_mac_count != 0) {
            LOG(0, "WARNING: overwriting MAC address\n");
        }

        memcpy(masscan->nic[index].my_mac, mac, 6);
        masscan->nic[index].my_mac_count = 1;
    }
    else if (EQUALS("router-mac", name) || EQUALS("router", name)
             || EQUALS("dest-mac", name) || EQUALS("destination-mac", name)
@@ -1703,3 +1713,4 @@ mainconf_selftest()

    return 0;
}
+10 −5
Original line number Diff line number Diff line
@@ -87,9 +87,11 @@ masscan_initialize_adapter(
     * matter what this address is, but to be a "responsible" citizen we
     * try to use the hardware address in the network card.
     */
    memcpy(adapter_mac, masscan->nic[index].adapter_mac, 6);
    memcpy(adapter_mac, masscan->nic[index].my_mac, 6);
    if (memcmp(adapter_mac, "\0\0\0\0\0\0", 6) == 0) {
        rawsock_get_adapter_mac(ifname, adapter_mac);
        unsigned is_error;
        
        is_error = rawsock_get_adapter_mac(ifname, adapter_mac);
        LOG(2, "auto-detected: adapter-mac=%02x-%02x-%02x-%02x-%02x-%02x\n",
            adapter_mac[0],
            adapter_mac[1],
@@ -99,9 +101,12 @@ masscan_initialize_adapter(
            adapter_mac[5]
            );
    }
    if (memcmp(adapter_mac, "\0\0\0\0\0\0", 6) == 0) {
        fprintf(stderr, "FAIL: failed to detect MAC address of interface: \"%s\"\n", ifname);
        fprintf(stderr, " [hint] try something like \"--adapter-mac 00-11-22-33-44-55\"\n");
    if (memcmp(adapter_mac, "\0\0\0\0\0\0", 6) == 0 
            && masscan->nic[index].my_mac_count == 0) {
        fprintf(stderr, "FAIL: failed to detect MAC address of interface:" 
                        " \"%s\"\n", ifname);
        fprintf(stderr, " [hint] try something like " 
                        "\"--adapter-mac 00-11-22-33-44-55\"\n");
        return -1;
    }

+6 −5
Original line number Diff line number Diff line
@@ -1025,15 +1025,16 @@ main_scan(struct Masscan *masscan)
        if (masscan->nic[index].src.ip.range == 0) {
            LOG(0, "FAIL: failed to detect IP of interface\n");
            LOG(0, " [hint] did you spell the name correctly?\n");
            LOG(0, " [hint] if it has no IP address, manually set with \"--adapter-ip 192.168.100.5\"\n");
            LOG(0, " [hint] if it has no IP address, "
                    "manually set with \"--adapter-ip 192.168.100.5\"\n");
            exit(1);
        }

        /*
         * Initialize the TCP packet template. The way this works is that we parse
         * an existing TCP packet, and use that as the template for scanning. Then,
         * we adjust the template with additional features, such as the IP address
         * and so on.
         * Initialize the TCP packet template. The way this works is that
         * we parse an existing TCP packet, and use that as the template for
         * scanning. Then, we adjust the template with additional features,
         * such as the IP address and so on.
         */
        template_packet_init(
                    parms->tmplset,
+2 −1
Original line number Diff line number Diff line
@@ -51,9 +51,10 @@ struct Masscan
        char ifname[256];
        struct Adapter *adapter;
        struct Source src;
        unsigned char adapter_mac[6];
        unsigned char my_mac[6];
        unsigned char router_mac[6];
        unsigned router_ip;
        unsigned char my_mac_count;
    } nic[8];
    unsigned nic_count;

+47 −47
Original line number Diff line number Diff line
@@ -228,82 +228,79 @@
		11A9219217DBCC7E00DDFD32 /* src */ = {
			isa = PBXGroup;
			children = (
				11B22ED018641DCC00DA5438 /* proto-banout.c */,
				11B22ED118641DCC00DA5438 /* proto-banout.h */,
				11B22ED218641DCC00DA5438 /* proto-ssl-test.c */,
				11B22ED318641DCC00DA5438 /* proto-x509.c */,
				11B22ED418641DCC00DA5438 /* proto-x509.h */,
				11A8681C1819A6F7008E00B8 /* proto-zeroaccess.c */,
				11A8681D1819A6F7008E00B8 /* proto-zeroaccess.h */,
				11A868081816F3A7008E00B8 /* in-binary.c */,
				11A868091816F3A7008E00B8 /* in-binary.h */,
				11A8680A1816F3A7008E00B8 /* main-globals.h */,
				11A8680B1816F3A7008E00B8 /* main-src.c */,
				11A8680C1816F3A7008E00B8 /* main-src.h */,
				11A8680D1816F3A7008E00B8 /* masscan-app.c */,
				11A8680E1816F3A7008E00B8 /* masscan-app.h */,
				11A8680F1816F3A7008E00B8 /* out-redis.c */,
				11A868101816F3A7008E00B8 /* pixie-file.c */,
				11A868111816F3A7008E00B8 /* pixie-file.h */,
				11A868121816F3A7008E00B8 /* pixie-sockets.h */,
				11A868131816F3A7008E00B8 /* siphash24.c */,
				11A868141816F3A7008E00B8 /* siphash24.h */,
				115C0CA318035BC5004E6CD7 /* out-record.h */,
				115C0CA418035BC5004E6CD7 /* proto-dns-parse.h */,
				115C0CA518035BC5004E6CD7 /* proto-netbios.c */,
				115C0CA618035BC5004E6CD7 /* proto-netbios.h */,
				115C0CA718035BC5004E6CD7 /* proto-ssl.c */,
				115C0CA818035BC5004E6CD7 /* proto-ssl.h */,
				115C0CA918035BC5004E6CD7 /* templ-port.h */,
				115C0CAA18035BC5004E6CD7 /* unusedparm.h */,
				11A921AE17DBCC7E00DDFD32 /* proto-banner1.c */,
				11B039C917EA092B00925E7E /* proto-snmp.c */,
				11B039CA17EA092B00925E7E /* proto-snmp.h */,
				11B039C317E7834000925E7E /* proto-dns.c */,
				11B039C417E7834000925E7E /* proto-dns.h */,
				11B039C517E7834000925E7E /* proto-udp.c */,
				11B039C617E7834000925E7E /* proto-udp.h */,
				11AC80E717E0DAD4001BCE3A /* proto-http.c */,
				11AC80E817E0DAD4001BCE3A /* proto-http.h */,
				11AC80E917E0DAD4001BCE3A /* proto-icmp.c */,
				11AC80EA17E0DAD4001BCE3A /* proto-icmp.h */,
				11AC80EB17E0DAD4001BCE3A /* proto-ssh.c */,
				11AC80EC17E0DAD4001BCE3A /* proto-ssh.h */,
				11B2DD9C17DE4DD8007FC363 /* templ-payloads.c */,
				11B2DD9D17DE4DD8007FC363 /* templ-payloads.h */,
				11A9219317DBCC7E00DDFD32 /* event-timeout.c */,
				11A9219417DBCC7E00DDFD32 /* event-timeout.h */,
				11A868081816F3A7008E00B8 /* in-binary.c */,
				11A868091816F3A7008E00B8 /* in-binary.h */,
				11A9219517DBCC7E00DDFD32 /* logger.c */,
				11A9219617DBCC7E00DDFD32 /* logger.h */,
				11A9219717DBCC7E00DDFD32 /* main-conf.c */,
				11A9219817DBCC7E00DDFD32 /* main-dedup.c */,
				11A9219917DBCC7E00DDFD32 /* main-dedup.h */,
				11A8680A1816F3A7008E00B8 /* main-globals.h */,
				11A9219A17DBCC7E00DDFD32 /* main-initadapter.c */,
				11B039C017E506B400925E7E /* main-listscan.c */,
				11AC80F517E0ED47001BCE3A /* main-ptrace.c */,
				11AC80F817E0EDA7001BCE3A /* main-ptrace.h */,
				11A8680B1816F3A7008E00B8 /* main-src.c */,
				11A8680C1816F3A7008E00B8 /* main-src.h */,
				11A9219B17DBCC7E00DDFD32 /* main-status.c */,
				11A9219C17DBCC7E00DDFD32 /* main-status.h */,
				11A9219D17DBCC7E00DDFD32 /* main-throttle.c */,
				11A9219E17DBCC7E00DDFD32 /* main-throttle.h */,
				11B039C017E506B400925E7E /* main-listscan.c */,
				11A9219F17DBCC7E00DDFD32 /* main.c */,
				11A8680D1816F3A7008E00B8 /* masscan-app.c */,
				11A8680E1816F3A7008E00B8 /* masscan-app.h */,
				113AD3B818208A1900D5E067 /* masscan-status.h */,
				11A921A017DBCC7E00DDFD32 /* masscan.h */,
				11A921A117DBCC7E00DDFD32 /* out-binary.c */,
				11A921A217DBCC7E00DDFD32 /* out-null.c */,
				115C0CA318035BC5004E6CD7 /* out-record.h */,
				11A8680F1816F3A7008E00B8 /* out-redis.c */,
				11A921A317DBCC7E00DDFD32 /* out-text.c */,
				11A921A417DBCC7E00DDFD32 /* out-xml.c */,
				11A921A517DBCC7E00DDFD32 /* output.c */,
				11A921A617DBCC7E00DDFD32 /* output.h */,
				11A921A717DBCC7E00DDFD32 /* packet-queue.h */,
				11A868101816F3A7008E00B8 /* pixie-file.c */,
				11A868111816F3A7008E00B8 /* pixie-file.h */,
				11A868121816F3A7008E00B8 /* pixie-sockets.h */,
				11A921A817DBCC7E00DDFD32 /* pixie-threads.c */,
				11A921A917DBCC7E00DDFD32 /* pixie-threads.h */,
				11A921AA17DBCC7E00DDFD32 /* pixie-timer.c */,
				11A921AB17DBCC7E00DDFD32 /* pixie-timer.h */,
				11A921AC17DBCC7E00DDFD32 /* proto-arp.c */,
				11A921AD17DBCC7E00DDFD32 /* proto-arp.h */,
				11A921AE17DBCC7E00DDFD32 /* proto-banner1.c */,
				11A921AF17DBCC7E00DDFD32 /* proto-banner1.h */,
				11B22ED018641DCC00DA5438 /* proto-banout.c */,
				11B22ED118641DCC00DA5438 /* proto-banout.h */,
				115C0CA418035BC5004E6CD7 /* proto-dns-parse.h */,
				11B039C317E7834000925E7E /* proto-dns.c */,
				11B039C417E7834000925E7E /* proto-dns.h */,
				11AC80E717E0DAD4001BCE3A /* proto-http.c */,
				11AC80E817E0DAD4001BCE3A /* proto-http.h */,
				11AC80E917E0DAD4001BCE3A /* proto-icmp.c */,
				11AC80EA17E0DAD4001BCE3A /* proto-icmp.h */,
				115C0CA518035BC5004E6CD7 /* proto-netbios.c */,
				115C0CA618035BC5004E6CD7 /* proto-netbios.h */,
				11A921B017DBCC7E00DDFD32 /* proto-preprocess.c */,
				11A921B117DBCC7E00DDFD32 /* proto-preprocess.h */,
				11B039C917EA092B00925E7E /* proto-snmp.c */,
				11B039CA17EA092B00925E7E /* proto-snmp.h */,
				11AC80EB17E0DAD4001BCE3A /* proto-ssh.c */,
				11AC80EC17E0DAD4001BCE3A /* proto-ssh.h */,
				11B22ED218641DCC00DA5438 /* proto-ssl-test.c */,
				115C0CA718035BC5004E6CD7 /* proto-ssl.c */,
				115C0CA818035BC5004E6CD7 /* proto-ssl.h */,
				11A921B217DBCC7E00DDFD32 /* proto-tcp.c */,
				11A921B317DBCC7E00DDFD32 /* proto-tcp.h */,
				11B039C517E7834000925E7E /* proto-udp.c */,
				11B039C617E7834000925E7E /* proto-udp.h */,
				11B22ED318641DCC00DA5438 /* proto-x509.c */,
				11B22ED418641DCC00DA5438 /* proto-x509.h */,
				11A8681C1819A6F7008E00B8 /* proto-zeroaccess.c */,
				11A8681D1819A6F7008E00B8 /* proto-zeroaccess.h */,
				11A921B417DBCC7E00DDFD32 /* rand-blackrock.c */,
				11A921B517DBCC7E00DDFD32 /* rand-blackrock.h */,
				11A921B617DBCC7E00DDFD32 /* rand-lcg.c */,
@@ -325,6 +322,8 @@
				11A921C617DBCC7E00DDFD32 /* rawsock.h */,
				11A921C717DBCC7E00DDFD32 /* rte-ring.c */,
				11A921C817DBCC7E00DDFD32 /* rte-ring.h */,
				11A868131816F3A7008E00B8 /* siphash24.c */,
				11A868141816F3A7008E00B8 /* siphash24.h */,
				11A921C917DBCC7E00DDFD32 /* smack.h */,
				11A921CA17DBCC7E00DDFD32 /* smack1.c */,
				11A921CB17DBCC7E00DDFD32 /* smackqueue.c */,
@@ -333,13 +332,14 @@
				11A921CE17DBCC7E00DDFD32 /* string_s.h */,
				11A921CF17DBCC7E00DDFD32 /* syn-cookie.c */,
				11A921D017DBCC7E00DDFD32 /* syn-cookie.h */,
				11B2DD9C17DE4DD8007FC363 /* templ-payloads.c */,
				11B2DD9D17DE4DD8007FC363 /* templ-payloads.h */,
				11A921D117DBCC7E00DDFD32 /* templ-pkt.c */,
				11A921D217DBCC7E00DDFD32 /* templ-pkt.h */,
				115C0CA918035BC5004E6CD7 /* templ-port.h */,
				115C0CAA18035BC5004E6CD7 /* unusedparm.h */,
				11A921D317DBCC7E00DDFD32 /* xring.c */,
				11A921D417DBCC7E00DDFD32 /* xring.h */,
				11AC80F517E0ED47001BCE3A /* main-ptrace.c */,
				11AC80F817E0EDA7001BCE3A /* main-ptrace.h */,
				113AD3B818208A1900D5E067 /* masscan-status.h */,
			);
			name = src;
			path = ../src;
+1 −1

File changed.

Contains only whitespace changes.

Loading