Advertisement
Guest User

Untitled

a guest
May 2nd, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.44 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Globalization;
  6.  
  7. namespace GameServer
  8. {
  9.     class GameSocket
  10.     {
  11.         public static PacketWriter writer;
  12.         //private static StreamWriter sw2 = new StreamWriter(@"D:\csro\Package\packete2.txt");
  13.         /// <summary>
  14.         /// This function transmits the data to an specific client
  15.         /// </summary>
  16.         /// <param name="buffer">Memory buffer</param>
  17.         /// <param name="Index">Clientindex</param>
  18.         public static void ProcessData(byte[] buffer, int Index)
  19.         {
  20.             PacketReader reader = new PacketReader(buffer, buffer.Length);
  21.             writer = new PacketWriter();
  22.             ushort psize = reader.Read<ushort>();
  23.             ushort opcode = reader.Read<ushort>();
  24.             reader.ModifyIndex(2);
  25.  
  26.             switch (opcode)
  27.             {
  28.                 case CLIENT_OPCODES.LOGIN_CLIENT_KEEP_ALIVE:        //avoids a disconnect
  29.                 case CLIENT_OPCODES.LOGIN_CLIENT_ACCEPT_HANDSHAKE:
  30.                     break;
  31.                 case SERVER_OPCODES.LOGIN_SERVER_HANDSHAKE:
  32.                     break;
  33.                 case CLIENT_OPCODES.LOGIN_CLIENT_LOGIN:
  34.                     On_2001(buffer, Index);
  35.                     break;
  36.                 case CLIENT_OPCODES.LOGIN_CLIENT_GAMELOGIN:
  37.                     On_6103(buffer, Index);
  38.                     break;
  39.                 case CLIENT_OPCODES.LOGIN_CLIENT_LOGINACCESS:
  40.                     On_7007(buffer, Index);
  41.                     break;
  42.                 case CLIENT_OPCODES.LOGIN_CLIENT_CHARSELECTACCEPT:
  43.                     On_7001(buffer, Index);
  44.                     break;
  45.             }
  46.  
  47.         }
  48.  
  49.         private static void On_2001(byte[] Packet, int Index_)
  50.         {
  51.             if (convert.HexToString(convert.BytesToHex(Packet).Substring(16)).Contains("SR_Client"))
  52.             {
  53.                 //0E00 0120 0000 0B004167656E7453657276657200
  54.                 writer.SetOpcode(CLIENT_OPCODES.LOGIN_CLIENT_LOGIN);
  55.                 byte[] bArray = convert.ToByteArray("4167656E74536572766572");
  56.  
  57.  
  58.                 writer.Append<ushort>((ushort)bArray.Length);
  59.                 writer.AppendArray<byte>(bArray, bArray.Length);
  60.                 writer.Append<byte>(0);
  61.  
  62.                 ServerSocket.Send(writer.getWorkspace(), Index_);
  63.             }
  64.         }
  65.         //GameServer Login
  66.         private static void On_6103(byte[] Packet, int Index_)
  67.         {
  68.             //2300 0361 xxxx 660100000A007375636B6D796431636B0A00736F7565726C6174343204000000000000
  69.             int userLen = int.Parse(convert.Inverse(convert.BytesToHex(Packet).Substring(20, 4)), NumberStyles.HexNumber);
  70.             string user = convert.HexToString(convert.BytesToHex(Packet).Substring(24, userLen * 2));
  71.  
  72.             int pwLen = int.Parse(convert.Inverse(convert.BytesToHex(Packet).Substring((24 + (userLen * 2)), 4)), NumberStyles.HexNumber);
  73.             string pass = convert.HexToString(convert.BytesToHex(Packet).Substring((28 + (userLen * 2)), pwLen * 2));
  74.  
  75.             string dbuser = Database.GetString("SELECT id FROM user WHERE id='" + user + "'");//, "id");
  76.             string dbpass = Database.GetString("SELECT password FROM user WHERE id='" + user + "'");//, "password");
  77.  
  78.             if ((dbuser.ToLower() == user.ToLower()) && (dbpass == pass))
  79.             {
  80.                 writer.SetOpcode(0x600D);
  81.                 writer.Append<ushort>(0x0101);
  82.                 writer.Append<byte>(0);
  83.                 writer.Append<ushort>(0x2005);
  84.                 ServerSocket.Send(writer.getWorkspace(), Index_);
  85.  
  86.                 writer.SetOpcode(0x600D);
  87.                 writer.Append<ushort>(0x0100);
  88.                 writer.Append<ushort>(0x0100);
  89.                 writer.Append<uint>(0x0005088F);
  90.                 writer.Append<ushort>(0);
  91.                 writer.Append<byte>(0x02);
  92.                 ServerSocket.Send(writer.getWorkspace(), Index_);
  93.  
  94.                 writer.SetOpcode(0x600D);
  95.                 writer.Append<ushort>(0x0101);
  96.                 writer.Append<byte>(0);
  97.                 writer.Append<ushort>(0x6005);
  98.                 ServerSocket.Send(writer.getWorkspace(), Index_);
  99.  
  100.                 writer.SetOpcode(0x600D);
  101.                 writer.Append<ushort>(0x0300);
  102.                 writer.Append<ushort>(0x0200);
  103.                 writer.Append<ushort>(0x0200);
  104.                 ServerSocket.Send(writer.getWorkspace(), Index_);
  105.  
  106.                 writer.SetOpcode(0xA103);
  107.                 writer.Append<byte>(01);
  108.                 ServerSocket.Send(writer.getWorkspace(), Index_);
  109.             }
  110.         }
  111.  
  112.         private static void On_7007(byte[] Packet, int Index_)
  113.         {
  114.             if (Packet[6] == 0x02)
  115.             {
  116.                 /*writer.SetOpcode(0xB007);
  117.                 writer.Append<byte>(02);
  118.                 writer.Append<ushort>(0x0001);
  119.                 ServerSocket.Send(writer.getWorkspace(), Index_);*/
  120.                 byte[] b = convert.ToByteArray("520007B000000201016D3A0000030046497933512F694C06000000005401640000000C290000B61500000002000208D42E0000371C2F000037F82E0000375A32000037402F000037882F000037622B0000378E2800000000");
  121.                 ServerSocket.Send(b, Index_);
  122.             }
  123.         }
  124.  
  125.         private static void On_7001(byte[] Packet, int Index_)
  126.         {
  127.             byte[] b = convert.ToByteArray("010001B0000001");
  128.             ServerSocket.Send(b, Index_);
  129.         }
  130.  
  131.     }
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement