The original objective seems to have been to apply padding, but this is not done at all: instead, set a precision. -JeR --- a/src/shape_arp_hdr.c +++ b/src/shape_arp_hdr.c @@ -94,7 +94,7 @@ if(format_ethernet_addr(ahdr_o.s_eaddr, s_neaddr) == 0) fatal_error("Invalid sender ethernet address"); - snprintf(ahdr_o.shw_addr, 18, "%0X:%0X:%0X:%0X:%0X:%0X", + snprintf(ahdr_o.shw_addr, 18, "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X", s_neaddr[0], s_neaddr[1], s_neaddr[2], s_neaddr[3], s_neaddr[4], s_neaddr[5]); if(ahdr_o.r_paddr == NULL) @@ -139,7 +139,7 @@ if(format_ethernet_addr(ahdr_o.r_eaddr, r_neaddr) == 0) fatal_error("Invalid receiver ethernet address"); - snprintf(ahdr_o.rhw_addr, 18, "%0X:%0X:%0X:%0X:%0X:%0X", + snprintf(ahdr_o.rhw_addr, 18, "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X", r_neaddr[0], r_neaddr[1], r_neaddr[2], r_neaddr[3], r_neaddr[4], r_neaddr[5]); if(libnet_build_arp( --- a/src/shape_ethernet_hdr.c +++ b/src/shape_ethernet_hdr.c @@ -56,7 +56,7 @@ if(format_ethernet_addr(ehdr_o.s_addr, us_addr) == 0) fatal_error("Invalid source ethernet address"); - snprintf(ehdr_o.shw_addr, 18, "%0X:%0X:%0X:%0X:%0X:%0X", + snprintf(ehdr_o.shw_addr, 18, "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X", us_addr[0], us_addr[1], us_addr[2], us_addr[3], us_addr[4], us_addr[5]); if(ehdr_o.d_addr == NULL && injection_type == ETHERTYPE_ARP) @@ -71,7 +71,7 @@ if(format_ethernet_addr(ehdr_o.d_addr, ud_addr) == 0) fatal_error("Invalid destination ethernet address"); - snprintf(ehdr_o.dhw_addr, 18, "%0X:%0X:%0X:%0X:%0X:%0X", + snprintf(ehdr_o.dhw_addr, 18, "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X", ud_addr[0], ud_addr[1], ud_addr[2], ud_addr[3], ud_addr[4], ud_addr[5]); if(libnet_build_ethernet(