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
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
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)
def extract(packet): ipPkt = base.extract(packet, Ipv4) if ipPkt is None: return None return ipPkt
def extract(packet): tcpPkt = base.extract(packet, Tcp) return tcpPkt
def extractReply(packet): dhcpPkt = base.extract(packet, Dhcp) if dhcpPkt is None: return None return extract(dhcpPkt, Dhcp.BOOTREPLY)
def extractRequest(packet): dhcpPkt = base.extract(packet, Dhcp) if dhcpPkt is None: return None return extract(dhcpPkt, Dhcp.BOOTREQUEST)
def extractResponse(packet): icmpPkt = base.extract(packet, Icmp) if icmpPkt is None: return None return extract(icmpPkt, TYPE_ECHO_REPLY)
def extractRequest(packet): icmpPkt = base.extract(packet, Icmp) return extract(icmpPkt, TYPE_ECHO_REQUEST)
def extract(packet): udpPkt = base.extract(packet, Udp) return udpPkt
def extract(packet): pkt = base.extract(packet, Ethernet) return pkt
def extract(packet): arpPkt = base.extract(packet, Arp) if arpPkt is None: return None return arpPkt
def extractResponse(packet): arpPkt = base.extract(packet, Arp) if arpPkt is None: return None return extractTyp(Arp.REPLY, arpPkt)
def extractRequest(packet): arpPkt = base.extract(packet, Arp) return extractTyp(Arp.REQUEST, arpPkt)