README.TXT.svn-base
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:3k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1.                         === Padded packets emulator ===
  2. What is this?
  3. -------------
  4. Some RO servers, such as euRO (Europe), iRO (International) and rRO (Russia)
  5. use so-called padded packets. The RO client will insert what seems to be
  6. garbage data into parts of certain packet. In reality, this "garbage" is the
  7. result of of a complex hashing algorithm. Furthermore, the size of the garbage
  8. data, and the algorithm that is used, varies every time a sync is received
  9. from the RO server. Thus, a packet may have different sizes during different
  10. times.
  11. We refer to packets that contain such data, as "padded packets". The padded
  12. packets emulator is a subsystem in OpenKore which generates correct padded
  13. packets.
  14. Padded packets only affect packets that are sent from the client to the server,
  15. not packets received from server to client. Furthermore, not all packets are
  16. padded - only some are, usually the "sit", "stand", "attack" and "use skill"
  17. packets.
  18. How the algorithm works
  19. -----------------------
  20. As you know, each packet in the RO protocol is at least 2 bytes. The first
  21. two bytes are referred to as "packet switch" (although I prefer to call them
  22. "message" and "message ID", respectively). More information about the RO
  23. protocol's general format can be found here:
  24. http://www.openkore.com/wiki/index.php/Network_subsystem#Appendix_A:_introduction_to_the_Ragnarok_Online_protocol
  25. A padded packet contains a hash of of its packet switch. There are 16
  26. different hashing algorithms that can be used. Which hashing algorithm is
  27. currently used, depends on a variety of factors such as:
  28. - The last received map sync.
  29. - The last received sync.
  30. - The account ID.
  31. Subsystem high-level architecture
  32. ---------------------------------
  33. The padded packets emulator consists of a C++ part and a Perl part. The Perl
  34. part, Network/PaddedPackets.pm, is just a wrapper around the C++ part. The
  35. C++ part is where the real work is done, and its source code is in this folder.
  36. The relations between the various source files are illustrated in this
  37. diagram:
  38.                       Perl module
  39.                 (Network::PaddedPackets)
  40.                            |
  41.                            |
  42.                     PaddedPackets.xs
  43.                            |
  44.            +---------------+---------------+
  45.            |                               |
  46.            |                               |
  47.       engine.cpp                     algorithms.cpp
  48.                                            |
  49.                                   +--------+---------+
  50.                                   |        |         |
  51.                               feal8.c   rmd128.c   ...etc...
  52. PaddedPackets.xs is responsible for generating the padded packets.
  53. Algorithms/algorithms.cpp is the main interface to the 16 different
  54. hashing functions.
  55. engine.cpp is a utility class used when generating padded packets.
  56. Credits
  57. -------
  58. Many thanks to Japplegame, Jerry and kLabMouse. :) They wrote the base for
  59. the padded packets emulator, and without them this would not exist.