• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

OTIPChanger - change your Tibia 12 web services real quick

Nekiro

Legendary OT User
TFS Developer
Joined
Sep 7, 2015
Messages
2,677
Solutions
126
Reaction score
2,112
Hey, are you tired of using notepad++ to edit your client 12 web services? Yeah, me too.
That's why I developed this tool to save you some time and effort.

It's simple, load your client, write your desired urls and you are done.

You'll need .NET Core to launch this app though.

Repository:

Releases:

Hope you like it.
 
Last edited:
It seems like a very usefull tool but I cant get it to work. Its not changinge anything. It could be me being stupid but Im supposed to just open the program, then in "path to client" I put the path to my exe, then the first line is the 17 letters ip, then service url is the 19 letter one?
 
paint.png


It seems like a very usefull tool but I cant get it to work. Its not changinge anything. It could be me being stupid but Im supposed to just open the program, then in "path to client" I put the path to my exe, then the first line is the 17 letters ip, then service url is the 19 letter one?

Make sure you use the right path to the client.


Use "http://127.0.0.1/login.php" for Login URL & for Service URL
 
paint.png




Make sure you use the right path to the client.


Use "http://127.0.0.1/login.php" for Login URL & for Service URL
I think it might be that it just dont work with 12.81. Im using the correct path + I tried a lot of diffrent login/service urls but it doesnt even update the client when I use the program, but thanks a lot for your time! Any other ideas?
 
12.81 is working fine.

The client path should be "C:\...\packages\Tibia\bin\client.exe"
 
12.81 is working fine.

The client path should be "C:\...\packages\Tibia\bin\client.exe"
Hmm interesting, but I dont have a "Tibia" folder in my C:\ packages

Edit, Im retarded. Thanks a lot bro! Worked like a charm! <3
Post automatically merged:

1640552996682.png
Got this now tho :I
 
Last edited:
This works for 12.85.

Download the client at tibia.com and run the update.

Client path should be "C:\...\packages\Tibia\bin\client.exe"

Use "http://127.0.0.1/login.php" for Login URL & for Service URL
 
Last edited:
I tried to compile it and post .exe, but after compilation it generated few .dll and .exe, not just .exe. I tried to run that .exe with .dll on clean Windows 10. It requested to install NetCore or something. I installed it, but it again requested to install it when I ran .exe.

I implemented functionality of that IP changer in PHP. Now it's just proof of concept. I will put it on my website (ots.me) or make JavaScript version that anyone can download and run in web browser.

PHP code that replace login URL, client URL, RSA key and disable BattlEye warning:
PHP:
<?php

$loginService = 'http://127.0.0.1/login.php';
$clientService = 'http://127.0.0.1/login.php';
$rsa = '9B646903B45B07AC956568D87353BD7165139DD7940703B03E6DD079399661B4A837AA60561D7CCB9452FA0080594909882AB5BCA58A1A1B35F8B1059B72B1212611C6152AD3DBB3CFBEE7ADC142A75D3D75971509C321C5C24A5BD51FD460F01B4E15BEB0DE1930528A5D3F15C1E3CBF5C401D6777E10ACAAB33DBE8D5B7FF5';

$file = file_get_contents('client.exe');

// https://otland.net/threads/disable-battlEye-error-12-20.266831/
$battlEye1 = "\x84\xC0\x74\x04\xC6\x47\x05\x01";
$battlEyeReplacement1 = "\x84\xC0\x90\x90\xC6\x47\x05\x01";
$battlEye2 = "\xC6\x45\xD7\x00\xC6\x45\xCF\x00";
$battlEyeReplacement2 = "\xC6\x45\xD7\x00\xC6\x45\xCF\x00";
$battlEye3 = "\x8D\x8D\x70\xFF\xFF\xFF\x75\x0E";
$battlEyeReplacement3 = "\x8D\x8D\x70\xFF\xFF\xFF\xEB\x0E";

$result = '';
$matches = [];
$lines = explode("\r\n", $file);

foreach ($lines as $line) {
    if(strpos($line, 'loginWebService=') === 0) {
        $oldLoginService = substr($line, strlen('loginWebService='));
        $fillBytes = strlen($oldLoginService) - strlen($loginService);
        $result .= 'loginWebService=' . $loginService . str_repeat("\x20", $fillBytes);

        echo 'LOGIN WEB SERVICE REPLACED' . PHP_EOL;
        echo 'Found: ' . $oldLoginService . PHP_EOL;
        echo 'Replaced with: ' . $loginService . PHP_EOL;
    } elseif(strpos($line, 'clientWebService=') === 0) {
        $oldClientService = substr($line, strlen('clientWebService='));
        $fillBytes = strlen($oldClientService) - strlen($clientService);
        $result .= 'clientWebService=' . $clientService . str_repeat("\x20", $fillBytes);

        echo 'CLIENT WEB SERVICE REPLACED' . PHP_EOL;
        echo 'Found: ' . $oldClientService . PHP_EOL;
        echo 'Replaced with: ' . $clientService . PHP_EOL;
    } elseif(strpos($line, $battlEye1) !== false) {
        $result .= str_replace($battlEye1, $battlEyeReplacement1, $line);

        echo 'BATTLEYE ERROR DISABLED' . PHP_EOL;
    } elseif(strpos($line, $battlEye2) !== false) {
        $result .= str_replace($battlEye2, $battlEyeReplacement2, $line);

        echo 'BATTLEYE ERROR DISABLED' . PHP_EOL;
    } elseif(strpos($line, $battlEye3) !== false) {
        $result .= str_replace($battlEye3, $battlEyeReplacement3, $line);

        echo 'BATTLEYE ERROR DISABLED' . PHP_EOL;
    } elseif (preg_match('/[0-9A-F]{256}/', $line, $matches)) {
        foreach($matches as $possibleRSA) {
            $possibleRsaWithNulls = "\x00" . $possibleRSA . "\x00";
            if (strpos($line, $possibleRsaWithNulls) !== false) {
                $newRsaWithNulls = "\x00" . $rsa . "\x00";
                $line = str_replace($possibleRsaWithNulls, $newRsaWithNulls, $line);

                echo 'RSA KEY REPLACED' . PHP_EOL;
                echo 'Old RSA: ' . $possibleRSA . PHP_EOL;
                echo 'New RSA: ' . $rsa . PHP_EOL;
            }
        }
        $result .= $line;
    } else {
        $result .= $line;
    }
    $result .= "\r\n";
}

file_put_contents('client_ots.exe', $result);
Tested on 12.85.
 
I tried to compile it and post .exe, but after compilation it generated few .dll and .exe, not just .exe. I tried to run that .exe with .dll on clean Windows 10. It requested to install NetCore or something. I installed it, but it again requested to install it when I ran .exe.

I implemented functionality of that IP changer in PHP. Now it's just proof of concept. I will put it on my website (ots.me) or make JavaScript version that anyone can download and run in web browser.

PHP code that replace login URL, client URL, RSA key and disable BattlEye warning:
PHP:
<?php

$loginService = 'http://127.0.0.1/login.php';
$clientService = 'http://127.0.0.1/login.php';
$rsa = '9B646903B45B07AC956568D87353BD7165139DD7940703B03E6DD079399661B4A837AA60561D7CCB9452FA0080594909882AB5BCA58A1A1B35F8B1059B72B1212611C6152AD3DBB3CFBEE7ADC142A75D3D75971509C321C5C24A5BD51FD460F01B4E15BEB0DE1930528A5D3F15C1E3CBF5C401D6777E10ACAAB33DBE8D5B7FF5';

$file = file_get_contents('client.exe');

// https://otland.net/threads/disable-battlEye-error-12-20.266831/
$battlEye1 = "\x84\xC0\x74\x04\xC6\x47\x05\x01";
$battlEyeReplacement1 = "\x84\xC0\x90\x90\xC6\x47\x05\x01";
$battlEye2 = "\xC6\x45\xD7\x00\xC6\x45\xCF\x00";
$battlEyeReplacement2 = "\xC6\x45\xD7\x00\xC6\x45\xCF\x00";
$battlEye3 = "\x8D\x8D\x70\xFF\xFF\xFF\x75\x0E";
$battlEyeReplacement3 = "\x8D\x8D\x70\xFF\xFF\xFF\xEB\x0E";

$result = '';
$matches = [];
$lines = explode("\r\n", $file);

foreach ($lines as $line) {
    if(strpos($line, 'loginWebService=') === 0) {
        $oldLoginService = substr($line, strlen('loginWebService='));
        $fillBytes = strlen($oldLoginService) - strlen($loginService);
        $result .= 'loginWebService=' . $loginService . str_repeat("\x20", $fillBytes);

        echo 'LOGIN WEB SERVICE REPLACED' . PHP_EOL;
        echo 'Found: ' . $oldLoginService . PHP_EOL;
        echo 'Replaced with: ' . $loginService . PHP_EOL;
    } elseif(strpos($line, 'clientWebService=') === 0) {
        $oldClientService = substr($line, strlen('clientWebService='));
        $fillBytes = strlen($oldClientService) - strlen($clientService);
        $result .= 'clientWebService=' . $clientService . str_repeat("\x20", $fillBytes);

        echo 'CLIENT WEB SERVICE REPLACED' . PHP_EOL;
        echo 'Found: ' . $oldClientService . PHP_EOL;
        echo 'Replaced with: ' . $clientService . PHP_EOL;
    } elseif(strpos($line, $battlEye1) !== false) {
        $result .= str_replace($battlEye1, $battlEyeReplacement1, $line);

        echo 'BATTLEYE ERROR DISABLED' . PHP_EOL;
    } elseif(strpos($line, $battlEye2) !== false) {
        $result .= str_replace($battlEye2, $battlEyeReplacement2, $line);

        echo 'BATTLEYE ERROR DISABLED' . PHP_EOL;
    } elseif(strpos($line, $battlEye3) !== false) {
        $result .= str_replace($battlEye3, $battlEyeReplacement3, $line);

        echo 'BATTLEYE ERROR DISABLED' . PHP_EOL;
    } elseif (preg_match('/[0-9A-F]{256}/', $line, $matches)) {
        foreach($matches as $possibleRSA) {
            $possibleRsaWithNulls = "\x00" . $possibleRSA . "\x00";
            if (strpos($line, $possibleRsaWithNulls) !== false) {
                $newRsaWithNulls = "\x00" . $rsa . "\x00";
                $line = str_replace($possibleRsaWithNulls, $newRsaWithNulls, $line);

                echo 'RSA KEY REPLACED' . PHP_EOL;
                echo 'Old RSA: ' . $possibleRSA . PHP_EOL;
                echo 'New RSA: ' . $rsa . PHP_EOL;
            }
        }
        $result .= $line;
    } else {
        $result .= $line;
    }
    $result .= "\r\n";
}

file_put_contents('client_ots.exe', $result);
Tested on 12.85.
msedge_c5xsvn6Tqw.png
 

Attachments

  • OTIPChanger_df9647_2022-01-18.exe
    10.2 MB · Views: 39 · VirusTotal
Last edited:
It will be possible to change other option in client like menage account, disable battle eye etc..?

Edit:
I had problem like this... something wrong?

1642671929699.png
 
Last edited:
This just doesn't work with tibia 12.85.
I've tried several times and IP does not change. I keep logging into the Cipsoft server instead of 127.0.0.1/login.php.
 
Back
Top