RagnaShield Beta v1.0.8

Free and robust Game Guard!



Introduction

RagnaShield Beta is a free game guard presented to you by RagnaHosting Networks. Its goal is to offer a simple and reliable protection to prevent abuses and cheats client-side. It also offers a way to store hardware information, such as the MAC address, from the players without having to use a launcher. This hardware information can be easily used in your scripts to reward unique players or disallow dual-clienting on certain maps.

It is still in Beta and some features may behave unexpectedly. Please report such issues via the Support Ticket system as soon as possible.



Features - Client-side

Most of the features below can be further customized by requesting the administrator of RagnaHosting to rebuild your protection files. The ones which cannot be changed are the splash image and the IP/host of your clientinfo.xml.

GRF Editor encryption

RagnaShield allows you to encrypt your GRF files' content using GRF Editor's encryption. You should have received a key.grfkey file which can be used directly by GRF Editor to encrypt or decrypt content you do not want players (or other servers) to steal.

Dual clienting

By default, only up to two clients can run simultaneously. This choice is to allow your players to trade between their accounts. This feature can be modified.

Protecting clientinfo.xml

Clientinfo.xml's IP and port fields have been hidden, but you are free to edit any of the other information. This means you will not be able to use this game guard without being part of RagnaHosting.

What about bots?

Blocking bots or other similar tools is not part of RagnaShield's protection. To prevent those, we recommend you use newer clients allowing packet obfuscation; it will block bots better than any features we could add to our game guard. Here are the topics concerning this feature for rAthena and Hercules.

RagnaHosting shared files

By being part of RagnaHosting, you will gain access to free or cheaper custom content for your server. This content is encrypted and will only work on servers using RagnaShield as their protection. If you decide to leave the host however, you will no longer be able to use them.

Third-party protection

This feature is in constant development and there are already a handful of softwares being blocked by the game guard. You can choose whether or not you want to allow tools such as RCX or Autohotkey to run on your server.

This protection now works on software signatures, so more and more softwares will be blocked as RagnaShield gets updated.

Hardware IDs

Every time a player connects to his account, various hardware IDs are retrieved from the computer, such as the MAC address, the CPU’s ID, etc. This information is then sent to the server and stored in the login table. The purpose of this feature is to create a fingerprint of the player's computer capable of ensuring you they will not come back after a hardware ban.

The player's hardware IDs are then compared to the ban list to see how much of a match they are. This setting can be modified from ragnashield.conf with ban_sensitivity.

File protection (including GRFs)

You can protect as many files as you wish within your RO folder or your GRFs. RagnaHosting already provides a default list to prevent no-delay sprites (on your main GRF) along with other common cheats. To customize this list and include your own files or sprites, contact the host administrator with the necessary information.

* This protection currently does not take into account the order in which your files are being loaded. If this becomes necessary, you might want to protect your data.ini as well.

LZMA support

LZMA is a compression method allowing you to significantly reduce the size of your GRF files. The idea of this feature was introduced by Curiosity, for more information visit the following thread on rAthena : slim-down-your-grf.

RagnaHosting uses this compression by default on your GRF files. If you are using GRF Editor, you can use this custom compression by going in Tools > Settings > General > Compression method > Custom compression... and select the cps.dll provided in the thread mentioned above.

* Do not attempt to load the custom cps.dll provided by RagnaShield in GRF Editor, you will crash and may end up having to reinstall the application.



Features – Server-side

Banning system

Knowing when to use which can be a bit confusing at first, however RagnaShield's ban commands are more straightforward because they combine these together nicely. Banning a player bans both their hardware IDs and their account at the same time.

Our custom bans take into account the group id of the GM who is issuing the ban. As such, it is only possible for a GM to ban an account with a lower group id than his own. Admins (group 99) can never be banned. The hardware ban, which is always applied regardless of the group id of the target, can be bypassed if the account's owner has a higher group id.

Configuration file (ragnashield.conf)

The configuration file is found in conf/ragnashield.conf.

Hardware IDs

Hardware IDs are stored on the server side when a player attempts to log in. All the info are also added to the loginlog table.



Ingame @commands

@ragnaban / @ban2 usage: @ragnaban <time> <player_name> {<reason>} ex : @ragnaban 1d "test player" Stole gears.

Similar to @ban, this command does both a regular @ban and a hardware ban. The computer of the player will no longer be able to connect to your server. If the account ban's time is greater than the one given by the command, it will keep the longest one.

When a player's name contains spaces, you must use quotes, otherwise it's not needed. The reason given for the ban is also optional but it is recommended.

@ragnafullban / @fullban usage: @ragnafullban <time> <player_name> {<reason>} ex : @ragnafullban 1d "test player" Stole gears.

This is the same as the previous command, except it will also ban all the accounts related to the player. It bans the accounts based on the last person who logged into them.

@ragnaunban / @unban2 usage: @ragnaunban <player_name> ex : @ragnaunban "test player"

This command removes the hardware ban of a player as well as removing the account ban of the player mentioned.

@ragnafullunban / @fullunban usage: @ragnafullunban <player_name> ex : @ragnafullunban "test player"

Same as the previous ban, except it unbans all the accounts connected with the player (using the hardware IDs of the person who logged into the account last).

@execute <system_command> usage: @execute echo Hello world!

Executes a command on the server's VPS. This command allows you to customize server tasks outside of the game. The example command will display "Hello world!" in the map-server console. You could use it to recompile or restart your server, create a backup, etc.

@showmacban usage: @showmacban

Shows the current MAC addresses banned.

@ping {<player_name>} usage: @ping

This command asks the server to ping yourself or another player. The task is put on a background thread and you will have to wait a few seconds to retrieve the ping statistics. To retrieve the pong info, you'll have to type @ping again. Each ping has a hard delay of 10 seconds and the statistics will be erased from your server's VPS after 30 seconds. By default, players cannot use @ping <player_name>. If you want to allow lower GMs to use the latter command, you must give them the @ping2 atcommand permission ("ping2: true" in atcommands.conf).

* The @ping command may not always work. We are currently working on alternatives for this utility command.



Script methods

The following script methods are shortcuts to simplify your custom scripts.


getcharmac({<account ID>/<character ID>/<character name>}) usage: getcharmac(); usage: getcharmac("test_player");

If no argument is specified, the currently attached player's RID will be used to retrieve the MAC address.


gethardwareid(<type> {,<account ID>/<character ID>/<character name>}) usage: .@id$ = gethardwareid(0); usage: .@id$ = gethardwareid(4, "test_player"); Type 0 – MAC address Type 1 – CPU ID Type 2 – Disk drive ID Type 3 – Motherboard ID Type 4 – Unique ID (combines types 1-2-3)

This command retrieves the hardware information from a player.




Troubleshoot and FAQs

How do I add new GMs or edit clientinfo.xml?

Any of this can be done by editing RagnaShield\RagnaShield.xml. Simply send a Thor patch to your players once it's updated.

How do I to edit my client without having to rebuild the game guard everytime?

This information is only valid for testing purposes. On your server's VPS, open conf/RagnaShield.conf and set ragnaban.allow_rogue_clients to "yes". This will allow any client to connect to your server. For the client-side now, RagnaShield doesn't use any clientinfo.xml, so you must provide one and place it in your data folder. You can copy the one from RagnaShield\RagnaShield.xml and fill in the missing information.

You will also need to replace cps.dll with this file. Note that to enable RagnaShield again, you will need to rebuild your game guard files and disable allow_rogue_clients. To do that, send us a Support Ticket (the automated method to update your client is still being made).

Error codes 0xF#####87

These errors are related to RagnaShield failing to initialize properly. Usually this is caused by your client and game guard files being unsynchronized. The game guard only works for your client and none others; this means you cannot modify the client or any other important game guard files.

Connection server failure (WMI)
Error : 0x8007#### (Commonly 0x80070422)

These errors indicate a problem with the operating system. Usually, it's simply because the WMI service has been disabled. To fix that, do the following steps :

Start > Run (or Windows-R) > type in services.msc and press enter.

Scroll down and look for "Windows Management Instrumentation". The status must be set to "Started" and Startup Type set to "Automatic".

If not, right-click on the service and go to properties. Set the startup type to automatic. It is on by default but some third-party optimazing programs may disable this feature.

WMI generic failure

See the solution above. For more assistance, please give us the error via a ticket so we can look more into the issue.

Sorry...! An error has occurred and your client will terminate.

This is the generic crash handler from RagnaShield. It will show up this error instead of the regular Windows app crash. Request the player to show you the ClientCrash.log and look for common errors before asking us. These errors may have nothing to do with RagnaShield, but if you really believe they do then please send us the file and we'll have a look.

Reading and understanding the ClientCrash.log

How do I remove RagnaShield?

Server-side, you will need to

  • Open conf/RagnaShield.conf and set ragnaban.enable to "no".
  • Open conf/RagnaShield.conf and set ragnaban.allow_rogue_clients to "yes".
  • Restart your server.

Client-side, you will need to remove the following files :

  • RagnaShield.dll
  • cps.dll, replace it with the LZMA version (from Curiosity)
  • YourClient.exe, replace it with your own client
  • The RagnaShield folder

If your server is already live, send a Thor patch updating cps.dll and your new client. You will also need to provide a clientinfo.xml which you can base off from RagnaShield.xml by filling up the missing information.

You could also use the Reinstall button to rebuild your VPS and make sure you uncheck the "Install RagnaShield" option.

We would appreciate it if you could provide us with some information or feedback regarding why you wanted to disable RagnaShield (via a Support Ticket).




Changelogs

  • Version 1.0.8
    • Added a custom crash report to help track down further issues and which will quite possibly help you solve other issues. The file is stored in ClientCrash.log
    • Added file version to the game guard to track down further issues.
    • Big update on RS's third-party protection. It is planned to be improved, but newer cheat softwares should have a harder time to work.
    • WMI errors will now show up in hexadecimal, this will be easier to track them down as well.
    • Pressing Ctrl-Del ingame will crash the client and generate a crash log on purpose.
    • Security upgrade regarding macro'ing softwares.
    • Updated third-party definitions and rules.
  • Version 1.0.7
    • Fixed a bug regarding the GRF hashing process; this bug would crash your exe without any warning.
    • The third-party protection module for Windows XP was unable to launch properly, this has been fixed.
    • Improved overall customization :
      • clientinfo.xml is no longer hidden within the game guard. To edit the content, you must open RagnaShield\RagnaShield.xml, then it's just like a regular clientinfo.xml. This was changed to allow admins to add more GM accounts without us having to rebuild your client files. You will notice that the IP fields are protected as well the port fields (so the security is still the same as before).

        The allowed IP tags are "#PRIMARY", "#FILTERED" and "#LOCALHOST". The last one allows you to test your server on a local network.
      • data.ini is no longer embedded within the client. You can edit the content and add as many custom GRFs as you want. The only restriction being the first two entries which are reserved by RagnaShield.
      • The data folder can be read safely without having an impact on our protected sprites (job sprites). This blocks no-delay skills while allowing you to test custom changes (without having to pack your changes in your GRF).
    • Common errors are now displayed in a more friendly manner (replaced some of the 0xF#####87 errors).
    • Introducing a new file signature protection. This fully blocks any unauthorized processes from being executed at the same time as your client.
  • Version 1.0.6
    • Fixed a bug regarding the third-party protection blocking false-positive process.
    • Improved RagnaShield's CPU usage down to almost 0%. The usage was already pretty low, except now it uses Windows' events to detect new process creation. This means it no longer needs to scan your process list at every specific interval of time.
    • Hidden processes are now detected.
  • Version 1.0.4
    • Fixed packet conflicts between RagnaShield and the packet obfuscation feature. This error would show up in your emulator's map-server console as "unsupported packet : 22 or 26 in length".
    • Updated startup logo.
    • Other minor bug fixes.
  • Version 1.0.1
    • Added shared encryption key.
    • Added GRF file hashing.
    • The RagnaShield logo on startup now closes once the client's main window shows up.
  • Version 1.0.0
    • Initial release.