From e944d6b982c70da22dfd8bf06c362a8c238a9790 Mon Sep 17 00:00:00 2001 From: Rebecca Wallander Date: Tue, 12 Sep 2023 20:48:48 +0200 Subject: [PATCH] Add method for unscrambling many DVD sectors at once (#8) --- DVD/Sector.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/DVD/Sector.cs b/DVD/Sector.cs index 449122b..9ac174e 100644 --- a/DVD/Sector.cs +++ b/DVD/Sector.cs @@ -226,4 +226,18 @@ public sealed class Sector return cipher == null ? sector : UnscrambleSector(sector, cipher); } + + public byte[] Scramble(byte[] sector, uint transferLength) + { + byte[] scrambled = new byte[sector.Length]; + + if(sector.Length % 2064 != 0 || + sector.Length / 2064 != transferLength) + return sector; + + for(uint i = 0; i < transferLength; i++) + Array.Copy(Scramble(sector.Skip((int)(i * 2064)).Take(2064).ToArray()), 0, scrambled, i * 2064, 2064); + + return scrambled; + } } \ No newline at end of file