Files
BinaryObjectScanner/BurnOutSharp/ProtectionType/PSXAntiModchip.cs
2019-09-28 01:51:06 -07:00

56 lines
2.1 KiB
C#

using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace BurnOutSharp.ProtectionType
{
public class PSXAntiModchip
{
public static string CheckContents(string file, string fileContent)
{
// TODO: Detect Red Hand protection
if (fileContent.Contains(" SOFTWARE TERMINATED\nCONSOLE MAY HAVE BEEN MODIFIED\n CALL 1-888-780-7690"))
return "PlayStation Anti-modchip (English)";
if (fileContent.Contains("強制終了しました。\n本体が改造されている\nおそれがあります。"))
return "PlayStation Anti-modchip (Japanese)";
return null;
}
public static string CheckPath(string path, IEnumerable<string> files, bool isDirectory)
{
if (isDirectory)
{
if (files.Where(s => s.ToLowerInvariant().EndsWith(".cnf")).Count() > 0)
{
foreach (string file in files)
{
using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var sr = new StreamReader(fs))
{
string fileContent = sr.ReadToEnd();
string protection = CheckContents(path, fileContent);
if (!string.IsNullOrWhiteSpace(protection))
return protection;
}
}
}
}
else
{
using (var fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var sr = new StreamReader(fs))
{
string fileContent = sr.ReadToEnd();
string protection = CheckContents(path, fileContent);
if (!string.IsNullOrWhiteSpace(protection))
return protection;
}
}
return null;
}
}
}