diff --git a/BurnOutSharp/ProtectionType/WinLock.cs b/BurnOutSharp/ProtectionType/WinLock.cs new file mode 100644 index 00000000..640e9ace --- /dev/null +++ b/BurnOutSharp/ProtectionType/WinLock.cs @@ -0,0 +1,45 @@ +using System.Collections.Concurrent; +using System.Collections.Generic; +using BurnOutSharp.Interfaces; +using BurnOutSharp.Matching; + +namespace BurnOutSharp.ProtectionType +{ + /// + /// WinLock (by B16MCC) is a program that allows the user to create a CD-R with intentional errors. + /// It does this by modifying an existing cuesheet to include 3 additional tracks that wiould be created from the file "WinLock.PSX". + /// It then allows the user to automatically modify that file while the CD-R is being burnt, causing there to be errors at the end of the disc. + /// Note that no additional files are written to the disc itself, the additional tracks created are invalid. + /// Based on the included "WinLock.txt", this is intended specifically for PSX discs. + /// The website appears to have relied heavily on Java, none of which appears to be archived online (https://web.archive.org/web/20010221030118/http://www.diamondcdroms.co.uk:80/). + /// Download: https://cmw.mobiletarget.net/?f=winlock.zip. + /// https://www.cdmediaworld.com/hardware/cdrom/cd_news_0001.shtml + /// Doesn't appear to be related to https://www.crystaloffice.com/winlock/. + /// + public class WinLock : IPathCheck + { + /// + public ConcurrentQueue CheckDirectoryPath(string path, IEnumerable files) + { + var matchers = new List + { + // This is the temporary dummy file created in the C: drive. + new PathMatchSet(new PathMatch("WinLock.PSX", useEndsWith: true), "WinLock"), + }; + + return MatchUtil.GetAllMatches(files, matchers, any: true); + } + + /// + public string CheckFilePath(string path) + { + var matchers = new List + { + // This is the temporary dummy file created in the C: drive. + new PathMatchSet(new PathMatch("WinLock.PSX", useEndsWith: true), "WinLock"), + }; + + return MatchUtil.GetFirstMatch(path, matchers, any: true); + } + } +} diff --git a/BurnOutSharp/ProtectionType/Winlock.cs b/BurnOutSharp/ProtectionType/Winlock.cs deleted file mode 100644 index 73a3eb00..00000000 --- a/BurnOutSharp/ProtectionType/Winlock.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System.Collections.Concurrent; -using System.Collections.Generic; -using BurnOutSharp.Interfaces; -using BurnOutSharp.Matching; - -namespace BurnOutSharp.ProtectionType -{ - public class Winlock : IPathCheck - { - /// - public ConcurrentQueue CheckDirectoryPath(string path, IEnumerable files) - { - var matchers = new List - { - new PathMatchSet(new PathMatch("WinLock.PSX", useEndsWith: true), "Winlock (Unconfirmed - Please report to us on Github)"), - }; - - return MatchUtil.GetAllMatches(files, matchers, any: true); - } - - /// - public string CheckFilePath(string path) - { - var matchers = new List - { - new PathMatchSet(new PathMatch("WinLock.PSX", useEndsWith: true), "Winlock (Unconfirmed - Please report to us on Github)"), - }; - - return MatchUtil.GetFirstMatch(path, matchers, any: true); - } - } -} diff --git a/README.md b/README.md index 85c3ec7b..41c57ed4 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ Below is a list of protections detected by BurnOutSharp. The two columns explain | TZCopyProtection | False | True | Partially unconfirmed² | | Uplay | True | True | | | Windows Media Data Session DRM | True | True | | -| Winlock | False | True | Unconfirmed¹ | +| Winlock | False | True | | | WTM CD Protect | True | True | | | XCP | True | True | | | Zzxzz | False | True | |