Skip to content
Extraits de code Groupes Projets
IGMPv3mr.py 1,11 ko
Newer Older
  • Learn to ignore specific revisions
  • François De Keersmaeker's avatar
    François De Keersmaeker a validé
    import logging
    
    import scapy.all as scapy
    from scapy.contrib import igmpv3
    from packet.Packet import Packet
    
    class IGMPv3mr(Packet):
        """
        IGMP Version 3 Membership Report packet.
        """
    
        # Class variables
        name = "IGMPv3mr"
    
    
    
    François De Keersmaeker's avatar
    François De Keersmaeker a validé
        def tweak(self) -> dict:
    
            """
            Tweak the IGMPv3 Membership Report packet,
            by randomizing all group addresses.
    
    
    François De Keersmaeker's avatar
    François De Keersmaeker a validé
            :return: Dictionary containing tweak information.
            """
    
            # Set random IP address for all group records
    
    François De Keersmaeker's avatar
    François De Keersmaeker a validé
            old_value = ""
            new_value = ""
    
            groups = self.packet.getfieldval("records")
    
    François De Keersmaeker's avatar
    François De Keersmaeker a validé
            i = 0
    
    François De Keersmaeker's avatar
    François De Keersmaeker a validé
                if i != 0:
                    old_value += "-"
                    new_value += "-"
                old_value += group.getfieldval("maddr")
                new_address = Packet.random_ip_address(version=4)
                new_value += new_address
                group.setfieldval("maddr", new_address)
                i += 1
    
            self.update_fields()
    
    François De Keersmaeker's avatar
    François De Keersmaeker a validé
    
            # Return value: dictionary containing tweak information
            return self.get_dict_log("maddr", old_value, new_value)