Exemple #1
0
        public Narc LoadNarc(BinaryReader reader)
        {
            reader.BaseStream.Seek(4L, SeekOrigin.Begin);
            magic       = reader.ReadInt32();
            narcSize    = reader.ReadUInt32();
            sectionSize = reader.ReadInt16();
            sectionNum  = reader.ReadInt16();
            reader.ReadInt32();
            fatbSize = reader.ReadUInt32();
            fatbNum  = reader.ReadUInt32();
            fatb     = new NarcFat_s();
            uint fatbStartOffset = (uint)reader.BaseStream.Position;

            fatb.ReadFat(reader, fatbNum);
            reader.ReadInt32();
            fntbSize                   = reader.ReadUInt32();
            fntbStartOffset            = (uint)reader.BaseStream.Position;
            fntb                       = new NarcFnt_s();
            treeSystem                 = fntb.ReadFnt(reader, fntbSize, fntbStartOffset, fatb);
            reader.BaseStream.Position = fntbStartOffset + fntbSize;
            figm.magicId               = reader.ReadChars(4);
            figm.sizeFigm              = reader.ReadInt32();
            figm.startFigm             = (int)reader.BaseStream.Position;
            figm.fileData              = new List <ClosableMemoryStream>();
            for (int fileCounter = 0; fileCounter < fatbNum; fileCounter++)
            {
                ClosableMemoryStream actualFileStream = new ClosableMemoryStream();
                //MessageBox.Show(fntb.getpad().ToString());
                reader.BaseStream.Position = fatb.getFileStartAt(fileCounter) + fntbStartOffset + fntbSize;
                Utils.loadStream(reader, fatb.getFileEndAt(fileCounter) - fatb.getFileStartAt(fileCounter), actualFileStream);
                figm.fileData.Add(actualFileStream);
            }
            return(this);
        }
Exemple #2
0
        private void LoadMapBW(BinaryReader reader)
        {
            Nsbmd        nsbmd;
            BinaryWriter writer;

            string[]          materialListForNsbmd;
            PkmnMapDemuxer_Bw bw = new PkmnMapDemuxer_Bw(reader, type);

            mapHeaderBW = PkmnMapHeader_Bw.FromReader(reader);
            streamNSBMD = new ClosableMemoryStream();
            writer      = new BinaryWriter(streamNSBMD);
            writer.Write(bw.DemuxBMDBytes(mapHeaderBW, 0));
            streamMovement = new ClosableMemoryStream();
            writer         = new BinaryWriter(streamMovement);
            writer.Write(bw.DemuxMovBytes(mapHeaderBW));
            arrayMovementBW = MovLoader.LoadMov_Bw(streamMovement);
            streamObject    = new ClosableMemoryStream();
            writer          = new BinaryWriter(streamObject);
            writer.Write(bw.DemuxObjBytes(mapHeaderBW));
            listObjectsBW = ObjLoader.LoadObj_Bw(streamObject);
            nsbmd         = new Nsbmd();
            var reader2 = new BinaryReader(streamNSBMD);

            reader2.BaseStream.Position = 0;
            nsbmd.LoadBMD0(reader2, (int)mapHeaderBW.BMDOffset);
            actualModel = nsbmd;
            getMatrixInfo();
            materialListForNsbmd = actualModel.getTexNameArray();
            if (actualModel.actualTex != null)
            {
                nsbmd.MatchTextures();
            }
        }
Exemple #3
0
        private void readMatrixBW(ClosableMemoryStream actualNode)
        {
            BinaryReader reader = new BinaryReader(actualNode);

            reader.BaseStream.Position = 4;
            MapMat.Width   = reader.ReadUInt16();
            MapMat.Height  = reader.ReadUInt16();
            MapMat.Headers = new List <int>();
            for (int i = 0; i < MapMat.Width * MapMat.Height; i++)
            {
                int item = reader.ReadInt32();
                MapMat.Headers.Add(item);
            }
            if (reader.BaseStream.Position + 1 < reader.BaseStream.Length)
            {
                MapMat.Borders = new List <int>();
                for (int i = 0; i < MapMat.Width * MapMat.Height; i++)
                {
                    int item = reader.ReadInt32();
                    MapMat.Borders.Add(item);
                }
                //MapMat.Terrain = new List<int>();
                //for (int i = 0; i < MapMat.Width * MapMat.Height; i++)
                //{
                //    short item = reader.ReadInt16();
                //    MapMat.Terrain.Add(item);
                //}
            }
        }
Exemple #4
0
    public Nds LoadNds()
    {
        Header = new NdsHeader(this.reader);
        Header.ReadHeader();
        ARM9 = new ClosableMemoryStream();
        this.reader.BaseStream.Seek((long)Header.getARM9Offset(), SeekOrigin.Begin);
        Utils.loadStream(this.reader, Header.getARM9Size() + 12, ARM9);
        this.reader.BaseStream.Seek((long)Header.getARM9Ov_Off(), SeekOrigin.Begin);
        OverlayList = new NdsOverlay();
        OverlayList.readOverlays(this.reader, Header.getARM9Ov_Size());
        uint position = (uint)this.reader.BaseStream.Position;

        ARM7 = new ClosableMemoryStream();
        Utils.loadStream(this.reader, Header.getARM7Size(), ARM7);
        FAT = new NdsFat_s();
        FAT.ReadFat(this.reader, Header.getFAT_Size(), Header.getFAT_Off());
        OverlayList.readOverlaysData(this.reader, position, (int)Header.getARM9Ov_Size(), FAT);
        FNT       = new NdsFnt_s();
        this.Tree = new Common.Folder_s();
        this.reader.BaseStream.Seek((long)Header.getFNT_Off(), SeekOrigin.Begin);
        this.Tree = NdsFnt_s.readFnt(this.reader, Header.getFNT_Size(), Header.getFNT_Off(), FAT);
        Icon      = new ClosableMemoryStream();
        Utils.loadStream(this.reader, 0xa00, Icon);
        return(this);
    }
Exemple #5
0
        /// <summary>
        /// 获取邮件的内容
        /// </summary>
        public static Result <EMail_DKIM_RAW_EML> ToRAW(MailMessage message)
        {
            var rtv = new Result <EMail_DKIM_RAW_EML>();

            if (MailWriterFactory == null || Close == null || Send2 == null && Send3 == null)
            {
                rtv.error("email内容获取器未初始化成功");
                return(rtv);
            }

            var headers = message.Headers;
            //备份hook head
            var hT  = headers[EMail_DKIM.DKIMTimeKeyT];
            var hTS = headers[EMail_DKIM.DKIMTimeKeyTS];

            try {
                using (var internalStream = new ClosableMemoryStream()) {
                    object mailWriter = MailWriterFactory(internalStream);

                    if (Send2 != null)
                    {
                        Send2(message, mailWriter, false);
                    }
                    else if (Send3 != null)
                    {
                        //由smtp.DeliveryFormat决定的allowUnicode为false
                        Send3(message, mailWriter, false, false);
                    }

                    Close(mailWriter);

                    internalStream.Position = 0;
                    string text;
                    using (var reader = new StreamReader(internalStream, Encoding.UTF8)) {
                        text = reader.ReadToEnd();
                    }

                    internalStream.ReallyClose();

                    var val = EMail_DKIM_RAW_EML.ParseOrNull(text);
                    if (val == null)
                    {
                        rtv.error("整个email内容获取后解析失败");
                        return(rtv);
                    }
                    rtv.Value = val;
                    return(rtv);
                }
            } catch (Exception e) {
                rtv.fail("无法获取整个email内容:" + e.Message, e.ToString());
                return(rtv);
            } finally {
                //还原hook head
                if (hTS != null)
                {
                    headers.Set(EMail_DKIM.DKIMTimeKeyT, hT);
                    headers.Set(EMail_DKIM.DKIMTimeKeyTS, hTS);
                }
            }
        }
Exemple #6
0
        private void ABList_SelectedIndexChanged(object sender, EventArgs e)
        {
            BinaryReader         reader;
            int                  num3;
            int                  selectedIndex = ABList.SelectedIndex;
            int                  num2          = NarcList.SelectedIndex;
            ClosableMemoryStream input         = new ClosableMemoryStream();
            BlockInfo_s          _s            = new BlockInfo_s();

            if (num2 > -1)
            {
                input  = Ab[num2].BlockData[selectedIndex];
                _s     = Ab[num2].BlockInfo[selectedIndex];
                reader = new BinaryReader(input);
            }
            else
            {
                input  = Ab[0].BlockData[selectedIndex];
                _s     = Ab[0].BlockInfo[selectedIndex];
                reader = new BinaryReader(input);
                num2   = 0;
            }
            SubList.Items.Clear();
            SubList.Text = "";
            reader.BaseStream.Seek(0x13L, SeekOrigin.Begin);
            _s.File_Num = reader.ReadByte();
            _s.FileOff  = new ArrayList();
            for (num3 = 0; num3 < _s.File_Num; num3++)
            {
                uint num4 = reader.ReadUInt32();
                _s.FileOff.Add(num4);
            }
            _s.FileData = new List <ClosableMemoryStream>();
            reader.ReadInt32();
            SubList.Text = "Loaded";
            if (_s.File_Num == 0)
            {
                ClosableMemoryStream item = Ab[num2].BlockData[selectedIndex];
                _s.FileData.Add(item);
                SubList.Items.Add("Unique File");
            }
            for (num3 = 0; num3 < _s.File_Num; num3++)
            {
                ClosableMemoryStream output = new ClosableMemoryStream();
                byte[] buffer = new byte[0];
                if (num3 == (_s.File_Num - 1))
                {
                    buffer = new byte[((uint)input.Length) - ((uint)_s.FileOff[num3])];
                }
                else
                {
                    buffer = new byte[((uint)_s.FileOff[num3 + 1]) - ((uint)_s.FileOff[num3])];
                }
                reader.Read(buffer, 0, buffer.Length);
                new BinaryWriter(output).Write(buffer);
                _s.FileData.Add(output);
                SubList.Items.Add("Elem:" + num3);
            }
            Ab[num2].BlockInfo[selectedIndex] = _s;
        }
Exemple #7
0
        private void LoadMapDPP(BinaryReader reader)
        {
            Nsbmd        nsbmd;
            BinaryWriter writer;

            string[]       materialListForNsbmd;
            PkmnMapDemuxer demuxer = new PkmnMapDemuxer(reader, type);

            mapHeader      = PkmnMapHeader.FromReader(reader);
            streamMovement = new ClosableMemoryStream();
            writer         = new BinaryWriter(streamMovement);
            writer.Write(demuxer.DemuxMovBytes(mapHeader));
            arrayMovement = MovLoader.LoadMov(streamMovement);
            streamObject  = new ClosableMemoryStream();
            writer        = new BinaryWriter(streamObject);
            writer.Write(demuxer.DemuxObjBytes(mapHeader));
            listObjects = ObjLoader.LoadObj(streamObject);
            streamNSBMD = new ClosableMemoryStream();
            writer      = new BinaryWriter(streamNSBMD);
            writer.Write(demuxer.DemuxBMDBytes(mapHeader, 0));
            streamBDHC = new ClosableMemoryStream();
            writer     = new BinaryWriter(streamBDHC);
            writer.Write(demuxer.DemuxBdhcBytes(mapHeader));
            nsbmd = new Nsbmd();
            var reader2 = new BinaryReader(streamNSBMD);

            nsbmd.LoadBMD0(reader2, (int)mapHeader.BMDOffset);
            actualModel = nsbmd;
            getMatrixInfo();
            materialListForNsbmd = actualModel.getTexNameArray();
            if (actualModel.actualTex != null)
            {
                nsbmd.MatchTextures();
            }
        }
Exemple #8
0
            public void setFileStreamAt(int i, ClosableMemoryStream input)
            {
                FileOff_s _s = FileOff[i];

                _s.File_Data = new ClosableMemoryStream();
                input.WriteTo(_s.File_Data);
                FileOff[i] = _s;
            }
Exemple #9
0
        private void openNarcToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog {
                Filter = "Narc File (*.narc)|*.narc|Texture File(*.btx)|*.btx",
            };

            if (dialog.ShowDialog() != DialogResult.Cancel)
            {
                BinaryReader reader    = new BinaryReader(dialog.OpenFile());
                var          extension = Encoding.UTF8.GetString(reader.ReadBytes(4));
                if (extension == "NARC")
                {
                    Narc narc = new Narc();
                    narc.LoadNarc(reader);
                    tex = new List <Tex_List>();
                    Texture_Out.Clear();
                    for (int i = 0; i < narc.fatbNum; i++)
                    {
                        Tex_List             list   = new Tex_List();
                        Nsbtx                _c     = new Nsbtx();
                        ClosableMemoryStream stream = narc.figm.fileData[i];
                        actualTex = new Nsbtx();
                        actualTex.LoadBTX0(stream);
                        _c             = actualTex;
                        list.File_Name = "Tex_" + i.ToString();
                        Texture_Out.AppendText(list.File_Name + "=");
                        list.Texture = new List <string>();
                        for (int j = 0; j < actualTex.tex0.texNum; j++)
                        {
                            list.Texture.Add(actualTex.tex0.texNameArray[j]);
                            Texture_Out.AppendText(actualTex.tex0.texNameArray[j] + ";");
                        }
                        Texture_Out.AppendText("\n");
                    }
                }
                else if (extension == "BTX0")
                {
                    Tex_List list = new Tex_List();
                    Nsbtx    _c   = new Nsbtx();
                    actualTex = new Nsbtx();
                    actualTex.LoadBTX0(reader);
                    _c             = actualTex;
                    list.File_Name = dialog.SafeFileName;
                    Texture_Out.AppendText(list.File_Name + "=");
                    list.Texture = new List <string>();
                    for (int j = 0; j < actualTex.tex0.texNum; j++)
                    {
                        list.Texture.Add(actualTex.tex0.texNameArray[j]);
                        Texture_Out.AppendText(actualTex.tex0.texNameArray[j] + ";");
                    }
                    Texture_Out.AppendText("\n");
                }
            }
        }
Exemple #10
0
        private ClosableMemoryStream getStream(short position)
        {
            uint startOffset = main.actualNds.getFat().getFileStartAt(position);
            uint lenght      = main.actualNds.getFat().getFileEndAt(position) - startOffset;
            var  reader      = new BinaryReader(main.ROM);

            reader.BaseStream.Seek((long)startOffset, SeekOrigin.Begin);
            var stream = new ClosableMemoryStream();

            Utils.loadStream(reader, lenght, stream);
            return(stream);
        }
Exemple #11
0
 public MapMatrix(ClosableMemoryStream actualNode, int type)
 {
     InitializeComponent();
     this.actualNode = actualNode;
     if (type == 0)
     {
         readMatrix(actualNode);
     }
     else
     {
         readMatrixBW(actualNode);
     }
     showMatrix(MatrixHeaderInfo, MatrixBorderInfo, MatrixTerrainInfo);
 }
Exemple #12
0
        private void button1_Click(object sender, EventArgs e)
        {
            SaveFileDialog dialog = new SaveFileDialog();

            if (dialog.ShowDialog() != DialogResult.Cancel)
            {
                BinaryWriter         writer = new BinaryWriter(dialog.OpenFile());
                ClosableMemoryStream input  = Ab[NarcList.SelectedIndex].BlockInfo[ABList.SelectedIndex].FileData[SubList.SelectedIndex];
                BinaryReader         reader = new BinaryReader(input);
                reader.BaseStream.Seek(0L, SeekOrigin.Begin);
                for (int i = 0; i < input.Length; i++)
                {
                    writer.Write(reader.ReadByte());
                }
                writer.Close();
            }
        }
Exemple #13
0
        /// <summary>
        /// 获取邮件的内容
        /// </summary>
        public static Result <EMail_DKIM_RAW_EML> ToRAW(MailMessage message)
        {
            var rtv = new Result <EMail_DKIM_RAW_EML>();

            if (MailWriterFactory == null || Close == null || Send2 == null && Send3 == null)
            {
                rtv.error("email内容获取器未初始化成功");
                return(rtv);
            }
            try {
                using (var internalStream = new ClosableMemoryStream()) {
                    object mailWriter = MailWriterFactory(internalStream);

                    if (Send2 != null)
                    {
                        Send2(message, mailWriter, false);
                    }
                    else if (Send3 != null)
                    {
                        Send3(message, mailWriter, false, false);
                    }

                    Close(mailWriter);

                    internalStream.Position = 0;
                    string text;
                    using (var reader = new StreamReader(internalStream, Encoding.UTF8)) {
                        text = reader.ReadToEnd();
                    }

                    internalStream.ReallyClose();

                    var val = EMail_DKIM_RAW_EML.ParseOrNull(text);
                    if (val == null)
                    {
                        rtv.error("整个email内容获取后解析失败");
                        return(rtv);
                    }
                    rtv.Value = val;
                    return(rtv);
                }
            } catch (Exception e) {
                rtv.fail("无法获取整个email内容:" + e.Message, e.ToString());
                return(rtv);
            }
        }
Exemple #14
0
 private void button2_Click(object sender, EventArgs e)
 {
     for (int i = 0; i < Ab.Count; i++)
     {
         for (int j = 0; j < Ab[i].BlockInfo.Count; j++)
         {
             for (int k = 0; k < Ab[i].BlockInfo[j].FileData.Count; k++)
             {
                 ClosableMemoryStream input  = Ab[i].BlockInfo[j].FileData[k];
                 BinaryReader         reader = new BinaryReader(input);
                 reader.BaseStream.Seek(0L, SeekOrigin.Begin);
                 Encoding encoding = Encoding.UTF8;
                 byte[]   bytes    = reader.ReadBytes(4);
                 int      num4     = 0;
                 string   str      = "";
                 int      index    = 0;
                 while (index < 4)
                 {
                     char[] invalidPathChars = Path.GetInvalidPathChars();
                     foreach (char ch in invalidPathChars)
                     {
                         if (bytes[index] == ch)
                         {
                             num4 = 1;
                         }
                     }
                     index++;
                 }
                 if (num4 == 0)
                 {
                     str = encoding.GetString(bytes);
                 }
                 Stream       output = new FileStream(i.ToString() + "-" + k.ToString() + "-" + j.ToString() + "." + str, FileMode.Create);
                 BinaryWriter writer = new BinaryWriter(output);
                 reader.BaseStream.Seek(0L, SeekOrigin.Begin);
                 for (index = 0; index < input.Length; index++)
                 {
                     writer.Write(reader.ReadByte());
                 }
                 writer.Close();
             }
         }
     }
 }
Exemple #15
0
        private Stream getARM9(int type)
        {
            Stream ARM9 = new ClosableMemoryStream();

            if (type == 0 || type == 1)
            {
                ARM9 = main.actualNds.getARM9();
            }
            else if (type == 2)
            {
                ARM9 = File.OpenRead("Textures/arm9.bin");
            }
            else if (type == 3)
            {
                var tableNarc = new Narc();
                tableNarc.LoadNarc(new BinaryReader(main.actualNds.getFat().getFileStreamAt((short)main.Sys.Nodes[0].Nodes[0].Nodes[0].Nodes[1].Nodes[2].Tag)));
                ARM9 = tableNarc.figm.fileData[0];
            }
            return(ARM9);
        }
Exemple #16
0
        public static string GetText([NotNull] this MailMessage message)
        {
            if (message == null)
            {
                throw new ArgumentNullException("message");
            }

            if (message.From == null)
            {
                throw new ArgumentException("From property cannot be null");
            }

            using (var internalStream = new ClosableMemoryStream())
            {
                object mailWriter = MailWriterFactory(internalStream);

                if (Send2 != null)
                {
                    Send2(message, mailWriter, false);
                }
                else
                {
                    Send3(message, mailWriter, false, true);
                }

                Close(mailWriter);

                internalStream.Position = 0;
                string text;
                using (var reader = new StreamReader(internalStream))
                {
                    text = reader.ReadToEnd();
                }

                internalStream.ReallyClose();

                return(text);
            }
        }
Exemple #17
0
        public ScriptRoutineViewer(ClosableMemoryStream ARM9)
        {
            InitializeComponent();
            this.ARM9 = ARM9;
            var reader = new BinaryReader(ARM9);

            reader.BaseStream.Position = 0xEAC58;
            scriptRoutineList          = new List <scriptRoutine_S>();
            scriptRoutineOffsetList    = new List <int>();
            for (int i = 0; i < 839; i++)
            {
                var item = new scriptRoutine_S();
                item.id     = i;
                item.offset = reader.ReadInt32();
                scriptRoutineOffsetList.Add(item.offset);
                commandList.Items.Add(i.ToString("X"));
                scriptRoutineBox.AppendText("\nCommand " + item.id.ToString("X") + " = 0x" + item.offset.ToString("X"));
                scriptRoutineList.Add(item);
            }

            scriptRoutineOffsetList.Sort();
        }
Exemple #18
0
        private void LoadGenericNSBMD(BinaryReader reader)
        {
            PkmnMapDemuxer demuxer;
            Nsbmd          nsbmd;
            List <NsbmdModel.MatTexPalStruct> list;

            Nsbtx.type = NSBMD_MODEL;
            demuxer    = new PkmnMapDemuxer(reader, 1);
            PkmnMapHeader map = new PkmnMapHeader();

            streamNSBMD = new ClosableMemoryStream();
            new BinaryWriter(streamNSBMD).Write(demuxer.DemuxBMDBytes(map, 1));
            nsbmd = new Nsbmd();
            var reader2 = new BinaryReader(streamNSBMD);

            nsbmd.LoadBMD0(reader2, 0);
            actualModel = nsbmd;
            list        = null;
            list        = nsbmd.getMaterials();
            if (actualModel.actualTex != null)
            {
                nsbmd.MatchTextures();
            }
        }
Exemple #19
0
        public static AB_s LoadAb(BinaryReader fp, AB_s Ab)
        {
            fp.BaseStream.Seek(0L, SeekOrigin.Begin);
            int num = 0;

            fp.ReadInt16();
            Ab.Block_Num     = fp.ReadInt16();
            Ab.BlockStartOff = new ArrayList();
            for (num = 0; num <= Ab.Block_Num; num++)
            {
                uint num2 = fp.ReadUInt32();
                Ab.BlockStartOff.Add(num2);
            }
            Ab.BlockData = new List <ClosableMemoryStream>();
            Ab.BlockInfo = new List <BlockInfo_s>();
            num          = 0;
            for (num = 0; num < Ab.Block_Num; num++)
            {
                ClosableMemoryStream output = new ClosableMemoryStream();
                byte[] buffer = new byte[((uint)Ab.BlockStartOff[num + 1]) - ((uint)Ab.BlockStartOff[num])];
                fp.Read(buffer, 0, buffer.Length);
                new BinaryWriter(output).Write(buffer);
                Ab.BlockData.Add(output);
                BlockInfo_s  item   = new BlockInfo_s();
                BinaryReader reader = new BinaryReader(Ab.BlockData[num]);
                reader.BaseStream.Seek(0x13L, SeekOrigin.Begin);
                item.File_Num = reader.ReadByte();
                item.FileOff  = new ArrayList();
                int num3 = 0;
                while (num3 < item.File_Num)
                {
                    uint num4 = reader.ReadUInt32();
                    item.FileOff.Add(num4);
                    num3++;
                }
                item.FileData = new List <ClosableMemoryStream>();
                reader.ReadInt32();
                if (item.File_Num == 0)
                {
                    ClosableMemoryStream stream2 = Ab.BlockData[num];
                    item.FileData.Add(stream2);
                }
                else
                {
                    for (num3 = 0; num3 < item.File_Num; num3++)
                    {
                        ClosableMemoryStream stream3 = new ClosableMemoryStream();
                        byte[] buffer2 = new byte[0];
                        if (num3 == (item.File_Num - 1))
                        {
                            buffer2 = new byte[((uint)Ab.BlockData[num].Length) - ((uint)item.FileOff[num3])];
                        }
                        else
                        {
                            buffer2 = new byte[((uint)item.FileOff[num3 + 1]) - ((uint)item.FileOff[num3])];
                        }
                        reader.Read(buffer, 0, buffer.Length);
                        new BinaryWriter(stream3).Write(buffer);
                        item.FileData.Add(stream3);
                    }
                }
                Ab.BlockInfo.Add(item);
            }
            return(Ab);
        }
Exemple #20
0
    public static long Decompress(ClosableMemoryStream instream, long inLength, ref ClosableMemoryStream outstream)
    {
        long num = 0L;

        instream.Seek(0L, SeekOrigin.Begin);
        byte num2 = (byte)instream.ReadByte();

        byte[] buffer = new byte[3];
        instream.Read(buffer, 0, 3);
        int num3 = IOUtils.ToNDSu24(buffer, 0);

        num += 4L;
        if (num3 == 0)
        {
            buffer = new byte[4];
            instream.Read(buffer, 0, 4);
            num3 = IOUtils.ToNDSs32(buffer, 0);
            num += 4L;
        }
        int num4 = 0x1000;

        byte[] buffer2 = new byte[num4];
        int    index   = 0;
        int    num6    = 0;
        int    num7    = 0;
        int    num8    = 1;

        outstream = new ClosableMemoryStream();
        while (num6 < num3)
        {
            if (num8 == 1)
            {
                num7 = instream.ReadByte();
                num += 1L;
                num8 = 0x80;
            }
            else
            {
                num8 = num8 >> 1;
            }
            if ((num7 & num8) > 0)
            {
                if (((num + 1L) >= inLength) && (num < inLength))
                {
                    instream.ReadByte();
                    num += 1L;
                }
                int num9 = instream.ReadByte();
                num += 1L;
                int num10 = instream.ReadByte();
                num += 1L;
                int num11 = num9 >> 4;
                num11 += 3;
                int num12 = ((num9 & 15) << 8) | num10;
                num12++;
                int num13 = (index + num4) - num12;
                for (int i = 0; i < num11; i++)
                {
                    byte num15 = buffer2[num13 % num4];
                    num13++;
                    outstream.WriteByte(num15);
                    buffer2[index] = num15;
                    index          = (index + 1) % num4;
                }
                num6 += num11;
            }
            else
            {
                int num16 = instream.ReadByte();
                num += 1L;
                num6++;
                outstream.WriteByte((byte)num16);
                buffer2[index] = (byte)num16;
                index          = (index + 1) % num4;
            }
        }
        if (num < inLength)
        {
        }
        return((long)num3);
    }
Exemple #21
0
        public Hex_Viewer(ClosableMemoryStream File)
        {
            int    num2;
            string str;
            int    num3;
            byte   num4;

            components = null;
            InitializeComponent();
            BinaryReader reader = new BinaryReader(File);

            reader.BaseStream.Seek(0L, SeekOrigin.Begin);
            int num = 0;

            if (reader.BaseStream.Length > 0x10L)
            {
                for (num2 = 0; num2 < (File.Length / 0x10L); num2++)
                {
                    str = "";
                    if (num < 0x100)
                    {
                        if (num < 0x10)
                        {
                            str = "00" + num.ToString("X");
                        }
                        else
                        {
                            str = "0" + num.ToString("X");
                        }
                    }
                    else
                    {
                        str = num.ToString("X");
                    }
                    HexBox.AppendText("0x" + str + "        ");
                    num3 = 0;
                    while (num3 < 0x10)
                    {
                        num4 = reader.ReadByte();
                        if (num4 < 0x10)
                        {
                            str = "0" + num4.ToString("X");
                        }
                        else
                        {
                            str = num4.ToString("X");
                        }
                        HexBox.AppendText(str + " ");
                        num++;
                        num3++;
                    }
                    reader.BaseStream.Seek(-16L, SeekOrigin.Current);
                    HexBox.AppendText("               : ");
                    num3 = 0;
                    while (num3 < 0x10)
                    {
                        num4 = reader.ReadByte();
                        char ch = (char)num4;
                        if (num4 < 0x20)
                        {
                            ch = '.';
                        }
                        HexBox.AppendText(ch + " ");
                        num3++;
                    }
                    HexBox.AppendText("\n");
                }
            }
            else
            {
                HexBox.AppendText("0x000            ");
                for (num2 = 0; num2 < File.Length; num2++)
                {
                    num4 = reader.ReadByte();
                    if (num4 < 0x10)
                    {
                        str = "0" + num4.ToString("X");
                    }
                    else
                    {
                        str = num4.ToString("X");
                    }
                    HexBox.AppendText(str + " ");
                    num++;
                }
                reader.BaseStream.Seek((long)-num, SeekOrigin.Current);
                HexBox.AppendText("               : ");
                for (num3 = 0; num3 < num; num3++)
                {
                    num4 = reader.ReadByte();
                    char ch2 = (char)num4;
                    if (num4 < 0x20)
                    {
                        ch2 = '.';
                    }
                    HexBox.AppendText(ch2 + " ");
                }
            }
        }
Exemple #22
0
    public static long Decompress(ClosableMemoryStream instream, long inLength, ref ClosableMemoryStream outstream)
    {
        long num  = 0L;
        byte num2 = (byte)instream.ReadByte();

        byte[] buffer = new byte[3];
        instream.Read(buffer, 0, 3);
        int num3 = IOUtils.ToNDSu24(buffer, 0);

        num += 4L;
        if (num3 == 0)
        {
            buffer = new byte[4];
            instream.Read(buffer, 0, 4);
            num3 = IOUtils.ToNDSs32(buffer, 0);
            num += 4L;
        }
        int num4 = 0x1000;

        byte[] buffer2 = new byte[num4];
        int    index   = 0;
        int    num6    = 0;
        int    num7    = 0;
        int    num8    = 1;

        while (num6 < num3)
        {
            if (num8 == 1)
            {
                num7 = instream.ReadByte();
                num += 1L;
                num8 = 0x80;
            }
            else
            {
                num8 = num8 >> 1;
            }
            if ((num7 & num8) > 0)
            {
                int num12;
                int num13;
                int num9 = instream.ReadByte();
                num += 1L;
                int num10 = num9 >> 4;
                int num11 = -1;
                if (num10 == 0)
                {
                    num12 = instream.ReadByte();
                    num  += 1L;
                    num13 = instream.ReadByte();
                    num  += 1L;
                    num10 = (((num9 & 15) << 4) | (num12 >> 4)) + 0x11;
                    num11 = (((num12 & 15) << 8) | num13) + 1;
                }
                else if (num10 == 1)
                {
                    num12 = instream.ReadByte();
                    num  += 1L;
                    num13 = instream.ReadByte();
                    num  += 1L;
                    int num14 = instream.ReadByte();
                    num  += 1L;
                    num10 = ((((num9 & 15) << 12) | (num12 << 4)) | (num13 >> 4)) + 0x111;
                    num11 = (((num13 & 15) << 8) | num14) + 1;
                }
                else
                {
                    num12 = instream.ReadByte();
                    num  += 1L;
                    num10 = ((num9 & 240) >> 4) + 1;
                    num11 = (((num9 & 15) << 8) | num12) + 1;
                }
                int num15 = (index + num4) - num11;
                for (int i = 0; i < num10; i++)
                {
                    byte num17 = buffer2[num15 % num4];
                    num15++;
                    outstream.WriteByte(num17);
                    buffer2[index] = num17;
                    index          = (index + 1) % num4;
                }
                num6 += num10;
            }
            else
            {
                int num18 = instream.ReadByte();
                num      += 1L;
                outstream = new ClosableMemoryStream();
                outstream.WriteByte((byte)num18);
                num6++;
                buffer2[index] = (byte)num18;
                index          = (index + 1) % num4;
            }
        }
        if (num < inLength)
        {
        }
        return((long)num3);
    }
Exemple #23
0
        public static string GetText([NotNull]this MailMessage message)
        {
            if (message == null)
            {
                throw new ArgumentNullException("message");
            }

            if (message.From == null)
            {
                throw new ArgumentException("From property cannot be null");
            }

            using (var internalStream = new ClosableMemoryStream())
            {

                object mailWriter = MailWriterFactory(internalStream);

                if (Send2 != null)
                {
                    Send2(message, mailWriter, false);
                }
                else
                {
                    Send3(message, mailWriter, false, true);
                }

                Close(mailWriter);

                internalStream.Position = 0;
                string text;
                using (var reader = new StreamReader(internalStream))
                {
                    text = reader.ReadToEnd();
                }

                internalStream.ReallyClose();

                return text;

            }
        }
Exemple #24
0
        public List <NsbmdModel.MatTexPalStruct> LoadBTX0(ClosableMemoryStream stream)
        {
            BinaryReader reader = new BinaryReader(stream);

            return(LoadBTX0(reader));
        }