OpenKore / openkore

A free/open source client and automation tool for Ragnarok Online
http://openkore.com
Other
1.29k stars 1.05k forks source link

tRO Mega Thread - All tRO issues here only #221

Closed aecuto closed 7 years ago

aecuto commented 8 years ago

how can i fix this problem??

today my server has update new EAC, my openkore can login to map server but after 1-3 second my openkore has disconnect from map server, please help me or notice me about this problem.

ps. i'm newbie for programmer :D ps2. i'm from Free bot page....

lordslegolas commented 8 years ago

sorry.

winztr commented 8 years ago

@nuclearist thank you for roadmap. @unknown-item 0_o very nice.

winztr commented 8 years ago

@lordslegolas .. x3 in fixed processing

lordslegolas commented 8 years ago

@winztr Thank you for your help, I'll wait for you.

ghost commented 8 years ago

I Saw so many people in here only asking for help but never try to do anything.

Stop asking for help please , it none sense.

This thread is not made for beggar only begging for help it's disgusting.

Thing we should do is helping each other find a way to fix this problem and focus on x3.

I know at this moment we have no idea how to find a key but don't be a child that always say 1 word "help me" this is embarrassing for thai people.

siamit07 commented 8 years ago

@unknown-item How to use tools packet hamc or guidelines please.

firstsozaa commented 8 years ago

thanks mate really appreciated :) @unknown-item

blackstep commented 8 years ago

@unknown-item thanks

viperball commented 8 years ago

@nuclearist refer to "Now, X3 that have only problem about action packet. when access into map, bot dont moved"

Do you think that it relate to hmac between CLIENT <-1-> OPK <-2-> SERVER ?

Since we can use x0 then I think that <-2-> it should be fine but I think we may have issue on <-1->.

topgamemun commented 8 years ago

@unknown-item thank you.

winztr commented 8 years ago

@tarkungZ right , i think so

dogsmile commented 8 years ago

@Samunprai english pls

forall01 commented 8 years ago

@dogsmile

You don’t have to care about what he said, He just vulgar.

nuclearist commented 8 years ago

@viperball ummm. issue 1 that's problem too. @_@ LOL

inwzaza2548 commented 8 years ago

hello, I give truemany number you give me bot ok ok ok?

Samunprai commented 8 years ago

@nuclearist Could we try like this diagram? CLIENT <--> OPK <--> PSD SERVER <--> ROEXE SERVER to confirm that send&recv packet between OPK <--> SERVER are working properly. If there aren't any problem then we could focus only on CLIENT <--> OPK like @viperball said

If anybody know how to make PSD show the raw packet, HMAC-ed packet and the KEY it would be much easier to figure that out.

mrpond commented 8 years ago

unkitem

worship to @unknown-item, next time EAC update "jer gun sad"..

systeman commented 8 years ago

Just, ignore from discredit message. Thank for everyone try to help problem to botting thailand server.

Suwit2 commented 8 years ago

So sory but this for thai people only. "สำหรับคนไทยครับ ถ้าคุณไม่รู้เรื่องอะไร ได้โปรดอย่าขอความช่วยเหลือใด ๆ เพราะเพจนี้เขาทำขึ้นมาสำหรับ กลุ่มคนที่มีความสนใจหรือ มีพื้นฐานในด้านการเขียนโปรแกรมมมาบ้าง ดังนั้น ได้โปรด ถ้าคุณไม่เก่งด้านนี้ให้รอที่เพจภาษาไทยที่คุณรู้จัก ให้คนที่เขามีความเข้าใจและพออ่านโค๊ตต่าง ๆ ได้ ถามคำถาม เพราะยิ่งคุณมั่วมากๆ คนที่เขาให้ความช่วยเหลือเขาจะรำคราญ ดังนั้นปล่อยให้คนที่เขารู้เรื่องถาม แล้วก็รอ อ่านทำความเข้าใจ ไม่มั่ว พอคนของเพจเราเขาเข้าใจเขาก็จะบอกหรือสอนพวกเราเอง"

lungkeemao commented 8 years ago

@tarkungZ As Thai, I would like to say sorry if they are annoying or disgusting due to too much begging. I think they may get some lesson on what you said. For me, who is just a beginner for programming, trying to put an effort on solving the problems as much as I can. While some Thai are behaving like this , I believe some are trying hard in their part too. Please be calm, go on what you start, and just ignore the disgusting ones :)

monster-x commented 8 years ago

Another comment that may be possible of X3. recvpackets.txt*\ in [src and Tables] seems to be the answer to X3.

They just new update (.exe) ***If you want see to upgrade .exe can be found in the program PEviewer. Causes X3 do not work no response.

observation Log in to access your character to this map, but did not respond. You just recvpackets.txt *\ You need to edit the new set.

These programs can help you (but very old, I'm not sure). 1.Packet Extractor 2.PEEK - Packet Extraction 3.PackerBreaker

Hopefully that will be the answer for you.

ghost commented 8 years ago

Ragexe.exe tRo size is 7mb

So ..>> .PEEK - Packet Extraction by Yommy is what we looking for.

https://github.com/MStr3am/PEEK

systeman commented 8 years ago

@monster-x It's not like that. X3 thailand server doesn't work, because some hmac method feedback control sequence.

lungkeemao commented 8 years ago

@tarkungZ I've tried it, unfortunately, it failed to extract.

chairat001 commented 8 years ago

Fix it Packet Parser: Unknown switch: 086F

beerdrumers commented 8 years ago

I've some issue about EAC message sync.

My ROexe client has not send 0A73 (EAC response) to OPK after OPK received 0A72 (EAC request) from RO server.

This issue made my X3 has DC after connect to map server in 10 secs.

The work around for me is handle 0A72 and send the random EAC key in 0A73 back to the RO server (like X0) but this make ROexe client don't active via mouse click, chat, etc.

And it make ROexe cannot load a new map when OPK send 0092 (map_changed) IMPORTANT!!!

Can anyone found this issue like me? Thank you and best regards :)

Samunprai commented 8 years ago

@beerdrumers For me, the client received 0A7B then OPK tried to responses but it couldn't sent packet through client which cause disconnect.

sumbbb commented 8 years ago

http://www.mediafire.com/download/8eh515bad6c5ife/packets9-17-16.rar

beerdrumers commented 8 years ago

@Samunprai try this. I can solve my issue. It looks pretty good for X3.

MessageTokenizer.pm

sub getMessageIDNew {
    uc join '', unpack '@3H2 @2H2', $_[0]
}

sub readNext {
    my ($self, $type) = @_;
    my $buffer = \$self->{buffer};

    return undef if (length($$buffer) < 2);

    my $switch = getMessageID($$buffer);
    my $rpackets = $self->{rpackets};
    my $size = $rpackets->{$switch}{length};

    my $result;

    #Log::warning sprintf("Packet %s %d %d \n", $switch, $rpackets->{$switch}{length}, $size);

    my $nextMessageMightBeAccountID = $self->{nextMessageMightBeAccountID};
    $self->{nextMessageMightBeAccountID} = undef;

    if ($nextMessageMightBeAccountID) {
        if (length($$buffer) >= 4) {

        $result = substr($$buffer, 0, 4);
        if (unpack("V1",$result) == unpack("V1",$Globals::accountID)) {
                substr($$buffer, 0, 4, '');
                $$type = ACCOUNT_ID;
            } else {
                # Account ID is "hidden" in a packet (0283 is one of them)
                return $self->readNext($type);
            }

        } else {
            $self->{nextMessageMightBeAccountID} = $nextMessageMightBeAccountID;
        }

    } elsif ($size > 1) {
        # Static length message.
        if (length($$buffer) >= $size) {
            $result = substr($$buffer, 0, $size);
            substr($$buffer, 0, $size, '');
            $$type = KNOWN_MESSAGE;
        }

    } elsif (
        defined($size)
        and $size == 0 # old Kore convention
        || $size == -1 # packet extractor v3
    ) {
        # Variable length message.
        if (length($$buffer) >= 4) {
            # check is HMAC or not
            if ($switch eq "00DE" && length($$buffer) >= 4)
            {
                my $newSwitch = getMessageIDNew($$buffer);
                # check is EAC response or not
                if ($newSwitch eq "0A7C")
                {
                    $size = $rpackets->{$newSwitch}{length};
                    my $hmacSize = $size + 26;

                    if ($size > 1) {
                        # Static length message.
                        if (length($$buffer) >= $hmacSize) {
                            # sub string only 0A7C packet
                            $result = substr($$buffer, 2, $size);
                            # but clear buffer with 0A7C HMAC format
                            substr($$buffer, 0, $hmacSize, '');
                            $$type = KNOWN_MESSAGE;
                        }
                    } elsif (
                        defined($size)
                        and $size == 0 # old Kore convention
                        || $size == -1 # packet extractor v3
                    ) {
                        # Variable length message.
                        if (length($$buffer) >= 4) {
                            $size = unpack("v", substr($$buffer, 2, 2));
                            $hmacSize = $size + 26;
                            if (length($$buffer) >= $hmacSize) {
                                $result = substr($$buffer, 2, $size);
                                substr($$buffer, 0, $hmacSize, '');
                                $$type = KNOWN_MESSAGE;
                            }
                        }
                    } else {
                        $result = $$buffer;
                        $self->{buffer} = '';
                        $$type = UNKNOWN_MESSAGE;
                    }
                }
            }
            else{
                $size = unpack("v", substr($$buffer, 2, 2));
                if (length($$buffer) >= $size) {
                    $result = substr($$buffer, 0, $size, '');
                    $$type = KNOWN_MESSAGE;
                }
            }
        }

    } else {
        # all send by client that is HMAC format
        $switch = getMessageIDNew($$buffer) if (length($$buffer) >= 4);
        $size = $rpackets->{$switch}{length};
        my $hmacSize = $size + 26;

        if ($size > 1) {
            # Static length message.
            if (length($$buffer) >= $hmacSize) {
                $result = substr($$buffer, 2, $size);
                substr($$buffer, 0, $hmacSize, '');
                $$type = KNOWN_MESSAGE;
            }
        } elsif (
            defined($size)
            and $size == 0 # old Kore convention
            || $size == -1 # packet extractor v3
        ) {
            # Variable length message.
            if (length($$buffer) >= 4) {
                $size = unpack("v", substr($$buffer, 2, 2));
                $hmacSize = $size + 26;
                if (length($$buffer) >= $hmacSize) {
                    $result = substr($$buffer, 2, $size);
                    substr($$buffer, 0, $hmacSize, '');
                    $$type = KNOWN_MESSAGE;
                }
            }
        } else {
            $result = $$buffer;
            $self->{buffer} = '';
            $$type = UNKNOWN_MESSAGE;
        }
    }
    return $result;
}
unknown-item commented 8 years ago

@beerdrumers this looks good to me. You may provide the full patch to @windhamwong for review and commit, Thank you for making efforts to make OpenKore support this new packet format. And also I see some forked projects put HMAC key into configuration, rather than my hard-coding, please also include that into the patch. We might be able to close this mega thread finally, it seems that issues related to tRO are now resolved.

winztr commented 8 years ago

so pretty , a good news before sleep . thank you very much. @unknown-item @beerdrumers

tosspons commented 8 years ago

I'm already use MessageTokenizer.pm but still disconnect just 2 second in map.

Candymaker commented 8 years ago

Xkore 3 problem, not sure if anybody got the same problem here? After I've tried to use the modified XKoreProxy.pm opk disconnect from client after server selection menu.( I've already modified my accountInfo & serverInfo) I also tried to use the old XKoreProxy.pm and put only extra code from unknown-item in. The client connect to OPK and still disconnect after server selection menu. I saw that many of you guys could connect to the map login. PS. my old XKoreProxy.pm worked perfectly fine before the HMAC-updated and be able to connect to the map but cannot move/use any command, couldn't see any players/monster name and got disconnect after few seconds. Please provide some guidelines for me to fix this problem. THANKYOU in advance guys

tosspons commented 8 years ago

I'm use windows10 can't connect to map. But when i use windows 7 I can connect to map but disconnect in 2 second. I think x3 has problem about HMAC . Because when I use ragexe.exe Old version before update HMAC with out openkore disconnect in 2 second too.

Candymaker commented 8 years ago

Hello @tosspons Could you tell me about your modification to XKoreProxy.pm from your previous X3 files? I've tried to test all my previous files and the mod-files. Only XKoreProxy.pm that made me stuck at server selection.

tosspons commented 8 years ago

I'm use xkoreproxy.pm from @unknown-item Like you.

XKoreProxy.pm in sub serverDisconnect, add: $self->{client_hmac} = 0; before: return $self->{server}->serverDisconnect();

in sub modifyPacketOut, add:

if($self->{client_hmac} && length($msg) > 28) { $msg = substr($msg, 2, length($msg) - 2 - 24) } before: my $switch = uc(unpack("H2", substr($msg, 1, 1))) . uc(unpack("H2", substr($msg, 0, 1)));

add:

if ($switch eq "0436" || $switch eq "0072") { $self->{client_hmac} = 1; } before: return $msg;

viperball commented 8 years ago

@beerdrumers Any other issues on your x3 now? or now it work perfectly for x3?

nuclearist commented 8 years ago

@tosspons same too. but it has a problem when connect to server info that disconnect from client. if X3 dont use HMAC_MD5 that ok about login process. It can access to map server. but dont moved.

benbradin commented 8 years ago

I can't heading to map that npc interaction needed. Anyway,I did follow the steps and npc location was right but it said connection failed afterwards. How can I fix this matter?

sukchay commented 8 years ago

Thank you

thitiboy commented 8 years ago

Sample My x3 cant move my $msgOri = $msg; if($config{'XKore'} eq '0' ) { if ($messageID eq $self->{packet_lut}{map_login}) { $self->{hmac_enc} = 1; $self->{seq} = 0; $self->{flag} = 1; } elsif ($self->{net}->getState() != Network::IN_GAME) { $self->{hmac_enc} = 0; $self->{seq} = 0; } elsif($self->{hmac_enc}) { $msg .= pack('V', $self->{flag}) . pack('V', $self->{seq}++); $msg .= hmacmd5($msg, pack('H', 'AE7AEE43215F3B442010CEE2AB647FBA')); $msg = pack('v', length($msg) + 2) . $msg;

===============================================================================================

} } if($config{'XKore'} eq '3' ) { if ($messageID eq '0436' or $messageID eq '0072') { $self->{hmac_enc} = 1; $self->{seq} = 0; $self->{flag} = 1; } elsif ($self->{net}->getState() != Network::IN_GAME) { $self->{hmacenc} = 0; $self->{seq} = 0; } else { if(length($msg) > 28) { $msg = substr($msg, 2, length($msg) - 2 - 24); $messageID = substr((uc unpack( 'H', $msg )), 2, 2).substr((uc unpack( 'H_', $msg )), 0, 2); } else { $msg .= pack('V', $self->{flag}) . pack('V', $self->{seq}++); $msg .= hmacmd5($msg, pack('H', 'AE7AEE43215F3B442010CEE2AB647FBA')); $msg = pack('v', length($msg) + 2) . $msg; }

if(substr((uc unpack( 'H*', $msgOri )), 0, 8) eq "1C007D00"){ $msg = substr($msgOri, 0, 28); $messageID = "007D"; } }

}

;(

nuclearist commented 8 years ago

@thitiboy Is that ok ????

otop57130 commented 8 years ago

เม้นนี้สำหรับคนไทยที่บอกว่า การขอความช่วยเหลือเป็นเรื่องน่าขยะแขยงนะคับ คื่อผมไม่เข้าไจว่ามันน่าเกลียดตรงไหน ? ไม่ไช่ทุกคนที่เค้าเก่ง เค้าเรียนมาด้านนี้ เหมือนคุณนะคับ ซึ่งเวลาที่เค้าไม่เข้าไจหรือ สงสัย เค้าถาม หรือ ขอความช่วยเหลือ เพราะเค้าไม่รุ้จิงๆ นี่มันพิดมากเลยหรอคับ ... การขอความช่วยเหลือนี่คือขอทานเลยหรอ ? มันดูน่าขยะแขยงขนาดนั้นเลยหรอ ?

otop57130 commented 8 years ago

ผมขอยกตัวอย่างนะคับ ถ้าคุนเป็นนักเรียน แล้วไม่เข้าใจการบ้านที่ครูให้มา พยายามแล้วแต่ก็ทำไม่ได้สักที ทำมาหลายวัน จนหมดปัญญา ไม่รุ้จะทำยังไงต่อ แล้วทางเลือกต่อไปคือคุณไปถามครู ไปขอความช่วยเหลือจากครู นี่มัน เป็นเรื่อง น่าขยะแขยง ? เป็นเรื่องของการขอทานหรอคับ ?

systeman commented 8 years ago

@otop57130 Do you understand wrong place at the wrong time at the wrong manner? TS for thai, คุณเข้าใจเรื่องผิดที่ผิดเวลาผิดมารยาทไหม

otop57130 commented 8 years ago

@systeman ผมเข้าไจคับ แต่เรื่องแค่นี้ ถึงกับต้องด่าว่า เป็นขอทาน เป็นเรื่องน่าขยะแขยงเลยหรอคับ ตักเตือนก็ได้มั้งคับ ด่าขนาดนี้ มันแรงเกินไปนะคับ

systeman commented 8 years ago

Sorry, i will clear this by thai language. @otop57130 อ่าถ้าคุณไปงาน ๆ หนึง หรือ ไปเทียวต่างประเทศ ประเทศหนึง แล้วคุณทำผิดมารยาทในงานในประเทศนั้นทุกคนก็จะมองคุณแบบน่ารังเกียจมันเป็นเช่นนั้น

otop57130 commented 8 years ago

@systeman ถ้าเค้าทำไปเพราะเค้าไม่รุ้จิงๆ หละคับ คนไม่รุ้นี คุนจะไปด่าเค้าว่าเป็นขอทานเลยหรือป่าวคับ ? คุนจะไปเข้าไปด่าเค้าเลยหรอ ? หรือ คุณจะพูดดีๆไห้เค้าเข้าไจก่อน หละคับ ?

sneezed commented 8 years ago

stop plz

pamornsin commented 8 years ago

So sory but this for thai people only: @otop57130 มึงหยุดเหอะไปคุยกันที่อื่น ที่นี่เข้าพูดคุยเรื่องพัฒนา ถ้าต้องการความช่วยเหลือมึงไปบอร์ดอื่นครับ