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); } }
public void Translate(Client client, byte packetId, PacketIn packet) { if (!Handlers.ContainsKey(packetId)) { PacketTranslator.DumpUnknown(client, packet); } else { Handlers[packetId](client, packet); } }
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); } } }
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; } }
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("无效的客户端请求"); } }
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); } }