Exemple #1
0
 def create_tunnel_stream_l2o4(self, src_if, tunnel_src, tunnel_dst):
     pkts = []
     for i in range(0, 257):
         info = self.create_packet_info(src_if, src_if)
         payload = self.info_to_payload(info)
         p = (
             Ether(dst=src_if.local_mac, src=src_if.remote_mac) /
             IP(src=tunnel_src, dst=tunnel_dst) / GRE() /
             Ether(dst=RandMAC('*:*:*:*:*:*'), src=RandMAC('*:*:*:*:*:*')) /
             IP(src=str(RandIP()), dst=str(RandIP())) /
             UDP(sport=1234, dport=1234) / Raw(payload))
         info.data = p.copy()
         pkts.append(p)
     return pkts
Exemple #2
0
class PCO_IPv4(PCO_Option):
    name = "IPv4"
    fields_desc = [
        ByteEnumField("type", None, PCO_OPTION_TYPES),
        ByteField("length", 0),
        IPField("address", RandIP())
    ]
Exemple #3
0
class PCO_P_CSCF_IPv4_Address_Request(PCO_Option):
    name = "PCO PCO-P CSCF IPv4 Address Request"
    fields_desc = [
        ShortEnumField("type", None, PCO_PROTOCOL_TYPES),
        ByteField("length", 0),
        ConditionalField(IPField("address", RandIP()), lambda pkt: pkt.length)
    ]
Exemple #4
0
class PCO_Secondary_NBNS(PCO_Option):
    name = "Secondary NBNS Server IP Address"
    fields_desc = [
        ByteEnumField("type", None, PCO_OPTION_TYPES),
        ByteField("length", 0),
        IPField("address", RandIP())
    ]
Exemple #5
0
class PCO_DNS_Server_IPv4(PCO_Option):
    name = "PCO DNS Server IPv4 Address Request"
    fields_desc = [
        ShortEnumField("type", None, PCO_PROTOCOL_TYPES),
        ByteField("length", 0),
        ConditionalField(IPField("address", RandIP()), lambda pkt: pkt.length)
    ]
Exemple #6
0
class GTPCreatePDPContextRequest(Packet):
    # 3GPP TS 29.060 V9.1.0 (2009-12)
    name = "GTP Create PDP Context Request"
    fields_desc = [PacketListField("IE_list", [IE_TEIDI(), IE_NSAPI(), IE_GSNAddress(length=4, ipv4_address=RandIP()),  # noqa: E501
                                               IE_GSNAddress(length=4, ipv4_address=RandIP()),  # noqa: E501
                                               IE_NotImplementedTLV(ietype=135, length=15, data=RandString(15))],  # noqa: E501
                                   IE_Dispatcher)]
Exemple #7
0
class IE_IPv4(gtp.IE_Base):
    name = "IE IPv4"
    fields_desc = [ByteEnumField("ietype", 74, IEType),
                   ShortField("length", 0),
                   BitField("CR_flag", 0, 4),
                   BitField("instance", 0, 4),
                   IPField("address", RandIP())]
Exemple #8
0
class IE_GSNAddress(IE_Base):
    name = "GSN Address"
    fields_desc = [
        ByteEnumField("ietype", 133, IEType),
        ShortField("length", 4),
        IPField("address", RandIP())
    ]
Exemple #9
0
    def flood(self):
        """
        泛洪攻击
        """

        randmac = RandMAC()
        randip = RandIP()
        arp_packet = Ether(src=randmac, dst=randmac) / IP(src=randip,
                                                          dst=randip)
        sendp(arp_packet,
              iface=self.ether_name,
              count=sys.maxsize,
              interval=0.2,
              verbose=self.verbose)
Exemple #10
0
class IE_FTEID(gtp.IE_Base):
    name = "IE F-TEID"
    fields_desc = [ByteEnumField("ietype", 87, IEType),
                   ShortField("length", 0),
                   BitField("CR_flag", 0, 4),
                   BitField("instance", 0, 4),
                   BitField("ipv4_present", 0, 1),
                   BitField("ipv6_present", 0, 1),
                   BitField("InterfaceType", 0, 6),
                   XIntField("GRE_Key", 0),
                   ConditionalField(
        IPField("ipv4", RandIP()), lambda pkt: pkt.ipv4_present),
        ConditionalField(XBitField("ipv6", "2001::", 128),
                         lambda pkt: pkt.ipv6_present)]
Exemple #11
0
class IE_GSNAddress(IE_Base):
    name = "GSN Address"
    fields_desc = [ByteEnumField("ietype", 133, IEType),
                   ShortField("length", None),
                   ConditionalField(IPField("ipv4_address", RandIP()),
                                    lambda pkt: pkt.length == 4),
                   ConditionalField(IP6Field("ipv6_address", '::1'),
                                    lambda pkt: pkt.length == 16)]

    def post_build(self, p, pay):
        if self.length is None:
            tmp_len = len(p) - 3
            p = p[:2] + struct.pack("!B", tmp_len) + p[3:]
        return p
Exemple #12
0
    def flood(self, host):
        """
        ICMP 泛洪攻击
        :param host: 目标主机ip地址
        """

        number = 0
        while True:
            number = number + 1
            # 随机IP地址时需每次生成一个新的IP地址
            packet = IP(dst=host, src=RandIP()) / ICMP() / b'abcdefg'
            send(packet, count=1, verbose=self.__verbose)

            print('{:<10}send packet dst = {}, src = {}'.format(
                number, host, packet[IP].src))
Exemple #13
0
 def _fix(self, n=0):
     o = random.choice(self.objlist)
     if issubclass(o, ASN1_INTEGER):
         return o(int(random.gauss(0,1000)))
     elif issubclass(o, ASN1_IPADDRESS):
         z = RandIP()._fix()
         return o(z)
     elif issubclass(o, ASN1_STRING):
         z = int(random.expovariate(0.05)+1)
         return o("".join(random.choice(self.chars) for _ in range(z)))
     elif issubclass(o, ASN1_SEQUENCE) and (n < 10):
         z = int(random.expovariate(0.08)+1)
         return o([self.__class__(objlist=self.objlist)._fix(n + 1)
                   for _ in range(z)])
     return ASN1_INTEGER(int(random.gauss(0,1000)))
Exemple #14
0
 def _fix(self, n=0):
     # type: (int) -> ASN1_Object[Any]
     o = random.choice(self.objlist)
     if issubclass(o, ASN1_INTEGER):
         return o(int(random.gauss(0, 1000)))
     elif issubclass(o, ASN1_IPADDRESS):
         z = RandIP()._fix()
         return o(z)
     elif issubclass(o, ASN1_GENERALIZED_TIME) or issubclass(o, ASN1_UTC_TIME):  # noqa: E501
         z = GeneralizedTime()._fix()
         return o(z)
     elif issubclass(o, ASN1_STRING):
         z = int(random.expovariate(0.05) + 1)
         return o("".join(random.choice(self.chars) for _ in range(z)))
     elif issubclass(o, ASN1_SEQUENCE) and (n < 10):
         z = int(random.expovariate(0.08) + 1)
         return o([self.__class__(objlist=self.objlist)._fix(n + 1)
                   for _ in range(z)])
     return ASN1_INTEGER(int(random.gauss(0, 1000)))
Exemple #15
0
class IE_EndUserAddress(IE_Base):
    # Supply protocol specific information of the external packet
    name = "End User Address"
    fields_desc = [ByteEnumField("ietype", 128, IEType),
                   #         data network accessed by the GGPRS subscribers.
                   #            - Request
                   #                1    Type (1byte)
                   #                2-3    Length (2bytes) - value 2
                   #                4    Spare + PDP Type Organization
                   #                5    PDP Type Number
                   #            - Response
                   #                6-n    PDP Address
                   ShortField("length", 2),
                   BitField("SPARE", 15, 4),
                   BitField("PDPTypeOrganization", 1, 4),
                   XByteField("PDPTypeNumber", None),
                   ConditionalField(IPField("PDPAddress", RandIP()),
                                    lambda pkt: pkt.length == 6 or pkt.length == 22),  # noqa: E501
                   ConditionalField(IP6Field("IPv6_PDPAddress", '::1'),
                                    lambda pkt: pkt.length == 18 or pkt.length == 22)]  # noqa: E501
Exemple #16
0
def macof():
    pkt = Ether(dst=RandMAC(), src=RandMAC()) / IP(dst=RandIP(),
                                                   src=RandIP()) / ICMP()
    sendp(pkt, loop=1, count=10000)
Exemple #17
0
    else:
        output_file_path = args.output_file

    if args.src_mac is None:
        srcMAC = str(RandMac("00:00:00:00:00:00", True).mac)
    else:
        srcMAC = args.src_mac

    if args.dst_mac is None:
        dstMAC = str(RandMac("00:00:00:00:00:00", True).mac)
    else:
        dstMAC = args.dst_mac

    packetSize = args.pkt_size
    noICMP = args.no_icmp

    try:
        os.remove(output_file_path)
    except OSError:
        pass

    randomSrcIP = str(RandIP())
    randomDstIP = str(RandIP())
    randomSrcPort = int(RandShort())
    randomDstPort = int(RandShort())

    tot_input_lines = parse_and_write_file(input_file_path)

    print(f"Read and parsed a total of {tot_input_lines} from file")
    print(f"Output file created: {output_file_path}")
Exemple #18
0
def get_or_random_ip(ip):
    if int(ip) == 0:
        return str(RandIP())

    return str(ipaddress.IPv4Address(int(ip)))
Exemple #19
0
 def __generate_packet(self):
     '''Generates the Ping packet. IP Addresses are randomized in the destination's subnet range'''
     return Ether(src=RandMAC())/IP(src=RandIP(f"{self.dst}/{self.subnet_bits}"), dst=self.dst)/ICMP()/("Hello, I am bored" * 10)
Exemple #20
0
 def __generate_packet(self):
     '''Generates the ARP packet. IP Addresses and src mac addresses are randomized.'''
     return ARP(op=2, pdst=self.dst, psrc=RandIP(f"{self.dst}/{self.subnet_bits}"), hwsrc=RandMAC())