4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / tools.py PY
def rotate(a, n):
    return a[n:] + a[:n]


def getNextMulticastMAC(addr):
    addr = addr.split(":")
    ret_addr = ""
    ret_addr = addr[0] + ":" + addr[1] + ":" + addr[2] + ":"
    ret_addr += str(format((int(addr[-1], 16) + 1) % 101, "02x"))
    ret_addr += ":"
    ret_addr += str(format((int(addr[-2], 16) + 1) % 101, "02x"))
    ret_addr += ":"
    ret_addr += str(format((int(addr[-3], 16) + 1) % 101, "02x"))

    if(ret_addr == "01:00:5e:00:00:00"):
        return "01:00:5e:01:01:01"
    else:
        return ret_addr


def printPacket(packet):
    p_len = 0
    if("IP" in str(packet.layers)):
        p_len = int(packet['IP'].get_field_value('len'))
    else:
        p_len = int(packet.layers[3].get_field_value('len'))
    p_sa = str(packet.layers[2].get_field_value('sa_resolved'))
    p_bssid = str(packet.layers[2].get_field_value('bssid_resolved'))
    p_da = str(packet.layers[2].get_field_value('da_resolved'))
    p_ta = str(packet.layers[2].get_field_value('ta_resolved'))

    print("Got packet with len (" + str(p_len) + ") - Source Address: " + str(p_sa) +
          " | bssid: " + str(p_bssid) + " | Destination Address: " + str(p_da) + "| Transmitter Address: " + str(p_ta))


def checkPacketQoS(packet):
    if(str(packet.layers[2].get_field_value('fc_type_subtype')) == "40"):
        return True
    else:
        return False


def checkPacketFCS(packet):
    if(str(packet.layers[2].get_field_value('fcs_status')) != "0" and
        str(packet.layers[2].get_field_value('fc_type')) == "2" and
        str(packet.layers[2].get_field_value('fc_subtype')) == "8" and
        str(packet.layers[2].get_field_value('fc_version')) == "0" and
            str(packet.layers[2].get_field_value('flags')) == "0x00000041"):
        return True
    else:
        return False


def isMulticastAddress(address):
    address_splitted = str(address.upper()).split(':')
    #address_splitted = address_splitted
    if(address_splitted[0] == "01" and
        address_splitted[1] == "00" and
        address_splitted[2] == "5E" and
        address_splitted[-1] == address_splitted[-2] and
            address_splitted[-1] == address_splitted[-3]):
        return True
    else:
        return False