MCPcopy Index your code
hub / github.com/secdev/scapy / PcapReader

Class PcapReader

scapy/utils.py:1546–1609  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1544
1545
1546class PcapReader(RawPcapReader):
1547 def __init__(self, filename, fdesc=None, magic=None): # type: ignore
1548 # type: (str, IO[bytes], bytes) -> None
1549 RawPcapReader.__init__(self, filename, fdesc, magic)
1550 try:
1551 self.LLcls = conf.l2types.num2layer[
1552 self.linktype
1553 ] # type: Type[Packet]
1554 except KeyError:
1555 warning("PcapReader: unknown LL type [%i]/[%#x]. Using Raw packets" % (self.linktype, self.linktype)) # noqa: E501
1556 if conf.raw_layer is None:
1557 # conf.raw_layer is set on import
1558 import scapy.packet # noqa: F401
1559 self.LLcls = conf.raw_layer
1560
1561 def __enter__(self):
1562 # type: () -> PcapReader
1563 return self
1564
1565 def read_packet(self, size=MTU, **kwargs):
1566 # type: (int, **Any) -> Packet
1567 rp = super(PcapReader, self)._read_packet(size=size)
1568 if rp is None:
1569 raise EOFError
1570 s, pkt_info = rp
1571
1572 try:
1573 p = self.LLcls(s, **kwargs) # type: Packet
1574 except KeyboardInterrupt:
1575 raise
1576 except Exception:
1577 if conf.debug_dissector:
1578 from scapy.sendrecv import debug
1579 debug.crashed_on = (self.LLcls, s)
1580 raise
1581 if conf.raw_layer is None:
1582 # conf.raw_layer is set on import
1583 import scapy.packet # noqa: F401
1584 p = conf.raw_layer(s)
1585 power = Decimal(10) ** Decimal(-9 if self.nano else -6)
1586 p.time = EDecimal(pkt_info.sec + power * pkt_info.usec)
1587 p.wirelen = pkt_info.wirelen
1588 return p
1589
1590 def recv(self, size=MTU, **kwargs): # type: ignore
1591 # type: (int, **Any) -> Packet
1592 return self.read_packet(size=size, **kwargs)
1593
1594 def __iter__(self):
1595 # type: () -> PcapReader
1596 return self
1597
1598 def __next__(self): # type: ignore
1599 # type: () -> Packet
1600 try:
1601 return self.read_packet()
1602 except EOFError:
1603 raise StopIteration

Callers 7

__init__Method · 0.90
startMethod · 0.90
__init__Method · 0.90
_runMethod · 0.90
__init__Method · 0.90
rdpcapFunction · 0.85
tcpdumpFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected