コード例 #1
0
        private void removeDuplicateTickets()
        {
            ObservableCollection <Title> newTitleList = new ObservableCollection <Title>();

            foreach (Title tik in ticketlist)
            {
                string titleid = tik.TitleID, consoleid = tik.ConsoleID;

                if (!ConvertingTools.ByteArrayToString(ConvertingTools.copyOfRange(tik.data, 0x00, 0x04)).Contains("00010004"))
                {
                    continue;
                }

                if (newTitleList.Count > 0)
                {
                    foreach (Title tik2 in newTitleList)
                    {
                        string titleid2 = tik2.TitleID, consoleid2 = tik2.ConsoleID;
                        if (titleid2.Equals(titleid) && consoleid2.Equals(consoleid))
                        {
                            tik2.data = tik.data;

                            goto outerloop;
                        }
                    }
                    newTitleList.Add(tik);
                }
                else
                {
                    newTitleList.Add(tik);
                }
                outerloop :;
            }
            ticketlist = newTitleList;
        }
コード例 #2
0
        public bool readTicketFile()
        {
            int        tmp = 0, commonKeyIndex = 0;
            List <int> ticketOffsets = new List <int>();

            while (tmp != -1)
            {
                tmp = ConvertingTools.IndexOf(fileData, TICKET_HEADER, tmp + 1);
                if (tmp != -1)
                {
                    ticketOffsets.Add(tmp);
                }
            }

            if (ticketOffsets.Count == 0)
            {
                return(false);
            }

            foreach (int offs in ticketOffsets)
            {
                commonKeyIndex = fileData[offs + 0xB1];

                if (fileData[offs + 0x7C] != 0x1)
                {
                    continue;
                }

                if (commonKeyIndex > 5)
                {
                    continue;
                }

                byte[] ticketData = ConvertingTools.copyOfRange(fileData, offs - 0x140, offs + 0x210);
                byte[] titleID = ConvertingTools.copyOfRange(ticketData, tk + 0x9C, tk + 0xA4);
                byte[] consoleID = ConvertingTools.copyOfRange(ticketData, tk + 0x98, tk + 0x9C);
                string titleid, consoleid;
                int    cki = fileData[offs + 0xB1];

                titleid   = ConvertingTools.ByteArrayToString(titleID);
                consoleid = ConvertingTools.ByteArrayToString(consoleID);

                ticketlist.Add(new Title(ticketData, titleid, consoleid, cki));
            }

            return(true);
        }
コード例 #3
0
        public void readEncTitleKeyFile()
        {
            long datalen = fileData.Length;

            byte[] titleid  = new byte[0x8];
            byte[] titlekey = new byte[0x16];

            for (long i = 16; i < datalen; i += TICKETLEN)
            {
                Title title = new Title();
                title.Name   = "";
                title.Region = "";
                title.Serial = "";

                Array.Copy(fileData, i + 8, titleid, 0, 8);
                Array.Copy(fileData, i + 16, titlekey, 0, 16);

                title.TitleID  = ConvertingTools.ByteArrayToString(titleid);
                title.TitleKey = ConvertingTools.ByteArrayToString(titlekey);
                title.data     = createTicketData(title.TitleID, title.TitleKey);

                titlelist.Add(title);
            }
        }