@@ -346,28 +346,14 @@ masscan_echo_nic(struct Masscan *masscan, FILE *fp, unsigned i)
346
346
}
347
347
348
348
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 );
356
350
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 );
371
357
372
358
}
373
359
@@ -523,7 +509,7 @@ hexval(char c)
523
509
/***************************************************************************
524
510
***************************************************************************/
525
511
static int
526
- parse_mac_address (const char * text , unsigned char * mac )
512
+ parse_mac_address (const char * text , macaddress_t * mac )
527
513
{
528
514
unsigned i ;
529
515
@@ -546,7 +532,7 @@ parse_mac_address(const char *text, unsigned char *mac)
546
532
x |= hexval (c );
547
533
text ++ ;
548
534
549
- mac [i ] = (unsigned char )x ;
535
+ mac -> addr [i ] = (unsigned char )x ;
550
536
551
537
if (ispunct (* text & 0xFF ))
552
538
text ++ ;
@@ -1857,36 +1843,70 @@ masscan_set_parameter(struct Masscan *masscan,
1857
1843
} else if (EQUALS ("adapter-mac" , name ) || EQUALS ("spoof-mac" , name )
1858
1844
|| EQUALS ("source-mac" , name ) || EQUALS ("src-mac" , name )) {
1859
1845
/* Send packets FROM this MAC address */
1860
- unsigned char mac [6 ];
1846
+ macaddress_t source_mac ;
1847
+ int err ;
1861
1848
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 );
1864
1852
return ;
1865
1853
}
1866
1854
1867
1855
/* 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 */
1869
1859
return ;
1860
+ }
1870
1861
1871
1862
/* Warn if we are overwriting a Mac address */
1872
1863
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 );
1874
1867
}
1875
1868
1876
- memcpy ( masscan -> nic [index ].my_mac , mac , 6 ) ;
1869
+ masscan -> nic [index ].source_mac = source_mac ;
1877
1870
masscan -> nic [index ].my_mac_count = 1 ;
1878
1871
}
1879
1872
else if (EQUALS ("router-mac" , name ) || EQUALS ("router" , name )
1880
1873
|| EQUALS ("dest-mac" , name ) || EQUALS ("destination-mac" , name )
1881
1874
|| 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
+ }
1883
1896
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 );
1886
1906
return ;
1887
1907
}
1888
1908
1889
- memcpy ( masscan -> nic [index ].router_mac , mac , 6 ) ;
1909
+ masscan -> nic [index ].router_mac_ipv6 = router_mac ;
1890
1910
}
1891
1911
else if (EQUALS ("router-ip" , name )) {
1892
1912
/* Send packets FROM this IP address */
0 commit comments