public MainWindow()
        {
            try
            {
                InitializeComponent();

                //Opcode Section
                PacketTranslator.Init();
                pp     = new PacketProcessor(this);
                cap    = new Capture(this);
                filter = new PacketFilter();

                pp.Init();

                //Serverlist
                List <ServerInfo> servers = MiscFuncs.LoadServerlistFile(Directory.GetCurrentDirectory() + "\\serverlist.xml");

                if (servers != null && servers.Count > 0)
                {
                    //We got a custom serverlist.xml loaded....
                    boxServers.Items.Clear();

                    foreach (var server in servers)
                    {
                        ComboBoxItem item = new ComboBoxItem {
                            Tag = server, Content = server.ToString()
                        };
                        int index = boxServers.Items.Add(item);
                        if (server.Focus)
                        {
                            boxServers.SelectedIndex = index;
                        }
                        if (server.AutoStart)
                        {
                            btnStartStop_Click(null, null);
                        }
                    }
                }


                //Print Info
                string info = String.Format("Loaded {0} Opcodes. \n" +
                                            "Loaded {1} servers.\n" +
                                            "Github of this Project: https://github.com/GoneUp/Tera_PacketViewer\n" +
                                            "Released at Ragezone: http://forum.ragezone.com/f797/release-tera-live-packet-sniffer-1052922/\n" +
                                            "Uses code of the TeraDamageMeter by gothos-folly: https://github.com/gothos-folly/TeraDamageMeter\n" +
                                            "Have Fun ;)", PacketTranslator.PacketNames.Count, boxServers.Items.Count);
                SetText(info);
            }
            catch (Exception ex)
            {
                string info = "Startup FAIL! Is WinPcap installed? \n " + ex;
                SetText(info);
            }
        }
Beispiel #2
0
 public void Translate(Client client, byte packetId, PacketIn packet)
 {
     if (!Handlers.ContainsKey(packetId))
     {
         PacketTranslator.DumpUnknown(client, packet);
     }
     else
     {
         Handlers[packetId](client, packet);
     }
 }
Beispiel #3
0
 public void Translate(Client client, byte packetId, PacketIn packet)
 {
     if (!Handlers.ContainsKey(packetId))
     {
         ServerConsole.WriteLine("Unknown Packet Detected.", MessageLevel.Warning);
         PacketTranslator.DumpUnknown(client, packet);
     }
     else
     {
         try
         {
             Handlers[packetId](client, packet);
         }
         catch (Exception ex)
         {
             ServerConsole.WriteLine("Translator Error: {0} for packet {1}", MessageLevel.Error, ex.ToString(), packetId);
         }
     }
 }
Beispiel #4
0
        public Packet_old(Direction dir, ushort opCode, byte[] data, bool hexWithSpaces)
        {
            Dir    = dir;
            OpCode = opCode;
            Data   = data;
            OpName = PacketTranslator.GetOpcodeName(opCode);;

            HexShortText = Data.ToHex();
            HexLongText  = "0x" + string.Format("{0:X4}", opCode) + "\n\n" + Data.FormatHex();

            if (hexWithSpaces)
            {
                string newHex = "";
                for (int i = 0; i < HexShortText.Length; i += 2)
                {
                    newHex += HexShortText.Substring(i, 2) + " ";
                }
                HexShortText = newHex;
            }
        }
Beispiel #5
0
        public void OnRequesting(MsgPackSession session, BinaryRequestInfo requestInfo)
        {
            Client client = Session2ClientTable[session];
            MyData data   = null;

            try
            {
                data = PacketTranslator.Unpack(requestInfo.Body);
            }
            catch (Exception e)
            {
                Debug(string.Format("error at parse client request {0} {1}", e.Message, e.TargetSite));
                Debug(string.Format("error messsage {0} {1}", requestInfo?.ToString(), requestInfo.Body?.ToString()));
                session.Close();
                return;
            }
            TransferType request = PacketTranslator.GetTransferType(requestInfo.Key);

            //OutPut(string.Format("请求协议为{0}, 内容为{1}", data.Protocol.ToString(), data.Body[0]));
            if (client.UserName == null && !request.Equals(TransferType.TypeLogin))
            {
                OutPut(string.Format("{0} 未登录客户端,关闭连接", client.IP));
                session.Close();
                return;
            }

            if (data.Description == PacketDescription.Client2Hall)
            {
                switch (request)
                {
                case TransferType.TypeLogin:                              //登录相关
                    switch (data.Protocol)
                    {
                    case protocol.Login:
                        client.CheckUserName(data);
                        break;

                    case protocol.Register:                               //用户注册
                        client.Register(data);
                        break;

                    case protocol.PasswordChange:                         //密码修改
                        break;

                    default:
                        return;
                    }
                    break;

                case TransferType.TypeMessage:                            //公共事件 比如 聊天
                    MessageForward(client, data);
                    break;

                case TransferType.TypeSwitch:                               //切换room和hall
                    RoomSwitch(client, data);
                    break;

                case TransferType.TypeUserProfile:                          //修改个人信息
                    client.UpDateProfile(data);
                    break;

                default:
                    Debug(string.Format("{0} 对聊天大厅无效的请求", client.UserName));
                    break;;
                }
            }
            else if (data.Description == PacketDescription.Client2Room)
            {
                switch (request)
                {
                case TransferType.TypeMessage:                            //公共事件 比如 聊天
                    MessageForward(client, data);
                    break;

                case TransferType.TypeGameControll:                       //游戏内各操作
                    client.ControlGame(data);
                    break;

                case TransferType.TypeSwitch:                               //切换room和hall
                    RoomSwitch(client, data);
                    break;

                default:
                    Debug(string.Format("{0} 对ROOM无效的请求", client.UserName));
                    break;;
                }
            }
            else
            {
                OutPut("无效的客户端请求");
            }
        }
Beispiel #6
0
        public MainWindow()
        {
            try
            {
                InitializeComponent();

                //Opcode Section
                PacketTranslator.Init(this);

                IEnumerable <string> sortDescendingQuery =
                    from w in PacketTranslator.PacketNames.Values
                    orderby w ascending
                    select w;

                foreach (var packetName in sortDescendingQuery)
                {
                    PacketNamesList.Items.Add(packetName);
                }

                PacketNamesList.SelectedIndex = 0;

                //Serverlist
                List <ServerInfo> servers = MiscFuncs.LoadServerlistFile(Directory.GetCurrentDirectory() + "\\serverlist.xml");

                if (servers != null && servers.Count > 0)
                {
                    //We got a custom serverlist.xml loaded....
                    BoxServers.Items.Clear();

                    foreach (var server in servers)
                    {
                        int index = BoxServers.Items.Add(server.GetDisplayString());
                        if (server.Focus)
                        {
                            BoxServers.SelectedIndex = index;
                        }
                    }
                }

                //Capture
                pp  = new PacketProcessor(this);
                cap = new Capture.Capture(this);

                var list = cap.GetDevices();

                foreach (var nic in list)
                {
                    BoxNic.Items.Add(nic);
                }

                pp.Init();


                //Print Info
                string info = String.Format("Loaded {0} Opcodes. \n" +
                                            "Loaded {1} servers.\n" +
                                            "{2} network devices available.\n" +
                                            "Github of this Project: https://github.com/GoneUp/Tera_PacketViewer\n" +
                                            "Released at Ragezone: http://forum.ragezone.com/f797/release-tera-live-packet-sniffer-1052922/\n" +
                                            "Have Fun ;)", PacketNamesList.Items.Count, BoxServers.Items.Count,
                                            BoxNic.Items.Count);
                SetText(info);
            }
            catch (Exception ex)
            {
                string info = "Startup FAIL! Is WinPcap installed? \n " + ex;
                SetText(info);
            }
        }