Beispiel #1
0
def build_syn_pkt(local_addr, peer_addr):
    pkt = testutils.simple_tcp_packet(pktlen=54,
                                      ip_src=local_addr,
                                      ip_dst=peer_addr,
                                      tcp_dport=BGP_PORT,
                                      tcp_flags="S")
    exp_packet = Mask(pkt)
    exp_packet.set_do_not_care_scapy(scapy.Ether, "dst")
    exp_packet.set_do_not_care_scapy(scapy.Ether, "src")

    exp_packet.set_do_not_care_scapy(scapy.IP, "version")
    exp_packet.set_do_not_care_scapy(scapy.IP, "ihl")
    exp_packet.set_do_not_care_scapy(scapy.IP, "tos")
    exp_packet.set_do_not_care_scapy(scapy.IP, "len")
    exp_packet.set_do_not_care_scapy(scapy.IP, "flags")
    exp_packet.set_do_not_care_scapy(scapy.IP, "id")
    exp_packet.set_do_not_care_scapy(scapy.IP, "frag")
    exp_packet.set_do_not_care_scapy(scapy.IP, "ttl")
    exp_packet.set_do_not_care_scapy(scapy.IP, "chksum")
    exp_packet.set_do_not_care_scapy(scapy.IP, "options")

    exp_packet.set_do_not_care_scapy(scapy.TCP, "sport")
    exp_packet.set_do_not_care_scapy(scapy.TCP, "seq")
    exp_packet.set_do_not_care_scapy(scapy.TCP, "ack")
    exp_packet.set_do_not_care_scapy(scapy.TCP, "reserved")
    exp_packet.set_do_not_care_scapy(scapy.TCP, "dataofs")
    exp_packet.set_do_not_care_scapy(scapy.TCP, "window")
    exp_packet.set_do_not_care_scapy(scapy.TCP, "chksum")
    exp_packet.set_do_not_care_scapy(scapy.TCP, "urgptr")

    exp_packet.set_ignore_extra_bytes()
    return exp_packet
Beispiel #2
0
    def generate_expected_packet(self, inner_pkt):
        """
        Generate ip_in_ip packet for verifying.
        """
        inner_pkt = inner_pkt.copy()
        inner_pkt.ttl = inner_pkt.ttl - 1
        pkt = scapy.Ether(dst=self.active_tor_mac, src=self.standby_tor_mac) / \
            scapy.IP(src=self.standby_tor_ip, dst=self.active_tor_ip) / inner_pkt[IP]
        exp_pkt = Mask(pkt)
        exp_pkt.set_do_not_care_scapy(scapy.Ether, 'dst')

        exp_pkt.set_do_not_care_scapy(scapy.IP, "ihl")
        exp_pkt.set_do_not_care_scapy(scapy.IP, "tos")
        exp_pkt.set_do_not_care_scapy(scapy.IP, "len")
        exp_pkt.set_do_not_care_scapy(scapy.IP, "id")
        exp_pkt.set_do_not_care_scapy(scapy.IP, "flags")
        exp_pkt.set_do_not_care_scapy(scapy.IP, "frag")
        exp_pkt.set_do_not_care_scapy(scapy.IP, "ttl")
        exp_pkt.set_do_not_care_scapy(scapy.IP, "proto")
        exp_pkt.set_do_not_care_scapy(scapy.IP, "chksum")

        exp_pkt.set_do_not_care_scapy(scapy.TCP, "sport")
        exp_pkt.set_do_not_care_scapy(scapy.TCP, "seq")
        exp_pkt.set_do_not_care_scapy(scapy.TCP, "ack")
        exp_pkt.set_do_not_care_scapy(scapy.TCP, "reserved")
        exp_pkt.set_do_not_care_scapy(scapy.TCP, "dataofs")
        exp_pkt.set_do_not_care_scapy(scapy.TCP, "window")
        exp_pkt.set_do_not_care_scapy(scapy.TCP, "chksum")
        exp_pkt.set_do_not_care_scapy(scapy.TCP, "urgptr")
        exp_pkt.set_ignore_extra_bytes()

        return exp_pkt
Beispiel #3
0
    def generatePkts(self, gw, port_ip, port_mac, vlan_id):
        pkt = testutils.simple_arp_packet(ip_snd=port_ip,
                                          ip_tgt=gw,
                                          eth_src=port_mac,
                                          hw_snd=port_mac,
                                          vlan_vid=vlan_id)

        exp_pkt = testutils.simple_arp_packet(ip_snd=gw,
                                              ip_tgt=port_ip,
                                              eth_src=self.dut_mac,
                                              eth_dst=port_mac,
                                              hw_snd=self.dut_mac,
                                              hw_tgt=port_mac,
                                              arp_op=2,
                                              vlan_vid=vlan_id)
        masked_exp_pkt = Mask(exp_pkt)
        # Ignore the Ethernet padding zeros
        masked_exp_pkt.set_ignore_extra_bytes()
        return pkt, masked_exp_pkt
    def generate_unexpected_packet(self, inner_pkt):
        """
        Generate a packet that shouldn't be observed.
        All packet should be forward via tunnel, so no packet should be observed on server port
        """
        pkt = inner_pkt.copy()
        pkt[Ether].src = self.vlan_mac
        # TTL of packets from active tor to server is decreased by 1
        pkt[IP].ttl -= 1
        unexpected_packet = Mask(pkt)
        # Ignore dst mac
        unexpected_packet.set_do_not_care_scapy(scapy.Ether, 'dst')

        # Ignore check sum
        unexpected_packet.set_do_not_care_scapy(scapy.IP, "chksum")

        #Ignore extra bytes
        unexpected_packet.set_ignore_extra_bytes()

        return unexpected_packet