Poseidon: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
Line 1: | Line 1: | ||
'''Poseidon''' is a counter-measure for HackShield. | '''Poseidon''' is a counter-measure for nProtect GameGuard (HackShield). | ||
: Original game client (with HackShield) connected to Poseidon server provides data for OpenKore connected to real game server. | : Original game client (with HackShield) connected to Poseidon server provides data for OpenKore connected to real game server. | ||
: The RO server sends a packet to the client, and the client must response with an appropriate packet. | : The RO server sends a packet to the client, and the client must response with an appropriate packet. | ||
: Servers like | : Servers like cRO, kRO, twRO and vRO use GameGuard. | ||
= Overview = | = Overview = | ||
Line 26: | Line 26: | ||
== Ragnarok Client (Ragexe) == | == Ragnarok Client (Ragexe) == | ||
# Extract | # Extract <code>clientinfo.xml</code> from you ragnarok client data.grf file (use GRF Editor [https://www.mediafire.com/file/aflylbhblrzpz0h/GRF_Editor_v1.8.4.1.zip/file]), rename it to <code>poseidon.xml</code> and place in <code>ragnarok/data</code> directory. | ||
# Open it and change | # Open it and change <code>address</code> to your Poseidon server address (<code>127.0.0.1</code> or <code>localhost</code> for same computer). Change <code>port</code> to <code>6900</code>. ''(These magic numbers are constants from 'src/Poseidon/poseidon.pl' source.)'' Change 'display' to anything you want to distinguish between Poseidon connection and your original. | ||
# If your clientinfo.xml has the 'domain' tag, change it to <code>ip:port</code> (<code>ex: 127.0.0.1:6900</code>) | |||
Example of edited clientinfo: | Example of edited clientinfo: | ||
Line 40: | Line 41: | ||
<display>Poseidon</display> | <display>Poseidon</display> | ||
<desc>None</desc> | <desc>None</desc> | ||
<domain>127.0.0.1:6900</domain> | |||
<address>127.0.0.1</address> | <address>127.0.0.1</address> | ||
<port>6900</port> | <port>6900</port> | ||
<version>1</version> | <version>1</version> | ||
<langtype>4</langtype> | |||
<registrationweb>http://rofan.ru/</registrationweb> | <registrationweb>http://rofan.ru/</registrationweb> | ||
</connection> | </connection> | ||
Line 49: | Line 52: | ||
== OpenKore == | == OpenKore == | ||
Make sure your server connection settings have | # Make sure your server connection settings have <code>gameGuard <number></code> (check <code>tables/servers.txt</code> and <code>control/config.txt</code>). | ||
# Go to <code>control/poseidon.txt</code> and change <code>server_type=Default</code> to your server. (list available at <code>src/Poseidon/servertypes.txt</code>) | |||
= Running = | = Running = | ||
# Start | # Start <code>src/Poseidon/poseidon.pl</code> or <code>start-poseidon.exe</code>, wait for message 'Poseidon initialized'. | ||
# Start | # Start the ragexe and make it load our custom poseidon.xml: | ||
## Regular client (twRO, cRO): <code>ragexe.exe 1rag1 /account:poseidon.xml</code> | |||
## jRO client: <code>Ragexe.exe 1rag1 -w -u:12345RO -p:be407f3a32e47d2b5cef6acb8f14724146a720cd /account:poseidon.xml</code> | |||
## kRO client: <code>Ragexe.exe 1rag1 -t:DummyToken DummyUser G Ragnarok /account:poseidon.xml</code> | |||
## kRO Zero client: <code>Ragexe.exe 1rag1 -t:DummyToken DummyUser G RagnarokZero /account:poseidon.xml</code> | |||
## vRO client: <code>Ragexe.exe 1rag1 User=DummyUser Token=DummyToken BToken=DummyBToken /account:poseidon.xml</code> | |||
# Select Poseidon service (if prompted), input any login and password, select any character. | # Select Poseidon service (if prompted), input any login and password, select any character. | ||
# You should appear in Novice Training Center and be able to see and talk with NPC (you will not be able to walk or do anything other than talking with NPC). | # You should appear in Novice Training Center and be able to see and talk with NPC (you will not be able to walk or do anything other than talking with NPC). | ||
Line 109: | Line 117: | ||
== Notes == | == Notes == | ||
* If game client protection detects OpenKore binaries, run Poseidon without binaries (install Perl) or on another (maybe virtual) machine. | * If game client protection detects OpenKore binaries, run Poseidon without binaries (install Perl) or on another (maybe virtual) machine. |
Revision as of 17:05, 12 August 2021
Poseidon is a counter-measure for nProtect GameGuard (HackShield).
- Original game client (with HackShield) connected to Poseidon server provides data for OpenKore connected to real game server.
- The RO server sends a packet to the client, and the client must response with an appropriate packet.
- Servers like cRO, kRO, twRO and vRO use GameGuard.
Overview
- Poseidon works like this
- 1. Poseidon sets up a fake RO server (let us call it PoseidonRO).
- 2. Poseidon sets up another server socket for communication with OpenKore.
- 3. OpenKore connects to Poseidon.
- 4. RO client connects to PoseidonRO.
- 5. Real RO server sends GameGuard query to OpenKore.
- 6. OpenKore sends GameGuard query to Poseidon.
- 7. Poseidon sends GameGuard query to RO client.
- 8. RO client sends a reply.
- 9. Poseidon sends reply to OpenKore.
- 10. OpenKore sends reply to real RO server.
Fluxogram
Configuration
Ragnarok Client (Ragexe)
- Extract
clientinfo.xml
from you ragnarok client data.grf file (use GRF Editor [1]), rename it toposeidon.xml
and place inragnarok/data
directory. - Open it and change
address
to your Poseidon server address (127.0.0.1
orlocalhost
for same computer). Changeport
to6900
. (These magic numbers are constants from 'src/Poseidon/poseidon.pl' source.) Change 'display' to anything you want to distinguish between Poseidon connection and your original. - If your clientinfo.xml has the 'domain' tag, change it to
ip:port
(ex: 127.0.0.1:6900
)
Example of edited clientinfo:
<?xml version="1.0" encoding="euc-kr" ?> <clientinfo> <servicetype>russia</servicetype> <servertype>primary</servertype> <extendedslot></extendedslot> <connection> <display>Poseidon</display> <desc>None</desc> <domain>127.0.0.1:6900</domain> <address>127.0.0.1</address> <port>6900</port> <version>1</version> <langtype>4</langtype> <registrationweb>http://rofan.ru/</registrationweb> </connection> </clientinfo>
OpenKore
- Make sure your server connection settings have
gameGuard <number>
(checktables/servers.txt
andcontrol/config.txt
). - Go to
control/poseidon.txt
and changeserver_type=Default
to your server. (list available atsrc/Poseidon/servertypes.txt
)
Running
- Start
src/Poseidon/poseidon.pl
orstart-poseidon.exe
, wait for message 'Poseidon initialized'. - Start the ragexe and make it load our custom poseidon.xml:
- Regular client (twRO, cRO):
ragexe.exe 1rag1 /account:poseidon.xml
- jRO client:
Ragexe.exe 1rag1 -w -u:12345RO -p:be407f3a32e47d2b5cef6acb8f14724146a720cd /account:poseidon.xml
- kRO client:
Ragexe.exe 1rag1 -t:DummyToken DummyUser G Ragnarok /account:poseidon.xml
- kRO Zero client:
Ragexe.exe 1rag1 -t:DummyToken DummyUser G RagnarokZero /account:poseidon.xml
- vRO client:
Ragexe.exe 1rag1 User=DummyUser Token=DummyToken BToken=DummyBToken /account:poseidon.xml
- Regular client (twRO, cRO):
- Select Poseidon service (if prompted), input any login and password, select any character.
- You should appear in Novice Training Center and be able to see and talk with NPC (you will not be able to walk or do anything other than talking with NPC).
- Start OpenKore.
Advanced configuration
Poseidon server
Constants in poseidon.pl:
- RAGNAROK_SERVER_HOST, RAGNAROK_SERVER_PORT
- Host/port where ragnarok client will connect (Ragexe)
- QUERY_SERVER_HOST, QUERY_SERVER_PORT
- Host/port where poseidon clients will connect (OpenKore)
Command-line arguments
- --file=<string>
- Tells poseidon where to find poseidon.txt
- For instance:
./poseidon.pl --file=bar/foo/myfile.txt
- --ragnarokserver_ip=<address>
- Starts the Ragnarok Server (where the Ragnarok client will connect) at given address
- --ragnarokserver_port=<port>
- Starts the Ragnarok Server (where the Ragnarok client will connect) at given port
- --queryserver_ip=<address>
- Starts the Query Server (where openkore client will connect) at given address
- --queryserver_port=<address>
- Starts the Query Server (where openkore client will connect) at given port
- --server_type=<string>
- Selects a server type (see src/Poseidon/servertypes.txt for available servertypes)
- For instance:
./poseidon.pl --server_type=bRO_2016-11-08a
- --debug=<boolean>
- Interesting for developers, poseidon will now output some extra info
- Notes
- You can use any combination of those
- If you provide
ragnarokserver_ip
,ragnarokserver_port
,queryserver_ip
,queryserver_port
andserver_type
, no file will be loaded. - If neither
file
nor all the necessary command line arguments are given, poseidon will default to the default behavior of trying to load../../control/poseidon.txt
,./control/poseidon.txt
, or./poseidon.txt
-- in that order. - Command line arguments have priority over the configuration file. For instance, if you use
--ragnarokserver_ip=<address>
, the Ragnarok Server will be hosted at that address, not the one in the configuration file. - This feature is only available after PR #1273 (15 Oct 2017)
Poseidon client (OpenKore)
Options in config.txt:
- poseidonServer, poseidonPort
- Host/port of Poseidon server (QUERY_SERVER connection is Poseidon)
Notes
- If game client protection detects OpenKore binaries, run Poseidon without binaries (install Perl) or on another (maybe virtual) machine.