GithubHelp home page GithubHelp logo

icesythe7 / openrom Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zhmu/openrom

0.0 1.0 0.0 107 KB

Runes of Magic protocol analysis tools

License: GNU Affero General Public License v3.0

Makefile 0.56% C++ 99.44%

openrom's Introduction

Introduction

This is a collection of tools to analyse the Runes of Magic network protocol; however, the tools are quite generic which means you should be able to use them to analyse different data with minor adjustments.

protocol.xml

COntains the reverse-engineered protocol of Runes of Magic 6.0.5.2579.en - this is by no means complete, but it does provide enough to be able to understand how the game works.

mkdef

Using protocol.xml, capable of generating packet parsing/construction code and Python bindings per packet type.

romdump

Reads a tcpflow-written text output stream or a romproxy log file and decodes the stream using definitions from protocol.xml and optionally a sysname.csv file (see below)

romproxy

A proxy server which 'sits' between the game client and the actual game servers, with the purpose to log all traffic in a custom format which is far easier to process than packet dumps.

License

Everything is licensed using the GNU Affero Generic Public License version 3 - make sure you understand it before using this work. Furthermore, ensure you read and understand the terms and conditions of Runes of Magic before applying any of these tools to the actual game itself.

Building

You'll need libxml2's development package (libxml2-dev on Debian-based distributions) to build this. It's only been tested on Linux-based hosts.

Creating sysname.csv for use with romdump

You will need https://github.com/zhmu/romdb; clone it to ~/romdb and:

$ cd ~/romdb/tools/fdbtool
$ make
$ cd /tmp
$ (path to)fdbtool (path to)data.fdb
$ cd ~/romdb/scripts
$ cp lib/config.sample.py lib/config.py
$ cd /tmp/data
$ $EDITOR ~/romdb/scripts/stringdb2csv.py

And put the following in there:

#!/usr/bin/python3

import sys, os
sys.path.append(os.path.join(os.path.dirname(__file__), 'lib'))
import romdb

if len(sys.argv) != 2:
	print("usage: %s string_....db" % sys.argv[0])
	sys.exit(0)

fname = sys.argv[1]
strings = romdb.read_stringdb(fname)
for k, v in strings.items():
	if k.startswith('Sys'):
		print("%s,%s" % (k, v))

Then generate sysname.csv by:

$ chmod +x ~/romdb/scripts/stringdb2csv.py
$ ~/romdb/scripts/stringdb2csv.py string_eneu.db > sysname.csv

Configuring the game client

The official Runes of Magic client, appropriately named Client.exe, has several configuration options which are useful when performing analysis.

Using a different server

You can alter the IP address of the server to use by editing 'runedev.ini' in the game folder and setting the following options:

[Server]
IP=(your IP address here)
Port=21002
RunewakerInsideTestServer=1
DisplayMaintainMode=1

[Debug]
SkipVersionCheck=1

Skipping the version check

Create a shortcut to Client.exe with NoCheckVersion as argument

openrom's People

Contributors

zhmu avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.