diff --git a/pcap_anonymize/layers/mac.py b/pcap_anonymize/layers/mac.py
index f03836d9405c5d5d2916f3d9528608e10c30bb5c..ffcdc1474f1701599403ab8b66b93031ca1f479e 100644
--- a/pcap_anonymize/layers/mac.py
+++ b/pcap_anonymize/layers/mac.py
@@ -125,7 +125,10 @@ def anonymize_mac(mac: str) -> str:
     # Multicast address:
     # do not anonymize
     if is_multicast:
-        return mac
+        if isinstance(mac, bytes):
+            return mac_bytes_to_str(mac)
+        elif isinstance(mac, str):
+            return mac
 
     ## U/L bit: first byte, second least-significant bit
     # U/L bit = 0 ==> Universally administered address (UAA)
@@ -221,8 +224,8 @@ def anonymize_dhcp(dhcp: BOOTP) -> BOOTP:
     
     for i, (code, value) in enumerate(dhcp.options):
         if code == DHCP_OPTION_CLIENT_ID and value[0] == DHCP_CLIENT_ID_TYPE_ETH:
-            mac = ":".join(f"{byte:02x}" for byte in value[1:7])
-            dhcp.options[i] = (code, anonymize_mac(mac))
+            mac_anon = mac_str_to_bytes(anonymize_mac(value[1:7]))
+            dhcp.options[i] = (code, value[0].to_bytes(1, BYTE_ORDER) + mac_anon)
             break
 
     return dhcp
diff --git a/test/test_mac.py b/test/test_mac.py
index 71795d7fb529775a13e3795d989a4693ec8bde6b..bb0bd836fa6708d95fe73a1d183dac803eade313 100644
--- a/test/test_mac.py
+++ b/test/test_mac.py
@@ -79,7 +79,7 @@ def test_anonymize_mac_multicast() -> None:
     The MAC address should not be anonymized.
     """
     assert anonymize_mac(mac_multicast) == mac_multicast
-    assert anonymize_mac(mac_multicast_bytes) == mac_multicast_bytes
+    assert mac_str_to_bytes(anonymize_mac(mac_multicast_bytes)) == mac_multicast_bytes
 
 
 def test_anonymize_mac_laa() -> None:
@@ -193,31 +193,57 @@ def test_anonymize_arp_uaa() -> None:
     assert arp_uaa.hwdst[10:] != mac_uaa[10:]
 
 
-# def test_anonymize_dhcp_multicast() -> None:
-#     """
-#     Test the function `anonymize_dhcp`,
-#     with multicast addresses.
-#     """
-#     dhcp = BOOTP(chaddr=mac_str_to_bytes(mac_multicast))
-#     anonymize_dhcp(dhcp)
-#     assert dhcp.chaddr == mac_multicast_bytes
-
-
-# def test_anonymize_dhcp_laa() -> None:
-#     """
-#     Test the function `anonymize_dhcp`,
-#     with locally administered addresses.
-#     """
-#     dhcp = BOOTP(chaddr=mac_str_to_bytes(mac_multicast))
-#     anonymize_dhcp(dhcp)
-#     assert get_ig_bit(dhcp.chaddr) == get_ig_bit(mac_multicast_bytes)
-
-
-# def test_anonymize_dhcp_multicast() -> None:
-#     """
-#     Test the function `anonymize_dhcp`,
-#     with multicast addresses.
-#     """
-#     dhcp = BOOTP(chaddr=mac_str_to_bytes(mac_multicast))
-#     anonymize_dhcp(dhcp)
-#     assert dhcp.chaddr == mac_multicast_bytes
+def test_anonymize_dhcp_multicast() -> None:
+    """
+    Test the function `anonymize_dhcp`,
+    with multicast addresses.
+    """
+    # Client hardware address
+    dhcp = BOOTP(chaddr=mac_str_to_bytes(mac_multicast))
+    anonymize_dhcp(dhcp)
+    assert dhcp.chaddr == mac_multicast_bytes
+
+    # Option: Client Identifier
+    dhcp /= DHCP(options=[("client_id", b"\x01" + mac_str_to_bytes(mac_multicast))])
+    anonymize_dhcp(dhcp)
+    assert dhcp.getlayer(DHCP).options[0][1][1:7] == mac_multicast_bytes
+
+
+def test_anonymize_dhcp_laa() -> None:
+    """
+    Test the function `anonymize_dhcp`,
+    with locally administered addresses.
+    """
+    # Client hardware address
+    dhcp = BOOTP(chaddr=mac_str_to_bytes(mac_laa))
+    anonymize_dhcp(dhcp)
+    assert dhcp.chaddr != mac_laa_bytes
+    assert get_ig_bit(dhcp.chaddr) == get_ig_bit(mac_laa_bytes)
+    assert get_ul_bit(dhcp.chaddr) == get_ul_bit(mac_laa_bytes)
+
+    # Option: Client Identifier
+    dhcp /= DHCP(options=[("client_id", b"\x01" + mac_str_to_bytes(mac_laa))])
+    anonymize_dhcp(dhcp)
+    mac_anon = dhcp.getlayer(DHCP).options[0][1][1:7]
+    assert mac_anon != mac_laa_bytes
+    assert get_ig_bit(mac_anon) == get_ig_bit(mac_laa_bytes)
+    assert get_ul_bit(mac_anon) == get_ul_bit(mac_laa_bytes)
+
+
+def test_anonymize_dhcp_uaa() -> None:
+    """
+    Test the function `anonymize_dhcp`,
+    with universally administered addresses.
+    """
+    # Client hardware address
+    dhcp = BOOTP(chaddr=mac_str_to_bytes(mac_uaa))
+    anonymize_dhcp(dhcp)
+    assert dhcp.chaddr[:3] == mac_uaa_bytes[:3]
+    assert dhcp.chaddr[3:] != mac_uaa_bytes[3:]
+
+    # Option: Client Identifier
+    dhcp /= DHCP(options=[("client_id", b"\x01" + mac_str_to_bytes(mac_uaa))])
+    anonymize_dhcp(dhcp)
+    mac_anon = dhcp.getlayer(DHCP).options[0][1][1:7]
+    assert mac_anon[:3] == mac_uaa_bytes[:3]
+    assert mac_anon[3:] != mac_uaa_bytes[3:]