public NUSDataProviderWUD(NUSTitle title, WUDInfo wudinfo) : base(title) { //super(title); this.WUDInfo = wudinfo; this.tmd = TMD.parseTMD(getRawTMD()); }
public static DecryptionService getInstance(NUSTitle nustitle) { if (!instances.ContainsKey(nustitle)) { instances.Add(nustitle, new DecryptionService(nustitle)); } return(instances[nustitle]); }
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); }
public NUSDataProvider(NUSTitle title) { this.NUSTitle = title; }
protected abstract NUSDataProvider getDataProvider(NUSTitle title, NUSTitleConfig config);
protected override NUSDataProvider getDataProvider(NUSTitle title, NUSTitleConfig config) { return(new NUSDataProviderWUD(title, config.WUDInfo)); }
private DecryptionService(NUSTitle nustitle) { this.NUSTitle = nustitle; }