Exemple #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
Exemple #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
Exemple #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)
Exemple #4
0
def extract(packet):
    ipPkt = base.extract(packet, Ipv4)
    if ipPkt is None:
        return None

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

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

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

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

    return arpPkt
Exemple #13
0
def extractResponse(packet):
    arpPkt = base.extract(packet, Arp)
    if arpPkt is None:
        return None

    return extractTyp(Arp.REPLY, arpPkt)
Exemple #14
0
def extractRequest(packet):
    arpPkt = base.extract(packet, Arp)

    return extractTyp(Arp.REQUEST, arpPkt)