- Joined
- Aug 14, 2009
- Messages
- 1,097
- Reaction score
- 135
When the client authenticates with SystemServer, the server knows that the connection is a "client connection" and not a "GM tool connection". So, you can authenticate with SystemServer in the same way as G-OP, but from the client:
Packet ID 0x1454:
Here, you will either receive packet 0x1455 in response or get disconnected because of a login failure.
If you've successfully logged in, SystemServer will let GameServer know that you've logged in as a GM, and you'll be able to send GM-only packets.
If you want to replicate the official client's login behavior, when it receives 0x1455 it will:
1. Make you invisible
2. Set your speed to 3
3. Make you invincible ("immortal")
If you didn't notice from above, the packets that G-OP sends are used by the GM client too. For example, this is the teleport character packet (also SystemServer):
Packet ID 0x145B:
There are a multitude of ways that you can accomplish the sending of these packets. Perhaps the easiest would be to build a proxy between the server and your client which allows you to send packets to arbitrary connections.
My hope is that if someone does something with this information, that they will make their work open source. It's not a lot of information, but the structures become extremely obvious when you search around for these packet IDs in the server.
Packet ID 0x1454:
Code:
struct SS_GMLogin {
uint8_t passwordLength;
char[passwordLength] password; // NOT null terminated
}
Here, you will either receive packet 0x1455 in response or get disconnected because of a login failure.
If you've successfully logged in, SystemServer will let GameServer know that you've logged in as a GM, and you'll be able to send GM-only packets.
If you want to replicate the official client's login behavior, when it receives 0x1455 it will:
1. Make you invisible
2. Set your speed to 3
3. Make you invincible ("immortal")
If you didn't notice from above, the packets that G-OP sends are used by the GM client too. For example, this is the teleport character packet (also SystemServer):
Packet ID 0x145B:
Code:
struct SS_TeleportChar {
uint8_t passwordLength;
char[passwordLength] password;
string fromCharName; // null terminated
string toCharName; // null terminated
}
There are a multitude of ways that you can accomplish the sending of these packets. Perhaps the easiest would be to build a proxy between the server and your client which allows you to send packets to arbitrary connections.
My hope is that if someone does something with this information, that they will make their work open source. It's not a lot of information, but the structures become extremely obvious when you search around for these packet IDs in the server.