예제 #1
0
        public override Stream OpenEntry(ArcFile arc, Entry entry)
        {
            var input        = arc.File.CreateStream(entry.Offset, entry.Size);
            var packed_entry = entry as SPackEntry;

            if (null == packed_entry || !packed_entry.IsPacked)
            {
                return(input);
            }
            if (1 == packed_entry.Method)
            {
                return(new CryptoStream(input, new NotTransform(), CryptoStreamMode.Read));
            }
            if (2 == packed_entry.Method)
            {
                using (var reader = new PackedReader(packed_entry, input))
                {
                    reader.Unpack();
                    return(new MemoryStream(reader.Data));
                }
            }
            return(input);
        }
예제 #2
0
파일: ArcSPack.cs 프로젝트: Casidi/GARbro
 public override Stream OpenEntry(ArcFile arc, Entry entry)
 {
     var input = arc.File.CreateStream (entry.Offset, entry.Size);
     var packed_entry = entry as SPackEntry;
     if (null == packed_entry || !packed_entry.IsPacked)
         return input;
     if (1 == packed_entry.Method)
         return new CryptoStream (input, new NotTransform(), CryptoStreamMode.Read);
     if (2 == packed_entry.Method)
     {
         using (var reader = new PackedReader (packed_entry, input))
         {
             reader.Unpack();
             return new MemoryStream (reader.Data);
         }
     }
     return input;
 }