Difference between revisions of "Poseidon"

From OpenKore Wiki
Jump to navigation Jump to search
m (added grf tools link)
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
'''Poseidon''' is a counter-measure for HackShield.
 
'''Poseidon''' is a counter-measure for HackShield.
  
With Poseidon, 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.
 +
: Servers like bRO, cRO and kRO 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 ==
 +
[[File:Poseidon_workflow.jpg]]
 +
 
  
 
= Configuration =
 
= Configuration =
Line 34: Line 53:
 
= Running =
 
= Running =
  
# Start 'start-poseidon.exe' or 'src/Poseidon/poseidon.pl', wait for message 'Poseidon initialized'.
+
# Start 'src/Poseidon/poseidon.pl' or 'start-poseidon.exe', wait for message 'Poseidon initialized'.
 
# Start 'ragexe 1rag1 /account:poseidon.xml'.
 
# Start 'ragexe 1rag1 /account:poseidon.xml'.
 
# 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.
Line 49: Line 68:
 
; QUERY_SERVER_HOST, QUERY_SERVER_PORT
 
; QUERY_SERVER_HOST, QUERY_SERVER_PORT
 
: Host/port where poseidon clients will connect (OpenKore)
 
: Host/port where poseidon clients will connect (OpenKore)
 +
 +
=== Command-line arguments ===
 +
 +
; --file=<string>
 +
: Tells poseidon where to find poseidon.txt
 +
: For instance: <code>./poseidon.pl --file=bar/foo/myfile.txt</code>
 +
 +
; --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: <code>./poseidon.pl --server_type=bRO_2016-11-08a</code>
 +
 +
; --debug=<boolean>
 +
: Interesting for developers, poseidon will now output some extra info
 +
 +
 +
* Notes
 +
** You can use any combination of those
 +
** If you provide <code>ragnarokserver_ip</code>, <code>ragnarokserver_port</code>, <code>queryserver_ip</code>, <code>queryserver_port</code> and <code>server_type</code>, no file will be loaded.
 +
** If neither <code>file</code> nor all the necessary command line arguments are given, poseidon will default to the default behavior of trying to load <code>../../control/poseidon.txt</code>, <code>./control/poseidon.txt</code>, or <code>./poseidon.txt</code> -- in that order.
 +
** Command line arguments have priority over the configuration file. For instance, if you use <code>--ragnarokserver_ip=<address></code>, the Ragnarok Server will be hosted at that address, not the one in the configuration file.
 +
** This feature is only available after PR [https://github.com/OpenKore/openkore/pull/1273 #1273] (15 Oct 2017)
  
 
== Poseidon client (OpenKore) ==
 
== Poseidon client (OpenKore) ==
Line 57: Line 109:
  
 
== Notes ==
 
== Notes ==
* You can use one Poseidon for many bots, but GMs can possibly detect that.
+
* You can use one Poseidon for many bots (not in bRO), but GMs can possibly detect that.
 +
* If game client protection detects OpenKore binaries, run Poseidon without binaries (install Perl) or on another (maybe virtual) machine.

Revision as of 17:28, 8 January 2018

Poseidon is a counter-measure for 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 bRO, cRO and kRO 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

Poseidon workflow.jpg


Configuration

Ragnarok Client (Ragexe)

  1. Extract 'clientinfo.xml' from you ragnarok client data files (use GRFTool [1]), rename it to 'poseidon.xml' and place in 'data' directory.
  2. Open it and change 'address' to your Poseidon server address ('127.0.0.1' or 'localhost' for same computer). Change 'port' to 6900. (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.

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>
		<address>127.0.0.1</address>
		<port>6900</port>
		<version>1</version>
		<registrationweb>http://rofan.ru/</registrationweb>
	</connection>
</clientinfo>

OpenKore

Make sure your server connection settings have 'gameGuard <number>'.

Running

  1. Start 'src/Poseidon/poseidon.pl' or 'start-poseidon.exe', wait for message 'Poseidon initialized'.
  2. Start 'ragexe 1rag1 /account:poseidon.xml'.
  3. Select Poseidon service (if prompted), input any login and password, select any character.
  4. 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).
  5. 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 and server_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

  • You can use one Poseidon for many bots (not in bRO), but GMs can possibly detect that.
  • If game client protection detects OpenKore binaries, run Poseidon without binaries (install Perl) or on another (maybe virtual) machine.