Ejemplo n.º 1
0
def _buildEcho(req):
    if not isinstance(req, Icmp):
        req = base.extract(req, Icmp)
        if req is None:
            return None

    resp = Icmp()
    resp.type = TYPE_ECHO_REPLY
    resp.code = req.code
    resp.set_payload(req.next)
    resp.csum = 0
    resp.csum = computeChecksum(resp.pack(), 0)

    return resp
Ejemplo n.º 2
0
def buildArpResponse(packet, mac):
    if not isinstance(packet, Arp):
        packet = base.extract(packet, Arp)
        if packet is None:
            return None

    resp          = Arp()
    resp.hwdst    = packet.hwsrc
    resp.protodst = packet.protosrc
    resp.hwsrc    = mac
    resp.protosrc = packet.protodst

    resp.hwtype    = Arp.HW_TYPE_ETHERNET
    resp.hwlen     = 6
    resp.prototype = Arp.PROTO_TYPE_IP
    resp.protolen  = 4
    resp.opcode    = Arp.REPLY

    return resp
Ejemplo n.º 3
0
def checksum(pkt):
    icmpPkt = base.extract(pkt, Icmp)
    if not icmpPkt:
        return 0

    s = icmpPkt.hdr()
    h = icmpPkt.next

    while h is not None:
        m = getattr(h, "hdr", None)
        if m is None:
            s = "%s%s" % (s, str(h))
            break
        s = "%s%s" % (s, h.hdr())
        m = getattr(h, "next", None)
        if m is None:
            break
        h = m

    return computeChecksum(s, 0)
Ejemplo n.º 4
0
def extract(packet):
    ipPkt = base.extract(packet, Ipv4)
    if ipPkt is None:
        return None

    return ipPkt
Ejemplo n.º 5
0
def extract(packet):
    tcpPkt = base.extract(packet, Tcp)
    return tcpPkt
Ejemplo n.º 6
0
def extractReply(packet):
    dhcpPkt = base.extract(packet, Dhcp)
    if dhcpPkt is None:
        return None

    return extract(dhcpPkt, Dhcp.BOOTREPLY)
Ejemplo n.º 7
0
def extractRequest(packet):
    dhcpPkt = base.extract(packet, Dhcp)
    if dhcpPkt is None:
        return None

    return extract(dhcpPkt, Dhcp.BOOTREQUEST)
Ejemplo n.º 8
0
def extractResponse(packet):
    icmpPkt = base.extract(packet, Icmp)
    if icmpPkt is None:
        return None

    return extract(icmpPkt, TYPE_ECHO_REPLY)
Ejemplo n.º 9
0
def extractRequest(packet):
    icmpPkt = base.extract(packet, Icmp)
    return extract(icmpPkt, TYPE_ECHO_REQUEST)
Ejemplo n.º 10
0
def extract(packet):
    udpPkt = base.extract(packet, Udp)
    return udpPkt
Ejemplo n.º 11
0
def extract(packet):
    pkt = base.extract(packet, Ethernet)
    return pkt
Ejemplo n.º 12
0
def extract(packet):
    arpPkt = base.extract(packet, Arp)
    if arpPkt is None:
        return None

    return arpPkt
Ejemplo n.º 13
0
def extractResponse(packet):
    arpPkt = base.extract(packet, Arp)
    if arpPkt is None:
        return None

    return extractTyp(Arp.REPLY, arpPkt)
Ejemplo n.º 14
0
def extractRequest(packet):
    arpPkt = base.extract(packet, Arp)

    return extractTyp(Arp.REQUEST, arpPkt)