Skip to content

Commit eb38052

Browse files
1 parent 0775676 commit eb38052

23 files changed

+615
-357
lines changed

src/main-conf.c

+53-33
Original file line numberDiff line numberDiff line change
@@ -346,28 +346,14 @@ masscan_echo_nic(struct Masscan *masscan, FILE *fp, unsigned i)
346346
}
347347

348348
if (masscan->nic[i].my_mac_count)
349-
fprintf(fp, "adapter-mac%s = %02x:%02x:%02x:%02x:%02x:%02x\n", idx_str,
350-
masscan->nic[i].my_mac[0],
351-
masscan->nic[i].my_mac[1],
352-
masscan->nic[i].my_mac[2],
353-
masscan->nic[i].my_mac[3],
354-
masscan->nic[i].my_mac[4],
355-
masscan->nic[i].my_mac[5]);
349+
fprintf(fp, "adapter-mac%s = %s\n", idx_str, macaddress_fmt(masscan->nic[i].source_mac).string);
356350
if (masscan->nic[i].router_ip) {
357-
fprintf(fp, "router-ip%s = %u.%u.%u.%u\n", idx_str,
358-
(masscan->nic[i].router_ip>>24)&0xFF,
359-
(masscan->nic[i].router_ip>>16)&0xFF,
360-
(masscan->nic[i].router_ip>> 8)&0xFF,
361-
(masscan->nic[i].router_ip>> 0)&0xFF
362-
);
363-
} else if (memcmp(masscan->nic[i].router_mac, "\0\0\0\0\0\0", 6) != 0)
364-
fprintf(fp, "router-mac%s = %02x:%02x:%02x:%02x:%02x:%02x\n", idx_str,
365-
masscan->nic[i].router_mac[0],
366-
masscan->nic[i].router_mac[1],
367-
masscan->nic[i].router_mac[2],
368-
masscan->nic[i].router_mac[3],
369-
masscan->nic[i].router_mac[4],
370-
masscan->nic[i].router_mac[5]);
351+
fprintf(fp, "router-ip%s = %s\n", idx_str, ipv4address_fmt(masscan->nic[i].router_ip).string);
352+
}
353+
if (!macaddress_is_zero(masscan->nic[i].router_mac_ipv4))
354+
fprintf(fp, "router-mac-ipv4%s = %s\n", idx_str, macaddress_fmt(masscan->nic[i].router_mac_ipv4).string);
355+
if (!macaddress_is_zero(masscan->nic[i].router_mac_ipv6))
356+
fprintf(fp, "router-mac-ipv6%s = %s\n", idx_str, macaddress_fmt(masscan->nic[i].router_mac_ipv6).string);
371357

372358
}
373359

@@ -523,7 +509,7 @@ hexval(char c)
523509
/***************************************************************************
524510
***************************************************************************/
525511
static int
526-
parse_mac_address(const char *text, unsigned char *mac)
512+
parse_mac_address(const char *text, macaddress_t *mac)
527513
{
528514
unsigned i;
529515

@@ -546,7 +532,7 @@ parse_mac_address(const char *text, unsigned char *mac)
546532
x |= hexval(c);
547533
text++;
548534

549-
mac[i] = (unsigned char)x;
535+
mac->addr[i] = (unsigned char)x;
550536

551537
if (ispunct(*text & 0xFF))
552538
text++;
@@ -1857,36 +1843,70 @@ masscan_set_parameter(struct Masscan *masscan,
18571843
} else if (EQUALS("adapter-mac", name) || EQUALS("spoof-mac", name)
18581844
|| EQUALS("source-mac", name) || EQUALS("src-mac", name)) {
18591845
/* Send packets FROM this MAC address */
1860-
unsigned char mac[6];
1846+
macaddress_t source_mac;
1847+
int err;
18611848

1862-
if (parse_mac_address(value, mac) != 0) {
1863-
fprintf(stderr, "CONF: bad MAC address: %s=%s\n", name, value);
1849+
err = parse_mac_address(value, &source_mac);
1850+
if (err) {
1851+
LOG(0, "[-] CONF: bad MAC address: %s = %s\n", name, value);
18641852
return;
18651853
}
18661854

18671855
/* Check for duplicates */
1868-
if (memcmp(masscan->nic[index].my_mac, mac, 6) == 0)
1856+
if (macaddress_is_equal(masscan->nic[index].source_mac, source_mac)) {
1857+
/* supresses warning message about duplicate MAC addresses if
1858+
* they are in fact the saem */
18691859
return;
1860+
}
18701861

18711862
/* Warn if we are overwriting a Mac address */
18721863
if (masscan->nic[index].my_mac_count != 0) {
1873-
LOG(0, "WARNING: overwriting MAC address\n");
1864+
LOG(0, "[-] WARNING: overwriting MAC address, was %s, now %s\n",
1865+
macaddress_fmt(masscan->nic[index].source_mac).string,
1866+
macaddress_fmt(source_mac).string);
18741867
}
18751868

1876-
memcpy(masscan->nic[index].my_mac, mac, 6);
1869+
masscan->nic[index].source_mac = source_mac;
18771870
masscan->nic[index].my_mac_count = 1;
18781871
}
18791872
else if (EQUALS("router-mac", name) || EQUALS("router", name)
18801873
|| EQUALS("dest-mac", name) || EQUALS("destination-mac", name)
18811874
|| EQUALS("dst-mac", name) || EQUALS("target-mac", name)) {
1882-
unsigned char mac[6];
1875+
macaddress_t router_mac;
1876+
int err;
1877+
1878+
err = parse_mac_address(value, &router_mac);
1879+
if (err) {
1880+
fprintf(stderr, "[-] CONF: bad MAC address: %s = %s\n", name, value);
1881+
return;
1882+
}
1883+
1884+
masscan->nic[index].router_mac_ipv4 = router_mac;
1885+
masscan->nic[index].router_mac_ipv6 = router_mac;
1886+
}
1887+
else if (EQUALS("router-mac-ipv4", name) || EQUALS("router-ipv4", name)) {
1888+
macaddress_t router_mac;
1889+
int err;
1890+
1891+
err = parse_mac_address(value, &router_mac);
1892+
if (err) {
1893+
fprintf(stderr, "[-] CONF: bad MAC address: %s = %s\n", name, value);
1894+
return;
1895+
}
18831896

1884-
if (parse_mac_address(value, mac) != 0) {
1885-
fprintf(stderr, "CONF: bad MAC address: %s=%s\n", name, value);
1897+
masscan->nic[index].router_mac_ipv4 = router_mac;
1898+
}
1899+
else if (EQUALS("router-mac-ipv6", name) || EQUALS("router-ipv6", name)) {
1900+
macaddress_t router_mac;
1901+
int err;
1902+
1903+
err = parse_mac_address(value, &router_mac);
1904+
if (err) {
1905+
fprintf(stderr, "[-] CONF: bad MAC address: %s = %s\n", name, value);
18861906
return;
18871907
}
18881908

1889-
memcpy(masscan->nic[index].router_mac, mac, 6);
1909+
masscan->nic[index].router_mac_ipv6 = router_mac;
18901910
}
18911911
else if (EQUALS("router-ip", name)) {
18921912
/* Send packets FROM this IP address */

0 commit comments

Comments
 (0)