diff --git a/BinaryObjectScanner/FileType/PKZIP.cs b/BinaryObjectScanner/FileType/PKZIP.cs index b21b9d31..f7a9ec3c 100644 --- a/BinaryObjectScanner/FileType/PKZIP.cs +++ b/BinaryObjectScanner/FileType/PKZIP.cs @@ -42,7 +42,12 @@ namespace BinaryObjectScanner.FileType try { var readerOptions = new ReaderOptions() { LookForHeader = lookForHeader }; - using var zipFile = ZipArchive.Open(stream, readerOptions); + var zipFile = ZipArchive.Open(stream, readerOptions); + + // Try to read the file path if no entries are found + if (zipFile.Entries.Count == 0 && !string.IsNullOrEmpty(file) && File.Exists(file)) + zipFile = ZipArchive.Open(file, readerOptions); + foreach (var entry in zipFile.Entries) { try diff --git a/BinaryObjectScanner/FileType/RAR.cs b/BinaryObjectScanner/FileType/RAR.cs index 086b1370..3a33c19e 100644 --- a/BinaryObjectScanner/FileType/RAR.cs +++ b/BinaryObjectScanner/FileType/RAR.cs @@ -42,7 +42,12 @@ namespace BinaryObjectScanner.FileType try { var readerOptions = new ReaderOptions() { LookForHeader = lookForHeader }; - using RarArchive rarFile = RarArchive.Open(stream, readerOptions); + RarArchive rarFile = RarArchive.Open(stream, readerOptions); + + // Try to read the file path if no entries are found + if (rarFile.Entries.Count == 0 && !string.IsNullOrEmpty(file) && File.Exists(file)) + rarFile = RarArchive.Open(file, readerOptions); + if (!rarFile.IsComplete) return false; diff --git a/BinaryObjectScanner/FileType/SevenZip.cs b/BinaryObjectScanner/FileType/SevenZip.cs index a5d3008e..850ad250 100644 --- a/BinaryObjectScanner/FileType/SevenZip.cs +++ b/BinaryObjectScanner/FileType/SevenZip.cs @@ -42,7 +42,12 @@ namespace BinaryObjectScanner.FileType try { var readerOptions = new ReaderOptions() { LookForHeader = lookForHeader }; - using var sevenZip = SevenZipArchive.Open(stream, readerOptions); + var sevenZip = SevenZipArchive.Open(stream, readerOptions); + + // Try to read the file path if no entries are found + if (sevenZip.Entries.Count == 0 && !string.IsNullOrEmpty(file) && File.Exists(file)) + sevenZip = SevenZipArchive.Open(file, readerOptions); + foreach (var entry in sevenZip.Entries) { try diff --git a/BinaryObjectScanner/FileType/TapeArchive.cs b/BinaryObjectScanner/FileType/TapeArchive.cs index bb9cf77c..227e3130 100644 --- a/BinaryObjectScanner/FileType/TapeArchive.cs +++ b/BinaryObjectScanner/FileType/TapeArchive.cs @@ -32,7 +32,12 @@ namespace BinaryObjectScanner.FileType #if NET462_OR_GREATER || NETCOREAPP try { - using var tarFile = TarArchive.Open(stream); + var tarFile = TarArchive.Open(stream); + + // Try to read the file path if no entries are found + if (tarFile.Entries.Count == 0 && !string.IsNullOrEmpty(file) && File.Exists(file)) + tarFile = TarArchive.Open(file); + foreach (var entry in tarFile.Entries) { try