예제 #1
0
 public NUSDataProviderWUD(NUSTitle title, WUDInfo wudinfo)
     : base(title)
 {
     //super(title);
     this.WUDInfo = wudinfo;
     this.tmd     = TMD.parseTMD(getRawTMD());
 }
예제 #2
0
 public static DecryptionService getInstance(NUSTitle nustitle)
 {
     if (!instances.ContainsKey(nustitle))
     {
         instances.Add(nustitle, new DecryptionService(nustitle));
     }
     return(instances[nustitle]);
 }
예제 #3
0
        public NUSTitle loadNusTitle(NUSTitleConfig config)
        {
            NUSTitle result = new NUSTitle();

            NUSDataProvider dataProvider = getDataProvider(result, config);

            result.dataProvider = (dataProvider);

            TMD tmd = TMD.parseTMD(dataProvider.getRawTMD());

            result.TMD = (tmd);

            if (tmd == null)
            {
                //MessageBox.Show("TMD not found.");
                throw new Exception();
            }

            Ticket ticket = config.ticket;

            if (ticket == null)
            {
                ticket = Ticket.parseTicket(dataProvider.getRawTicket());
            }
            result.ticket = ticket;
            // System.out.println(ticket);

            Content fstContent = tmd.getContentByIndex(0);

            MemoryStream fstContentEncryptedStream = dataProvider.getInputStreamFromContent(fstContent, 0);

            if (fstContentEncryptedStream == null)
            {
                return(null);
            }

            byte[] fstBytes = fstContentEncryptedStream.ToArray();// StreamUtils.getBytesFromStream(fstContentEncryptedStream, (int)fstContent.getEncryptedFileSize());

            if (fstContent.isEncrypted())
            {
                AESDecryption aesDecryption = new AESDecryption(ticket.decryptedKey, new byte[0x10]);
                fstBytes = aesDecryption.decrypt(fstBytes);
            }

            Dictionary <int, Content> contents = tmd.getAllContents();

            FST fst = FST.parseFST(fstBytes, contents);

            result.FST = (fst);

            return(result);
        }
예제 #4
0
 public NUSDataProvider(NUSTitle title)
 {
     this.NUSTitle = title;
 }
예제 #5
0
 protected abstract NUSDataProvider getDataProvider(NUSTitle title, NUSTitleConfig config);
예제 #6
0
 protected override NUSDataProvider getDataProvider(NUSTitle title, NUSTitleConfig config)
 {
     return(new NUSDataProviderWUD(title, config.WUDInfo));
 }
예제 #7
0
 private DecryptionService(NUSTitle nustitle)
 {
     this.NUSTitle = nustitle;
 }