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
def buildUdpResponse(req, packet, **kwargs): reqUdp = req.find(name) if reqUdp is None: return None resp = Udp() resp.srcport = reqUdp.dstport resp.dstport = reqUdp.srcport if isinstance(packet, str): resp.len += len(packet) else: resp.len += len(packet.hdr(packet.payload)) resp.set_payload(packet) return resp