diff --git a/proprietary/FullDiskRunner/FullDiskRunner.csproj b/proprietary/FullDiskRunner/FullDiskRunner.csproj deleted file mode 100644 index 79567f3fc..000000000 --- a/proprietary/FullDiskRunner/FullDiskRunner.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - net10.0 - enable - enable - - - - - - - diff --git a/proprietary/FullDiskRunner/Program.cs b/proprietary/FullDiskRunner/Program.cs deleted file mode 100644 index d24468053..000000000 --- a/proprietary/FullDiskRunner/Program.cs +++ /dev/null @@ -1,88 +0,0 @@ -using System.Runtime.InteropServices; -using Duplicati.Proprietary.DiskImage; -using Duplicati.Proprietary.DiskImage.Filesystem; -using Duplicati.Proprietary.DiskImage.Partition; -using Vanara.InteropServices; - -// TODO this project is just a test project to test the disk image library. Remove later, or elevate to a proper tool. - -// Check if we're on Windows platform -if (Environment.OSVersion.Platform != PlatformID.Win32NT) -{ - Console.WriteLine("This tool currently only supports Windows platform."); - return; -} - -using var disk = new Duplicati.Proprietary.DiskImage.Disk.Windows(@"\\.\PhysicalDrive2"); -var initialized = await disk.InitializeAsync(CancellationToken.None); -if (!initialized) -{ - Console.WriteLine("Failed to initialize disk."); - return; -} - -// Raw dump entire disk -if (true) -{ - using var rawoutstream = System.IO.File.OpenWrite("rawdisk_small_org.bin"); - for (int i = 0; i < disk.Sectors; i += 16) - { - var read = await disk.ReadSectorsAsync(i, 16, CancellationToken.None); - await read.CopyToAsync(rawoutstream); - } - Console.WriteLine("Raw disk dump completed."); -} - -var table = await PartitionTableFactory.CreateAsync(disk, CancellationToken.None); -if (table == null) -{ - Console.WriteLine("Failed to detect partition table type."); - return; -} - -Console.WriteLine($"Detected partition table type: {table.TableType}"); - -// Print partition information -await foreach (var partition in table.EnumeratePartitions(CancellationToken.None)) -{ - Console.WriteLine($"Partition {partition.PartitionNumber}: {partition.Name}"); - Console.WriteLine($" Type: {partition.Type}"); - Console.WriteLine($" Size: {partition.Size} bytes ({(double)partition.Size / (1024 * 1024 * 1024)} GB)"); - Console.WriteLine($" Offset: {partition.StartOffset} bytes"); -} - -// If this is a GPT disk, demonstrate getting the protective MBR -if (table.TableType == PartitionTableType.GPT) -{ - using var mbrStream = await table.GetProtectiveMbrAsync(CancellationToken.None); - Console.WriteLine($"Protective MBR retrieved successfully ({mbrStream.Length} bytes)."); -} - -var firstPartition = await table.GetPartitionAsync(2, CancellationToken.None); - -if (firstPartition == null) -{ - Console.WriteLine("No partitions found on the disk."); - return; -} - -using var fs = new UnknownFilesystem(firstPartition); - -var filecount = await fs.ListFilesAsync(CancellationToken.None).CountAsync(); - -Console.WriteLine($"Listed {filecount} files in the unknown filesystem of partition {firstPartition.PartitionNumber}."); - -if (filecount == 0) return; - -using var outstream = System.IO.File.OpenWrite("test.bin"); - -if (false) - await foreach (var file in fs.ListFilesAsync(CancellationToken.None)) - { - using var fileStream = await fs.OpenReadStreamAsync(file, CancellationToken.None); - - // Copy to a buffer - var buffer = new byte[file.Size]; - await fileStream.ReadExactlyAsync(buffer, 0, buffer.Length, CancellationToken.None); - outstream.Write(buffer, 0, buffer.Length); - }