Beispiel #1
0
        private void CalculateVolumeChecksum(byte[] Image, UInt32 Offset)
        {
            UInt16 VolumeHeaderSize = ByteOperations.ReadUInt16(Image, Offset + 0x30);

            ByteOperations.WriteUInt16(Image, Offset + 0x32, 0); // Clear checksum
            UInt16 NewChecksum = ByteOperations.CalculateChecksum16(Image, Offset, VolumeHeaderSize);

            ByteOperations.WriteUInt16(Image, Offset + 0x32, NewChecksum);
        }
Beispiel #2
0
        private bool VerifyVolumeChecksum(byte[] Image, UInt32 Offset)
        {
            UInt16 VolumeHeaderSize = ByteOperations.ReadUInt16(Image, Offset + 0x30);

            byte[] Header = new byte[VolumeHeaderSize];
            System.Buffer.BlockCopy(Image, (int)Offset, Header, 0, VolumeHeaderSize);
            ByteOperations.WriteUInt16(Header, 0x32, 0); // Clear checksum
            UInt16 CurrentChecksum = ByteOperations.ReadUInt16(Image, Offset + 0x32);
            UInt16 NewChecksum     = ByteOperations.CalculateChecksum16(Header, 0, VolumeHeaderSize);

            return(CurrentChecksum == NewChecksum);
        }