Exemplo n.º 1
0
def buildRequest(src, dst, payload='', ipId=0):
    udpPkt = Udp()
    udpPkt.srcport = src[2]
    udpPkt.dstport = dst[2]
    if isinstance(payload, str):
        udpPkt.len += len(payload)
    else:
        udpPkt.len += len(payload.hdr())
    udpPkt.set_payload(payload)
    udpPkt.parsed = True

    ipPkt = Ipv4()
    ipPkt.flags = Ipv4.DF_FLAG
    ipPkt.srcip = src[1]
    ipPkt.dstip = dst[1]
    ipPkt.id = ipId
    ipPkt.protocol = Ipv4.UDP_PROTOCOL
    ipPkt.set_payload(udpPkt)
    ipPkt.iplen += udpPkt.len
    ipPkt.parsed = True

    udpPkt.csum = checksum(udpPkt)

    ethPkt = Ethernet()
    ethPkt.src = src[0]
    ethPkt.dst = dst[0]
    ethPkt.type = Ethernet.IP_TYPE
    ethPkt.set_payload(ipPkt)
    ethPkt.parsed = True

    return ethPkt
Exemplo n.º 2
0
def buildRequest(src=ETHER_ANY, dst=ETHER_ANY, typ=Ethernet.IP_TYPE, payload=''):
    packet        = Ethernet()
    packet.src    = src
    packet.dst    = dst
    packet.type   = typ
    packet.next   = payload
    # TODO build packet.arr
    packet.parsed = True

    return packet
Exemplo n.º 3
0
def buildResponse(req, packet, **kwargs):
    resp      = Ethernet()
    resp.src  = req.dst
    resp.dst  = req.src
    resp.type = req.type
    resp.set_payload(packet)

    if len(kwargs) != 0:
        for key in kwargs.keys():
            if key not in resp.__dict__.keys():
                continue

            setattr(resp, key, kwargs[key])

    resp.parsed = True

    return resp
Exemplo n.º 4
0
def buildArpRequest(srcMac, srcIp, dstIp):
    arpPkt          = Arp()
    arpPkt.hwsrc    = srcMac
    arpPkt.hwlen    = 6
    arpPkt.protolen = 4
    arpPkt.opcode   = Arp.REQUEST
    arpPkt.protosrc = srcIp
    arpPkt.protodst = dstIp
    arpPkt.parsed   = True

    ethPkt        = Ethernet()
    ethPkt.src    = srcMac
    ethPkt.dst    = ETHER_BROADCAST
    ethPkt.type   = Ethernet.ARP_TYPE
    ethPkt.set_payload(arpPkt)
    ethPkt.parsed = True
    return ethPkt