Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Globalization;
- namespace GameServer
- {
- class GameSocket
- {
- public static PacketWriter writer;
- //private static StreamWriter sw2 = new StreamWriter(@"D:\csro\Package\packete2.txt");
- /// <summary>
- /// This function transmits the data to an specific client
- /// </summary>
- /// <param name="buffer">Memory buffer</param>
- /// <param name="Index">Clientindex</param>
- public static void ProcessData(byte[] buffer, int Index)
- {
- PacketReader reader = new PacketReader(buffer, buffer.Length);
- writer = new PacketWriter();
- ushort psize = reader.Read<ushort>();
- ushort opcode = reader.Read<ushort>();
- reader.ModifyIndex(2);
- switch (opcode)
- {
- case CLIENT_OPCODES.LOGIN_CLIENT_KEEP_ALIVE: //avoids a disconnect
- case CLIENT_OPCODES.LOGIN_CLIENT_ACCEPT_HANDSHAKE:
- break;
- case SERVER_OPCODES.LOGIN_SERVER_HANDSHAKE:
- break;
- case CLIENT_OPCODES.LOGIN_CLIENT_LOGIN:
- On_2001(buffer, Index);
- break;
- case CLIENT_OPCODES.LOGIN_CLIENT_GAMELOGIN:
- On_6103(buffer, Index);
- break;
- case CLIENT_OPCODES.LOGIN_CLIENT_LOGINACCESS:
- On_7007(buffer, Index);
- break;
- case CLIENT_OPCODES.LOGIN_CLIENT_CHARSELECTACCEPT:
- On_7001(buffer, Index);
- break;
- }
- }
- private static void On_2001(byte[] Packet, int Index_)
- {
- if (convert.HexToString(convert.BytesToHex(Packet).Substring(16)).Contains("SR_Client"))
- {
- //0E00 0120 0000 0B004167656E7453657276657200
- writer.SetOpcode(CLIENT_OPCODES.LOGIN_CLIENT_LOGIN);
- byte[] bArray = convert.ToByteArray("4167656E74536572766572");
- writer.Append<ushort>((ushort)bArray.Length);
- writer.AppendArray<byte>(bArray, bArray.Length);
- writer.Append<byte>(0);
- ServerSocket.Send(writer.getWorkspace(), Index_);
- }
- }
- //GameServer Login
- private static void On_6103(byte[] Packet, int Index_)
- {
- //2300 0361 xxxx 660100000A007375636B6D796431636B0A00736F7565726C6174343204000000000000
- int userLen = int.Parse(convert.Inverse(convert.BytesToHex(Packet).Substring(20, 4)), NumberStyles.HexNumber);
- string user = convert.HexToString(convert.BytesToHex(Packet).Substring(24, userLen * 2));
- int pwLen = int.Parse(convert.Inverse(convert.BytesToHex(Packet).Substring((24 + (userLen * 2)), 4)), NumberStyles.HexNumber);
- string pass = convert.HexToString(convert.BytesToHex(Packet).Substring((28 + (userLen * 2)), pwLen * 2));
- string dbuser = Database.GetString("SELECT id FROM user WHERE id='" + user + "'");//, "id");
- string dbpass = Database.GetString("SELECT password FROM user WHERE id='" + user + "'");//, "password");
- if ((dbuser.ToLower() == user.ToLower()) && (dbpass == pass))
- {
- writer.SetOpcode(0x600D);
- writer.Append<ushort>(0x0101);
- writer.Append<byte>(0);
- writer.Append<ushort>(0x2005);
- ServerSocket.Send(writer.getWorkspace(), Index_);
- writer.SetOpcode(0x600D);
- writer.Append<ushort>(0x0100);
- writer.Append<ushort>(0x0100);
- writer.Append<uint>(0x0005088F);
- writer.Append<ushort>(0);
- writer.Append<byte>(0x02);
- ServerSocket.Send(writer.getWorkspace(), Index_);
- writer.SetOpcode(0x600D);
- writer.Append<ushort>(0x0101);
- writer.Append<byte>(0);
- writer.Append<ushort>(0x6005);
- ServerSocket.Send(writer.getWorkspace(), Index_);
- writer.SetOpcode(0x600D);
- writer.Append<ushort>(0x0300);
- writer.Append<ushort>(0x0200);
- writer.Append<ushort>(0x0200);
- ServerSocket.Send(writer.getWorkspace(), Index_);
- writer.SetOpcode(0xA103);
- writer.Append<byte>(01);
- ServerSocket.Send(writer.getWorkspace(), Index_);
- }
- }
- private static void On_7007(byte[] Packet, int Index_)
- {
- if (Packet[6] == 0x02)
- {
- /*writer.SetOpcode(0xB007);
- writer.Append<byte>(02);
- writer.Append<ushort>(0x0001);
- ServerSocket.Send(writer.getWorkspace(), Index_);*/
- byte[] b = convert.ToByteArray("520007B000000201016D3A0000030046497933512F694C06000000005401640000000C290000B61500000002000208D42E0000371C2F000037F82E0000375A32000037402F000037882F000037622B0000378E2800000000");
- ServerSocket.Send(b, Index_);
- }
- }
- private static void On_7001(byte[] Packet, int Index_)
- {
- byte[] b = convert.ToByteArray("010001B0000001");
- ServerSocket.Send(b, Index_);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement