示例#1
0
def create_packet_padr(dst, src, accookie, acname, service):
    """
    Create PADR packet
    :param dst: Destination MAC
    :param src: Source MAC
    :param accookie: AC-Cookie tag
    :param acname: AC-Name tag
    :param service: Service-Name tag
    :return: packet
    """
    tags = []

    tags.append(
        PPPoE_Tag(type='Host-Uniq', data=b'\x08\xf4\x18\x35\x80\xff\xff\xff'))

    if accookie != None:
        tags.append(PPPoE_Tag(type='AC-Cookie', data=accookie))

    if acname != None:
        tags.append(PPPoE_Tag(type='AC-Name', data=acname))

    if service != None:
        tags.append(PPPoE_Tag(type='Service-Name', data=service))

    packet = Ether(dst=dst, src=src, type=0x8863) / \
        PPPoED(version=1, type=1, code=0x19, sessionid=0x0000, tags=tags)
    return packet
示例#2
0
    def runTest(self):
        # FIXME: using a dummy payload will generate malformed PPP packets,
        #  instead we should use appropriate PPP protocol values and PPPoED
        #  payload (tags)
        # https://www.cloudshark.org/captures/f79aea31ad53
        pkts = {
            "PADO": Ether(src=SWITCH_MAC, dst=HOST1_MAC) / \
                    PPPoED(version=1, type=1, code=PPPOED_CODE_PADO) / \
                    "dummy pppoed payload",
            "PADS": Ether(src=SWITCH_MAC, dst=HOST1_MAC) / \
                    PPPoED(version=1, type=1, code=PPPOED_CODE_PADS) / \
                    "dummy pppoed payload"
        }

        print ""
        for pkt_type, pkt in pkts.items():
            print "Testing %s packet..." % pkt_type
            self.doRunTest(pkt)
示例#3
0
    def runTest(self):
        # FIXME: using a dummy payload will generate malformed PPP packets,
        #  instead we should use appropriate PPP protocol values and PPPoED
        #  payload (tags)
        # https://www.cloudshark.org/captures/f79aea31ad53
        pkts = {
            "PADI": Ether(src=HOST1_MAC, dst=BROADCAST_MAC) / \
                    PPPoED(version=1, type=1, code=PPPOED_CODE_PADI) / \
                    "dummy pppoed payload",
            "PADR": Ether(src=HOST1_MAC, dst=SWITCH_MAC) / \
                    PPPoED(version=1, type=1, code=PPPOED_CODE_PADR) / \
                    "dummy pppoed payload",
        }

        print ""
        for line_mapped in [True, False]:
            for pkt_type, pkt in pkts.items():
                print "Testing %s packet, line_mapped=%s..." \
                      % (pkt_type, line_mapped)
                self.doRunTest(pkt, line_mapped)
示例#4
0
def create_packet_padi(service):
    """
    Create PADI packet
    :param service: Service-Name tag
    :return: packet
    """
    tags = []

    tags.append(
        PPPoE_Tag(type='Host-Uniq', data=b'\x08\xf4\x18\x35\x80\xff\xff\xff'))

    if service != None:
        tags.append(PPPoE_Tag(type='Service-Name', data=service))

    packet = Ether(dst="ff:ff:ff:ff:ff:ff", src="32:ef:21:95:12:0a", type=0x8863) / \
        PPPoED(version=1, type=1, code=0x09, sessionid=0x0000, tags=tags)
    return packet
示例#5
0
def create_packet_padi(service, number_ses):
    """
    Create PADI packet
    :param service: Service-Name tag
    :return: packet
    """

    tags = []

    tags.append(PPPoE_Tag(type='Host-Uniq', data=random_hU()))

    if service != None:
        tags.append(PPPoE_Tag(type='Service-Name', data=service))

    packet = Ether(dst="ff:ff:ff:ff:ff:ff", src=get_next_mac(number_ses), type=0x8863) / \
        PPPoED(version=1, type=1, code=0x09, sessionid=0x0000, tags=tags)

    return packet
示例#6
0
    def create_stream_pppoe_discovery(self, src_if, dst_if,
                                      client_mac, count=1):
        packets = []
        for i in range(count):
            # create packet info stored in the test case instance
            info = self.create_packet_info(src_if, dst_if)
            # convert the info into packet payload
            payload = self.info_to_payload(info)
            # create the packet itself
            p = (Ether(dst=src_if.local_mac, src=client_mac) /
                 PPPoED(sessionid=0) /
                 Raw(payload))
            # store a copy of the packet in the packet info
            info.data = p.copy()
            # append the packet to the list
            packets.append(p)

        # return the created packet list
        return packets