Esempio n. 1
0
 protected LibIndexReader(ArcView file, IMalieDecryptor decryptor, byte[] header)
 {
     m_view       = file.View;
     m_max_offset = file.MaxOffset;
     m_dec        = decryptor;
     m_header     = header;
 }
Esempio n. 2
0
        private static int ReadEncrypted(ArcView.Frame view, IMalieDecryptor dec, long offset, byte[] buffer, int index, int length)
        {
            int offset_pad  = (int)offset & 0xF;
            int aligned_len = (offset_pad + length + 0xF) & ~0xF;

            byte[] aligned_buf;
            int    block = 0;

            if (aligned_len == length)
            {
                aligned_buf = buffer;
                block       = index;
            }
            else
            {
                aligned_buf = new byte[aligned_len];
            }

            int read = view.Read(offset - offset_pad, aligned_buf, block, (uint)aligned_len);

            if (read < offset_pad)
            {
                return(0);
            }

            for (int block_count = aligned_len / 0x10; block_count > 0; --block_count)
            {
                dec.DecryptBlock(offset, aligned_buf, block);
                block  += 0x10;
                offset += 0x10;
            }
            if (aligned_buf != buffer)
            {
                Buffer.BlockCopy(aligned_buf, offset_pad, buffer, index, length);
            }
            return(Math.Min(length, read - offset_pad));
        }
Esempio n. 3
0
 public LibPReader(ArcView file, IMalieDecryptor decryptor, byte[] header, LibScheme scheme)
     : base(file, decryptor, header)
 {
     m_base_offset = 0;
     m_scheme      = scheme;
 }
Esempio n. 4
0
 public MalieArchive(ArcView file, ArchiveFormat format, ICollection <Entry> dir, IMalieDecryptor decr)
     : base(file, format, dir)
 {
     Decryptor = decr;
 }
Esempio n. 5
0
        public static LibUReader Create(ArcView file, IMalieDecryptor decryptor)
        {
            var input = new EncryptedStream(file, decryptor);

            return(new LibUReader(input));
        }
Esempio n. 6
0
 public EncryptedStream(ArcView mmap, IMalieDecryptor decryptor)
 {
     m_view       = mmap.CreateFrame();
     m_dec        = decryptor;
     m_max_offset = mmap.MaxOffset;
 }