Beispiel #1
0
class Pktsrc:
    def __init__(self, name, filt=None, dns=None):
        self.ppkt = None
        self.ppkt2 = None
        self.dnspkt = None

        self.tr = PcapBuf(name, filt)
        if dns:
            self.dns = PcapBuf(dns, "udp and port 53")
        else:
            self.dns = None

    # ensure we have a DNS packet in buffer
    def update_dns(self):
        if not self.dnspkt:
            try:
                self.dnspkt = self.dns.next()
            except:
                self.dnspkt = Cork()

    def __iter__(self):
        return self

    def next(self):
        if self.ppkt:
            pkt, self.ppkt = self.ppkt, None
            return pkt

        # ensure we have a DNS packet to compare
        self.update_dns()

        if self.ppkt2:
            # recall last IP packet
            pkt, self.ppkt2 = self.ppkt2, None
        else:
            # read traffic packet
            pkt = self.tr.next()

        if pkt.ts >= self.dnspkt.ts:
            # we're ahead DNS - let it catch-up
            self.ppkt2 = pkt
            pkt, self.dnspkt = self.dnspkt, None
        else:
            # we're behind DNS - return traffic
            pass

        return pkt

    def peek(self):
        if not self.ppkt:
            try:
                self.ppkt = self.next()
            except:
                return None

        return self.ppkt
Beispiel #2
0
	def __init__(self, name, filt=None, dns=None):
		self.ppkt = None
		self.ppkt2 = None
		self.dnspkt = None

		self.tr = PcapBuf(name, filt)
		if dns:
			self.dns = PcapBuf(dns, "udp and port 53")
		else:
			self.dns = None
Beispiel #3
0
    def __init__(self, name, filt=None, dns=None):
        self.ppkt = None
        self.ppkt2 = None
        self.dnspkt = None

        self.tr = PcapBuf(name, filt)
        if dns:
            self.dns = PcapBuf(dns, "udp and port 53")
        else:
            self.dns = None
Beispiel #4
0
class Pktsrc:
	def __init__(self, name, filt=None, dns=None):
		self.ppkt = None
		self.ppkt2 = None
		self.dnspkt = None

		self.tr = PcapBuf(name, filt)
		if dns:
			self.dns = PcapBuf(dns, "udp and port 53")
		else:
			self.dns = None

	# ensure we have a DNS packet in buffer
	def update_dns(self):
		if not self.dnspkt:
			try:    self.dnspkt = self.dns.next()
			except: self.dnspkt = Cork()

	def __iter__(self):
		return self

	def next(self):
		if self.ppkt:
			pkt, self.ppkt = self.ppkt, None
			return pkt

		# ensure we have a DNS packet to compare
		self.update_dns()

		if self.ppkt2:
			# recall last IP packet
			pkt, self.ppkt2 = self.ppkt2, None
		else:
			# read traffic packet
			pkt = self.tr.next()

		if pkt.ts >= self.dnspkt.ts:
			# we're ahead DNS - let it catch-up
			self.ppkt2 = pkt
			pkt, self.dnspkt = self.dnspkt, None
		else:
			# we're behind DNS - return traffic
			pass

		return pkt

	def peek(self):
		if not self.ppkt:
			try:    self.ppkt = self.next()
			except: return None

		return self.ppkt