Skip to content

Commit 4bc91a2

Browse files
PcapReader_metaclass: Refactor open
1 parent c15a670 commit 4bc91a2

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

scapy/utils.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1410,23 +1410,29 @@ def __call__(cls, filename):
14101410
raise Scapy_Exception("Not a supported capture file")
14111411

14121412
@staticmethod
1413-
def open(fname # type: Union[IO[bytes], str]
1414-
):
1415-
# type: (...) -> Tuple[str, _ByteStream, bytes]
1416-
"""Open (if necessary) filename, and read the magic."""
1413+
def _open_stream(fname # type: Union[IO[bytes], str]
1414+
):
1415+
# type: (...) -> Tuple[str, _ByteStream]
1416+
"""Open (if necessary) filename, and obtain a stream."""
14171417
if isinstance(fname, str):
14181418
filename = fname
14191419
fdesc = open(filename, "rb") # type: _ByteStream
1420-
magic = fdesc.read(2)
1421-
if magic == b"\x1f\x8b":
1422-
# GZIP header detected.
1423-
fdesc.seek(0)
1424-
fdesc = gzip.GzipFile(fileobj=fdesc)
1425-
magic = fdesc.read(2)
1426-
magic += fdesc.read(2)
14271420
else:
14281421
fdesc = fname
14291422
filename = getattr(fdesc, "name", "No name")
1423+
return filename, fdesc
1424+
1425+
@staticmethod
1426+
def open(fname # type: Union[IO[bytes], str]
1427+
):
1428+
# type: (...) -> Tuple[str, _ByteStream, bytes]
1429+
"""Open (if necessary) filename, obtain a stream and read the magic."""
1430+
filename, fdesc = PcapReader_metaclass._open_stream(fname)
1431+
magic = fdesc.read(4)
1432+
if magic[0:2] == b"\x1f\x8b":
1433+
# GZIP header detected.
1434+
fdesc.seek(0)
1435+
fdesc = gzip.GzipFile(fileobj=fdesc)
14301436
magic = fdesc.read(4)
14311437
return filename, fdesc, magic
14321438

0 commit comments

Comments
 (0)