Exemple #1
0
        public override ArcFile TryOpen(ArcView file)
        {
            if (!file.Name.HasExtension(".ads"))
            {
                return(null);
            }
            var arc_name = Path.GetFileNameWithoutExtension(file.Name);

            foreach (var key in KnownKeys.Values)
            {
                using (var arc = new EncryptedViewStream(file, key))
                {
                    uint signature = FormatCatalog.ReadSignature(arc);
                    if (2 == signature || 4 == signature || 5 == signature)
                    {
                        var dir = ReadIndex(arc, key, arc_name);
                        if (dir != null)
                        {
                            return(new AdsArchive(file, this, dir, key));
                        }
                    }
                }
            }
            return(null);
        }
Exemple #2
0
        public override Stream OpenEntry(ArcFile arc, Entry entry)
        {
            var ads_arc = arc as AdsArchive;

            if (null == ads_arc)
            {
                return(base.OpenEntry(arc, entry));
            }
            var input = new EncryptedViewStream(ads_arc.File, ads_arc.Key);

            return(new StreamRegion(input, entry.Offset, entry.Size));
        }
Exemple #3
0
 public override ArcFile TryOpen(ArcView file)
 {
     if (!file.Name.EndsWith(".ads", StringComparison.InvariantCultureIgnoreCase))
     {
         return(null);
     }
     foreach (var key in KnownKeys.Values)
     {
         using (var arc = new EncryptedViewStream(file, key))
         {
             uint signature = FormatCatalog.ReadSignature(arc);
             if (2 == signature || 4 == signature || 5 == signature)
             {
                 var dir = ReadIndex(arc, key);
                 if (dir != null)
                 {
                     return(new AdsArchive(file, this, dir, key));
                 }
             }
         }
     }
     return(null);
 }