NAME

    Game::Tibia::Packet - Session layer support for the MMORPG Tibia

SYNOPSIS

        use Game::Tibia::Packet;
    
        # decrypt Tibia packet
        my $read; my $ret = $sock->recv($read, 1024);
        my $res = Game::Tibia::Packet->new(packet => $read, xtea => $xtea_key);
        $packet_type = unpack('C', $res->payload);
    
    
        # encrypt a Tibia speech packet
        my $p = Game::Tibia::Packet->new;
        $p->payload .= pack("C S S S/A S C SSC S/A",
            0xAA, 0x1, 0x0, "Perl", 0, 1, 1, 1, 8,
            "Game::Tibia::Packet says Hi!\n:-)");
        $sock->send($p->finalize($xtea_key}))

DESCRIPTION

    Methods for constructing Tibia Gameserver (XTEA) packets. Handles
    checksum calculation and symmetric encryption depending on the
    requested Tibia version.

    Should work with all Tibia versions less than 9.80.

METHODS AND ARGUMENTS

    new(version => $version, [packet => $payload, xtea => $xtea])

      Constructs a new Game::Tibia::Packet instance of version $version. If
      payload and XTEA are given, the payload will be decrypted and trimmed
      to correct size.

    isValid($packet)

      Checks if packet's adler32 digest matches (A totally unnecessary
      thing on Cipsoft's part, as we already have TCP checksum. Why hash
      again?)

    payload() : lvalue

      returns the payload as lvalue (so you can concat on it)

    finalize([$XTEA_KEY])

      Finalizes the packet. XTEA encrypts, prepends checksum and length.

    version($version)

      Returns a hash reference with protocol traits. For example for 840,
      it returns:

          { gmbyte => 1, outfit_addons => 1, adler32 => 1, acc_name => 1,
            stamina => 1, xtea => 1, VERSION => 840, rsa => 1, lvl_on_msg => 1 };

GIT REPOSITORY

    http://github.com/athreef/Game-Tibia-Packet

SEE ALSO

    The protocol was reverse engineered as part of writing my Tibia
    Wireshark Plugin <https://github.com/a3f/Tibia-Wireshark-Plugin>.

    Game::Tibia::Cam

    Game::Tibia::Packet::Login

    Game::Tibia::Packet::Charlist

    http://tpforums.org/forum/forum.php http://tibia.com

AUTHOR

    Ahmad Fatoum <athreef@cpan.org>, http://a3f.at

DISCLAIMER

    Tibia is copyrighted by Cipsoft GmbH.

COPYRIGHT AND LICENSE

    Copyright (C) 2016 Ahmad Fatoum

    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

