@@ -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