Advertisement
PyroDeathAdder

Untitled

May 18th, 2020
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.12 KB | None | 0 0
  1. public static bool CheckFileAgainstSignature(string fileName, Signature sig)
  2. {
  3.     using (var file = File.Open(fileName, FileMode.Open))
  4.     {
  5.         List<byte> fileBytes = new List<byte>();
  6.         byte[] signatureBytes = StringToByteArray(sig.Hex);
  7.         long byteIndex = 0;
  8.  
  9.         byte nextByte = BitConverter.GetBytes(file.ReadByte())[0];
  10.         fileBytes.Add(nextByte);
  11.         while (byteIndex < file.Length) {
  12.             if (fileBytes.Count > 0 && signatureBytes[fileBytes.Count - 1] == fileBytes.Last())
  13.             {
  14.                 fileBytes.Add(BitConverter.GetBytes(file.ReadByte())[0]);
  15.                 if(fileBytes.SequenceEqual(signatureBytes))
  16.                 {
  17.                     Console.WriteLine($"\nMatch: {sig.Name.PadRight(BitConverter.ToString(signatureBytes).Length - 7)}\t{fileName}\n{BitConverter.ToString(signatureBytes)}\t{BitConverter.ToString(fileBytes.ToArray())}\nPosition: byte[{byteIndex}]");
  18.                     Console.Read();
  19.                 }
  20.             } else
  21.             {
  22.                 if(fileBytes.Count > 0)
  23.                     fileBytes = new List<byte>();
  24.  
  25.                 nextByte = BitConverter.GetBytes(file.ReadByte())[0];
  26.                 if(nextByte == signatureBytes[0])
  27.                     fileBytes.Add(nextByte);
  28.             }
  29.             //end of code
  30.             byteIndex++;
  31.         }
  32.     }
  33.  
  34.     return true;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement