public static string PrintTdfDoubleList(Blaze.TdfDoubleList list, int tabs)
        {
            StringBuilder sb  = new StringBuilder();
            string        tab = "";

            for (int i = 0; i < tabs; i++)
            {
                tab += "\t";
            }
            long   l;
            string s;

            Blaze.TdfStruct t;
            for (int i = 0; i < list.Count; i++)
            {
                switch (list.SubType1)
                {
                case 0:
                    l = ((List <long>)list.List1)[i];
                    sb.Append(tab + "0x" + l.ToString("X") + "(" + l + ") = ");
                    break;

                case 1:
                    s = ((List <string>)list.List1)[i];
                    sb.Append(tab + "\"" + s + "\" = ");
                    break;

                default:
                    sb.Append(tab + " = ");
                    break;
                }
                switch (list.SubType2)
                {
                case 0:
                    l = ((List <long>)list.List2)[i];
                    sb.AppendLine("0x" + l.ToString("X") + "(" + l + "),");
                    break;

                case 1:
                    s = ((List <string>)list.List2)[i];
                    sb.AppendLine("\"" + s + "\",");
                    break;

                case 3:
                    t = ((List <Blaze.TdfStruct>)list.List2)[i];
                    sb.AppendLine(" [" + i + "]:TdfStruct{");
                    foreach (Blaze.Tdf tdf in t.Values)
                    {
                        sb.Append(PrintTdf(tdf, tabs + 1));
                    }
                    sb.AppendLine(tab + "},");
                    break;

                default:
                    sb.AppendLine(",");
                    break;
                }
            }
            return(sb.ToString());
        }
Example #2
0
        private static void PreAuth(Blaze.Packet p, NetworkStream ns)
        {
            List <Blaze.Tdf> Result = new List <Blaze.Tdf>();

            Result.Add(Blaze.TdfInteger.Create("ANON", 0));
            Result.Add(Blaze.TdfString.Create("ASRC", "300294"));
            List <string> t  = Helper.ConvertStringList("{1} {25} {4} {27} {28} {6} {7} {9} {10} {11} {30720} {30721} {30722} {30723} {20} {30725} {30726} {2000}");
            List <long>   t2 = new List <long>();

            foreach (string v in t)
            {
                t2.Add(Convert.ToInt64(v));
            }
            Result.Add(Blaze.TdfList.Create("CIDS", 0, t2.Count, t2));
            t = new List <string>();
            List <string> t3 = new List <string>();

            Helper.ConvertDoubleStringList("{connIdleTimeout ; 90s} {defaultRequestTimeout ; 60s} {pingPeriod ; 20s} {voipHeadsetUpdateRate ; 1000} {xlspConnectionIdleTimeout ; 300}", out t, out t3);
            Blaze.TdfDoubleList conf2 = Blaze.TdfDoubleList.Create("CONF", 1, 1, t, t3, t.Count);
            List <Blaze.Tdf>    t4    = new List <Blaze.Tdf>();

            t4.Add(conf2);
            Result.Add(Blaze.TdfStruct.Create("CONF", t4));
            Result.Add(Blaze.TdfString.Create("INST", "battlefield-assault-pc"));
            Result.Add(Blaze.TdfInteger.Create("MINR", 0));
            Result.Add(Blaze.TdfString.Create("NASP", "cem_ea_id"));
            Result.Add(Blaze.TdfString.Create("PILD", ""));
            Result.Add(Blaze.TdfString.Create("PLAT", "pc"));
            List <Blaze.Tdf> QOSS = new List <Blaze.Tdf>();
            List <Blaze.Tdf> BWPS = new List <Blaze.Tdf>();

            BWPS.Add(Blaze.TdfString.Create("PSA\0", "127.0.0.1"));
            BWPS.Add(Blaze.TdfInteger.Create("PSP\0", 80));
            BWPS.Add(Blaze.TdfString.Create("SNA\0", "wv"));
            QOSS.Add(Blaze.TdfStruct.Create("BWPS", BWPS));
            QOSS.Add(Blaze.TdfInteger.Create("LNP\0", 0xA));
            List <Blaze.Tdf> LTPS1 = new List <Blaze.Tdf>();

            LTPS1.Add(Blaze.TdfString.Create("PSA\0", "127.0.0.1"));
            LTPS1.Add(Blaze.TdfInteger.Create("PSP\0", 80));
            LTPS1.Add(Blaze.TdfString.Create("SNA\0", "wv"));
            List <Blaze.TdfStruct> LTPS = new List <Blaze.TdfStruct>();

            LTPS.Add(Blaze.CreateStructStub(LTPS1));
            t = Helper.ConvertStringList("{ams}");
            QOSS.Add(Blaze.TdfDoubleList.Create("LTPS", 1, 3, t, LTPS, 1));
            QOSS.Add(Blaze.TdfInteger.Create("SVID", 0x45410805));
            Result.Add(Blaze.TdfStruct.Create("QOSS", QOSS));
            Result.Add(Blaze.TdfString.Create("RSRC", "300294"));
            Result.Add(Blaze.TdfString.Create("SVER", "Monolith"));
            byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, Result);
            ns.Write(buff, 0, buff.Length);
            ns.Flush();
        }
Example #3
0
            public void MakeATTR()
            {
                List <string> keys = new List <string>();
                List <string> data = new List <string>();

                foreach (Attribut a in Attributes)
                {
                    keys.Add(a.Name);
                    data.Add(a.Value);
                }
                ATTR = Blaze.TdfDoubleList.Create("ATTR", 1, 1, keys, data, Attributes.Count);
            }
        private static void PreAuth(Blaze.Packet p, PlayerInfo pi, NetworkStream ns)
        {
            List <Blaze.Tdf> input = Blaze.ReadPacketContent(p);

            Blaze.TdfStruct  CDAT = (Blaze.TdfStruct)input[0];
            Blaze.TdfInteger TYPE = (Blaze.TdfInteger)CDAT.Values[3];
            pi.isServer = TYPE.Value != 0;
            if (pi.isServer)
            {
                pi.game    = new GameInfo();
                pi.profile = Profiles.Create("test-server", 999);
                pi.userId  = 999;
            }
            Blaze.TdfStruct  CINF = (Blaze.TdfStruct)input[1];
            Blaze.TdfString  CVER = (Blaze.TdfString)CINF.Values[4];
            Blaze.TdfInteger LOC  = (Blaze.TdfInteger)CINF.Values[7];
            pi.loc     = LOC.Value;
            pi.version = CVER.Value;
            BlazeServer.Log("[CLNT] #" + pi.userId + " is a " + (pi.isServer ? "server" : "client"), System.Drawing.Color.Blue);
            List <Blaze.Tdf> Result = new List <Blaze.Tdf>();

            Result.Add(Blaze.TdfInteger.Create("ANON", 0));
            Result.Add(Blaze.TdfString.Create("ASRC", "300294"));
            List <string> t  = Helper.ConvertStringList("{1} {25} {4} {27} {28} {6} {7} {9} {10} {11} {30720} {30721} {30722} {30723} {20} {30725} {30726} {2000}");
            List <long>   t2 = new List <long>();

            foreach (string v in t)
            {
                t2.Add(Convert.ToInt64(v));
            }
            Result.Add(Blaze.TdfList.Create("CIDS", 0, t2.Count, t2));
            t = new List <string>();
            List <string> t3 = new List <string>();

            Helper.ConvertDoubleStringList("{connIdleTimeout ; 90s} {defaultRequestTimeout ; 60s} {pingPeriod ; 20s} {voipHeadsetUpdateRate ; 1000} {xlspConnectionIdleTimeout ; 300}", out t, out t3);
            Blaze.TdfDoubleList conf2 = Blaze.TdfDoubleList.Create("CONF", 1, 1, t, t3, t.Count);
            List <Blaze.Tdf>    t4    = new List <Blaze.Tdf>();

            t4.Add(conf2);
            Result.Add(Blaze.TdfStruct.Create("CONF", t4));
            Result.Add(Blaze.TdfString.Create("INST", "battlefield-assault-pc"));
            Result.Add(Blaze.TdfInteger.Create("MINR", 0));
            Result.Add(Blaze.TdfString.Create("NASP", "cem_ea_id"));
            Result.Add(Blaze.TdfString.Create("PILD", ""));
            Result.Add(Blaze.TdfString.Create("PLAT", "pc"));
            List <Blaze.Tdf> QOSS = new List <Blaze.Tdf>();
            List <Blaze.Tdf> BWPS = new List <Blaze.Tdf>();

            BWPS.Add(Blaze.TdfString.Create("PSA\0", ProviderInfo.QOS_IP));
            BWPS.Add(Blaze.TdfInteger.Create("PSP\0", ProviderInfo.QOS_Port));
            BWPS.Add(Blaze.TdfString.Create("SNA\0", ProviderInfo.QOS_Name));
            QOSS.Add(Blaze.TdfStruct.Create("BWPS", BWPS));
            QOSS.Add(Blaze.TdfInteger.Create("LNP\0", 0xA));
            List <Blaze.Tdf> LTPS1 = new List <Blaze.Tdf>();

            LTPS1.Add(Blaze.TdfString.Create("PSA\0", ProviderInfo.QOS_IP));
            LTPS1.Add(Blaze.TdfInteger.Create("PSP\0", ProviderInfo.QOS_Port));
            LTPS1.Add(Blaze.TdfString.Create("SNA\0", ProviderInfo.QOS_Name));
            List <Blaze.TdfStruct> LTPS = new List <Blaze.TdfStruct>();

            LTPS.Add(Blaze.CreateStructStub(LTPS1));
            t = Helper.ConvertStringList("{" + ProviderInfo.QOS_SName + "}");
            QOSS.Add(Blaze.TdfDoubleList.Create("LTPS", 1, 3, t, LTPS, 1));
            QOSS.Add(Blaze.TdfInteger.Create("SVID", 0x45410805));
            Result.Add(Blaze.TdfStruct.Create("QOSS", QOSS));
            Result.Add(Blaze.TdfString.Create("RSRC", "300294"));
            Result.Add(Blaze.TdfString.Create("SVER", "WV Server"));
            byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, Result);
            ns.Write(buff, 0, buff.Length);
            ns.Flush();
        }
Example #5
0
        private void tv1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            TreeNode t = e.Node;

            if (t != null && t.Name != "")
            {
                int       n   = Convert.ToInt32(t.Name);
                Blaze.Tdf tdf = inlist[n];
                string    s;
                switch (tdf.Type)
                {
                case 0:
                    Blaze.TdfInteger ti = (Blaze.TdfInteger)tdf;
                    rtb2.Text = "0x" + ti.Value.ToString("X");
                    if (ti.Label == "IP  ")
                    {
                        rtb2.Text += Environment.NewLine + "(" + Blaze.GetStringFromIP(ti.Value) + ")";
                    }
                    break;

                case 1:
                    rtb2.Text = ((Blaze.TdfString)tdf).Value.ToString();
                    break;

                case 2:
                    rtb2.Text  = "Length: " + ((Blaze.TdfBlob)tdf).Data.Length.ToString();
                    rtb2.Text += Environment.NewLine + Blaze.HexDump(((Blaze.TdfBlob)tdf).Data);
                    break;

                case 4:
                    Blaze.TdfList l = (Blaze.TdfList)tdf;
                    s = "";
                    for (int i = 0; i < l.Count; i++)
                    {
                        switch (l.SubType)
                        {
                        case 0:
                            s += "{" + ((List <long>)l.List)[i] + "} ";
                            break;

                        case 1:
                            s += "{" + ((List <string>)l.List)[i] + "} ";
                            break;

                        case 9:
                            Blaze.TrippleVal t2 = ((List <Blaze.TrippleVal>)l.List)[i];
                            s += "{" + t2.v1.ToString("X") + "; " + t2.v2.ToString("X") + "; " + t2.v3.ToString("X") + "} ";
                            break;
                        }
                    }
                    rtb2.Text = s;
                    break;

                case 5:
                    s = "";
                    Blaze.TdfDoubleList ll = (Blaze.TdfDoubleList)tdf;
                    for (int i = 0; i < ll.Count; i++)
                    {
                        s += "{";
                        switch (ll.SubType1)
                        {
                        case 0:
                            List <long> l1 = (List <long>)ll.List1;
                            s += l1[i].ToString("X");
                            break;

                        case 1:
                            List <string> l2 = (List <string>)ll.List1;
                            s += l2[i];
                            break;

                        case 0xA:
                            List <float> lf1 = (List <float>)ll.List1;
                            s += lf1[i].ToString();
                            break;

                        default:
                            s += "(see List1[" + i + "])";
                            break;
                        }
                        s += " ; ";
                        switch (ll.SubType2)
                        {
                        case 0:
                            List <long> l1 = (List <long>)ll.List2;
                            s += l1[i].ToString("X");
                            break;

                        case 1:
                            List <string> l2 = (List <string>)ll.List2;
                            s += l2[i];
                            break;

                        case 0xA:
                            List <float> lf1 = (List <float>)ll.List2;
                            s += lf1[i].ToString();
                            break;

                        default:
                            s += "(see List2[" + i + "])";
                            break;
                        }
                        s += "}\n";
                    }
                    rtb2.Text = s;
                    break;

                case 6:
                    rtb2.Text = "Type: 0x" + ((Blaze.TdfUnion)tdf).UnionType.ToString("X2");
                    break;

                case 7:
                    Blaze.TdfIntegerList til = (Blaze.TdfIntegerList)tdf;
                    s = "";
                    for (int i = 0; i < til.Count; i++)
                    {
                        s += til.List[i].ToString("X");
                        if (i < til.Count - 1)
                        {
                            s += "; ";
                        }
                    }
                    rtb2.Text = s;
                    break;

                case 8:
                    Blaze.TdfDoubleVal dval = (Blaze.TdfDoubleVal)tdf;
                    rtb2.Text = "0x" + dval.Value.v1.ToString("X") + " 0x" + dval.Value.v2.ToString("X");
                    break;

                case 9:
                    Blaze.TdfTrippleVal tval = (Blaze.TdfTrippleVal)tdf;
                    rtb2.Text = "0x" + tval.Value.v1.ToString("X") + " 0x" + tval.Value.v2.ToString("X") + " 0x" + tval.Value.v3.ToString("X");
                    break;

                default:
                    rtb2.Text = "";
                    break;
                }
            }
        }
Example #6
0
        private TreeNode TdfToTree(Blaze.Tdf tdf)
        {
            TreeNode t, t2, t3;

            switch (tdf.Type)
            {
            case 3:
                t = tdf.ToTree();
                Blaze.TdfStruct str = (Blaze.TdfStruct)tdf;
                if (str.startswith2)
                {
                    t.Text += " (Starts with 2)";
                }
                foreach (Blaze.Tdf td in str.Values)
                {
                    t.Nodes.Add(TdfToTree(td));
                }
                t.Name = (inlistcount++).ToString();
                inlist.Add(tdf);
                return(t);

            case 4:
                t = tdf.ToTree();
                Blaze.TdfList l = (Blaze.TdfList)tdf;
                if (l.SubType == 3)
                {
                    List <Blaze.TdfStruct> l2 = (List <Blaze.TdfStruct>)l.List;
                    for (int i = 0; i < l2.Count; i++)
                    {
                        t2 = new TreeNode("Entry #" + i);
                        if (l2[i].startswith2)
                        {
                            t2.Text += " (Starts with 2)";
                        }
                        List <Blaze.Tdf> l3 = l2[i].Values;
                        for (int j = 0; j < l3.Count; j++)
                        {
                            t2.Nodes.Add(TdfToTree(l3[j]));
                        }
                        t.Nodes.Add(t2);
                    }
                }
                t.Name = (inlistcount++).ToString();
                inlist.Add(tdf);
                return(t);

            case 5:
                t = tdf.ToTree();
                Blaze.TdfDoubleList ll = (Blaze.TdfDoubleList)tdf;
                t2 = new TreeNode("List 1");
                if (ll.SubType1 == 3)
                {
                    List <Blaze.TdfStruct> l2 = (List <Blaze.TdfStruct>)ll.List1;
                    for (int i = 0; i < l2.Count; i++)
                    {
                        t3 = new TreeNode("Entry #" + i);
                        if (l2[i].startswith2)
                        {
                            t2.Text += " (Starts with 2)";
                        }
                        List <Blaze.Tdf> l3 = l2[i].Values;
                        for (int j = 0; j < l3.Count; j++)
                        {
                            t3.Nodes.Add(TdfToTree(l3[j]));
                        }
                        t2.Nodes.Add(t3);
                    }
                    t.Nodes.Add(t2);
                }
                t2 = new TreeNode("List 2");
                if (ll.SubType2 == 3)
                {
                    List <Blaze.TdfStruct> l2 = (List <Blaze.TdfStruct>)ll.List2;
                    for (int i = 0; i < l2.Count; i++)
                    {
                        t3 = new TreeNode("Entry #" + i);
                        if (l2[i].startswith2)
                        {
                            t2.Text += " (Starts with 2)";
                        }
                        List <Blaze.Tdf> l3 = l2[i].Values;
                        for (int j = 0; j < l3.Count; j++)
                        {
                            t3.Nodes.Add(TdfToTree(l3[j]));
                        }
                        t2.Nodes.Add(t3);
                    }
                    t.Nodes.Add(t2);
                }
                t.Name = (inlistcount++).ToString();
                inlist.Add(tdf);
                return(t);

            case 6:
                t = tdf.ToTree();
                Blaze.TdfUnion tu = (Blaze.TdfUnion)tdf;
                if (tu.UnionType != 0x7F)
                {
                    t.Nodes.Add(TdfToTree(tu.UnionContent));
                }
                t.Name = (inlistcount++).ToString();
                inlist.Add(tdf);
                return(t);

            default:
                t      = tdf.ToTree();
                t.Name = (inlistcount++).ToString();
                inlist.Add(tdf);
                return(t);
            }
        }