Register for your free account! | Forgot your password?

You last visited: Today at 21:53

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[C#] Proxy Client Crash

Discussion on [C#] Proxy Client Crash within the SRO Coding Corner forum part of the Silkroad Online category.

Reply
 
Old   #1
 
tarekwiz's Avatar
 
elite*gold: 0
Join Date: Apr 2012
Posts: 26
Received Thanks: 7
Question [C#] Proxy Client Crash

hello , my name is Tarek and im new to Silkroad Programming
I made a simple proxy (Silkroad Security API with some of my code and some of SRProxy API)
what i basically did is I Made a proxy between me and sever and then i passed Packets
What i need help with is whenever i login and choose char i get crash
i have tried many things but never worked here is my code , Hope anybody could tell my why i get this random crash
Oh and i found out that the last packet OPCode was 0x2114
PHP Code:
        const byte SRLocal 18//18=iSRO,40=rSRO
        
const int SRVersion 416;         

        private static 
bool mClientConnected;
        public static 
bool ClientConnected
        
{
            
get { return mClientConnected; }
        }

        private static 
ushort mLocalPort;
        private static 
string mGatewayIP;

        private static 
Client mClientSocket;
        private static 
Server mGatewaySocket;
        private static 
Server mAgentSocket;
        private static 
string agentServerIP;
        private static 
ushort agentServerPort;
        private static 
bool doAgentServerConnect;
        private static 
bool isConnectedToAgentServer;

        public static 
void Start(ushort localPortstring gatewayIP)
        {
            
//Store parameters
            
mLocalPort localPort;
            
mGatewayIP gatewayIP;

            
//Create ClientSocket instance and link the Events
            
mClientSocket = new Client();
            
mClientSocket.Connected += new Client.ConnectedEventHandler(ClientSocket_Connected);
            
mClientSocket.Disconnected += new Client.DisconnectedEventHandler(ClientSocket_Disconnected);
            
mClientSocket.PacketReceived += new Client.PacketReceivedEventHandler(ClientSocket_PacketReceived);

            
//Listen for Client        
            
mClientSocket.Listen(localPort);

            
//Create GatewayServer instance and link the Events
            
mGatewaySocket = new Server();
            
mGatewaySocket.Connected += new Server.ConnectedEventHandler(GatewaySocket_Connected);
            
mGatewaySocket.Disconnected += new Server.DisconnectedEventHandler(GatewaySocket_Disconnected);
            
mGatewaySocket.Kicked += new Server.KickedEventHandler(GatewaySocket_Kicked);
            
mGatewaySocket.PacketReceived += new Server.PacketReceivedEventHandler(GatewaySocket_PacketReceived);

            
//Create AgentSocket instance and link the Events
            
mAgentSocket = new Server();
            
mAgentSocket.Connected += new Server.ConnectedEventHandler(AgentSocket_Connected);
            
mAgentSocket.Disconnected += new Server.DisconnectedEventHandler(AgentSocket_Disconnected);
            
mAgentSocket.Kicked += new Server.KickedEventHandler(AgentSocket_Kicked);
            
mAgentSocket.PacketReceived += new Server.PacketReceivedEventHandler(AgentSocket_PacketReceived);
        }

        
#region ClientSocket EventHandlers

        
private static void ClientSocket_PacketReceived(Packet packet)
        {
            
Console.WriteLine("C->P:" packet.Opcode.ToString("X4"/*+ " Data:" + packet.ToString()*/);

            
//------>>> SEND TO LOGICAL PACKET HANDLER for ClientPackets
            //Bot.PacketHandler.HandleClientPacket(packet);

            
if (isConnectedToAgentServer)
            {
                if (
packet.Opcode == 0x6100)
                {
                    return;
                }
                else if (
packet.Opcode == 0xB007)
                {
                    
Login.HandleCharList(packet);
                }
                
mAgentSocket.Send(packet);
            }
            else
            {
                
mGatewaySocket.Send(packet);
            }
        }

        private static 
void ClientSocket_Disconnected()
        {
            
//Secures reconnect for Client
            
mClientConnected false;
            if (
isConnectedToAgentServer)
            {
                
isConnectedToAgentServer false;
                
doAgentServerConnect false;
                
mAgentSocket.Disconnect();
            }
            else
            {
                
mGatewaySocket.Disconnect();
            }
        }

        private static 
void ClientSocket_Connected()
        {
            
//Connects the Proxy to the right Server.
            
mClientConnected true;
            if (
doAgentServerConnect)
            {
                
mAgentSocket.Connect(agentServerIPagentServerPort);
                
mGatewaySocket.Disconnect();
            }
            else
            {
                
mGatewaySocket.Connect(mGatewayIP15779);
            }

        }

        
#endregion

        #region GatewaySocket EventHandlers

        /// <summary>
        /// Switches the Gatewayserver packets to the Client
        /// </summary>
        /// <param name="packet"></param>
        
private static void GatewaySocket_PacketReceived(Packet packet)
        {
            
Console.WriteLine("S->P:" packet.Opcode.ToString("X4") + " Data:" packet.ToString());

            
#region Client/Clientless Support

            //Clientless
            
if (!mClientConnected)
            {
                
//Request Patches
                
if (packet.Opcode == 0x2001)
                {
                    
//Generate the Patchverification
                    
Packet response = new Packet(0x6100true);
                    
response.WriteByte(SRLocal);
                    
response.WriteAscii("SR_Client"); //ServiceName
                    
response.WriteUInt(SRVersion);                  

                    
mGatewaySocket.Send(response);
                }

                
//Request the Serverlist.
                
if (packet.Opcode == 0xA100)
                {
                    
byte errorCode packet.ReadByte();
                    if (
errorCode == 1//Success
                    
{
                        
Packet response = new Packet(0x6101true);
                        
mGatewaySocket.Send(response);
                    }
                    else
                    {
                        
Console.WriteLine("There is an update or you are using an invalid silkroad version.");
                    }
                }
                
//Reconnect to AgentServer on successfull login.
                
if (packet.Opcode == 0xA102)
                {
                    
byte result packet.ReadByte();
                    if (
result == 1)
                    {
                        
uint sessionID packet.ReadUInt();
                        
agentServerIP packet.ReadAscii();
                        
agentServerPort packet.ReadUShort();
                        
//doAgentServerConnect = true;                        

                        
mGatewaySocket.Disconnect();
                        
mAgentSocket.Connect(agentServerIPagentServerPort);
                    }
                }
            }
            else 
//Client
            
{
                
//Redirect the Client
                
if (packet.Opcode == 0xA102)
                {
                    
byte result packet.ReadByte();
                    if (
result == 1)
                    {
                        
uint sessionID packet.ReadUInt();
                        
agentServerIP packet.ReadAscii();
                        
agentServerPort packet.ReadUShort();
                        
doAgentServerConnect true;

                        
//Create fake response for Client to redirect to localIP/localPort
                        
Packet response = new Packet(0xA102true);
                        
response.WriteByte(result);
                        
response.WriteUInt(sessionID);
                        
response.WriteAscii("127.0.0.1");
                        
response.WriteUShort(mLocalPort);
                        
                        
//Override the orginal packet with the fake.
                        
packet response;
                    }
                }
            }

            
#endregion

            //------>>> SEND TO LOGICAL PACKET HANDLER FOR GatewayPackets
            //Bot.PacketHandler.HandleGatewayPacket(packet);

            
mClientSocket.Send(packet);
        }

        private static 
void GatewaySocket_Kicked()
        {
            
Console.WriteLine("GatewaySocket_Kicked");
            
mGatewaySocket.Disconnect();
        }

        private static 
void GatewaySocket_Disconnected()
        {
            
Console.WriteLine("GatewaySocket_Disconnected");
        }

        private static 
void GatewaySocket_Connected(string ipushort port)
        {
            
Console.WriteLine("GatewaySocket connected to " ip ":" port);
        }

        
#endregion

        #region AgentSocket EventHandlers

        /// <summary>
        /// Switches the Agentserver packets to the Client
        /// </summary>
        /// <param name="packet"></param>
        
private static void AgentSocket_PacketReceived(Packet packet)
        {
            
Console.WriteLine("S->P:" packet.Opcode.ToString("X4"/*+ " Data:" + packet.ToString()*/);

            
mClientSocket.Send(packet);
        }

        private static 
void AgentSocket_Kicked()
        {
            
//When logging out.
            
isConnectedToAgentServer false;
            
doAgentServerConnect false;
            
mAgentSocket.Disconnect();
        }

        private static 
void AgentSocket_Disconnected()
        {
            
Console.WriteLine("AgentSocket_Disconnected");
        }

        private static 
void AgentSocket_Connected(string ipushort port)
        {
            
isConnectedToAgentServer true;
            
Console.WriteLine("AgentSocket connected to " ip ":" port);
        }

        
#endregion

        
public static void PerformClientless()
        {
            
mClientConnected false;
            
mGatewaySocket.Connect("212.24.57.34"15779);
        }
        public static 
void SendToServer(Packet packet)
        {
            
mGatewaySocket.Send(packet);
        } 
Thanks Indeed
tarekwiz is offline  
Old 07/19/2013, 14:55   #2
 
tarekwiz's Avatar
 
elite*gold: 0
Join Date: Apr 2012
Posts: 26
Received Thanks: 7
Fixed
tarekwiz is offline  
Old 08/26/2013, 13:48   #3
 
elite*gold: 0
Join Date: Mar 2009
Posts: 21
Received Thanks: 4
say how you did then
egyviper is offline  
Old 08/26/2013, 19:17   #4
 
tarekwiz's Avatar
 
elite*gold: 0
Join Date: Apr 2012
Posts: 26
Received Thanks: 7
ill make a tutorial soon
tarekwiz is offline  
Old 11/12/2013, 18:42   #5
 
elite*gold: 0
Join Date: Nov 2013
Posts: 168
Received Thanks: 117
good luck
Skullsoil is offline  
Reply


Similar Threads Similar Threads
Client Crash
05/28/2013 - Flyff Private Server - 9 Replies
Guten Tag, Ich habe da ein Problem und zwar, wenn man die Gildenbank aufrufen will crash sofort der Client. Hat jemand eine Ahnung woran es liegen könnte?
CHARLES PROXY AMF TAB for SOUL crash..?
12/24/2012 - Facebook - 1 Replies
who knows how to edit AMF tab? can someone help me find that "AMF tab"
client crash
12/18/2011 - Dekaron - 9 Replies
hello im looking for help cux i cant do anything to work this out... soo i got all the new xingcode folder and the crc 1.54 bypass but when i log and try to change the server my client crash this is when im creating the CRC folder.. to launch the game im using global_unpacked_50.9.6 cux if i use the normal Dekaron it doesnt launch
Client crash...
05/21/2011 - CO2 Private Server - 2 Replies
@NVM REQUEST CLOSE/DELETE!



All times are GMT +1. The time now is 21:54.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.