Guest User

Untitled

a guest
Mar 7th, 2012
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.96 KB | None | 0 0
  1. Index: src/Network/Receive/bRO.pm
  2. ===================================================================
  3. --- src/Network/Receive/bRO.pm (revision 7958)
  4. +++ src/Network/Receive/bRO.pm (working copy)
  5. @@ -1,57 +1,59 @@
  6. # bRO (Brazil): Odin
  7. package Network::Receive::bRO;
  8. use strict;
  9. -use Log qw(message warning error debug);
  10. +use Log qw(warning);
  11. use base 'Network::Receive::ServerType0';
  12. use Globals qw($messageSender);
  13. +my @recvPackets = (0x085C, 0x0922, 0x08AC, 0x091D, 0x0931, 0x08A2, 0x088A, 0x0953, 0x0811, 0x08A8, 0x0879, 0x0962, 0x093F, 0x0366, 0x0883, 0x0968, 0x0956, 0x0437, 0x093B, 0x093C, 0x095B, 0x0886, 0x0895, 0x0862, 0x094B, 0x0951, 0x085A, 0x088E, 0x0942, 0x0917, 0x085F, 0x087A, 0x092E, 0x023B, 0x0892, 0x0960, 0x08A1, 0x089E, 0x0202, 0x089C, 0x0865, 0x089F);
  14. +my @sendPackets = (0x08A4, 0x092C, 0x0925, 0x0957, 0x0881, 0x0894, 0x0918, 0x0937, 0x0362, 0x0958, 0x094C, 0x0940, 0x089A, 0x083C, 0x08A6, 0x0874, 0x0863, 0x096A, 0x0873, 0x0888, 0x094E, 0x0935, 0x094F, 0x0965, 0x0964, 0x095D, 0x0802, 0x092D, 0x0920, 0x0864, 0x0954, 0x0930, 0x0929, 0x0835, 0x087E, 0x0868, 0x0919, 0x0939, 0x091B, 0x0897, 0x0928, 0x0898);
  15.  
  16. sub new {
  17. my ($class) = @_;
  18. my $self = $class->SUPER::new(@_);
  19. my %packets = (
  20. '0097' => ['private_message', 'v Z24 V Z*', [qw(len privMsgUser flag privMsg)]], # -1
  21. + '085C' => ['sync_request_ex'],
  22. + '0922' => ['sync_request_ex'],
  23. + '08AC' => ['sync_request_ex'],
  24. + '091D' => ['sync_request_ex'],
  25. + '0931' => ['sync_request_ex'],
  26. + '08A2' => ['sync_request_ex'],
  27. + '088A' => ['sync_request_ex'],
  28. + '0953' => ['sync_request_ex'],
  29. + '0811' => ['sync_request_ex'],
  30. + '08A8' => ['sync_request_ex'],
  31. + '0879' => ['sync_request_ex'],
  32. + '0962' => ['sync_request_ex'],
  33. + '093F' => ['sync_request_ex'],
  34. + '0366' => ['sync_request_ex'],
  35. + '0883' => ['sync_request_ex'],
  36. + '0968' => ['sync_request_ex'],
  37. + '0956' => ['sync_request_ex'],
  38. + '0437' => ['sync_request_ex'],
  39. + '093B' => ['sync_request_ex'],
  40. + '093C' => ['sync_request_ex'],
  41. + '095B' => ['sync_request_ex'],
  42. + '0886' => ['sync_request_ex'],
  43. + '0895' => ['sync_request_ex'],
  44. + '0862' => ['sync_request_ex'],
  45. + '094B' => ['sync_request_ex'],
  46. + '0951' => ['sync_request_ex'],
  47. '085A' => ['sync_request_ex'],
  48. - '085B' => ['sync_request_ex'],
  49. - '085C' => ['sync_request_ex'],
  50. - '085D' => ['sync_request_ex'],
  51. - '085E' => ['sync_request_ex'],
  52. + '088E' => ['sync_request_ex'],
  53. + '0942' => ['sync_request_ex'],
  54. + '0917' => ['sync_request_ex'],
  55. '085F' => ['sync_request_ex'],
  56. - '0860' => ['sync_request_ex'],
  57. - '0861' => ['sync_request_ex'],
  58. - '0862' => ['sync_request_ex'],
  59. - '0863' => ['sync_request_ex'],
  60. - '0864' => ['sync_request_ex'],
  61. + '087A' => ['sync_request_ex'],
  62. + '092E' => ['sync_request_ex'],
  63. + '023B' => ['sync_request_ex'],
  64. + '0892' => ['sync_request_ex'],
  65. + '0960' => ['sync_request_ex'],
  66. + '08A1' => ['sync_request_ex'],
  67. + '089E' => ['sync_request_ex'],
  68. + '0202' => ['sync_request_ex'],
  69. + '089C' => ['sync_request_ex'],
  70. '0865' => ['sync_request_ex'],
  71. - '0866' => ['sync_request_ex'],
  72. - '0867' => ['sync_request_ex'],
  73. - '0868' => ['sync_request_ex'],
  74. - '0869' => ['sync_request_ex'],
  75. - '086A' => ['sync_request_ex'],
  76. - '086B' => ['sync_request_ex'],
  77. - '086C' => ['sync_request_ex'],
  78. - '086D' => ['sync_request_ex'],
  79. - '086E' => ['sync_request_ex'],
  80. - '086F' => ['sync_request_ex'],
  81. - '0870' => ['sync_request_ex'],
  82. - '0871' => ['sync_request_ex'],
  83. - '0872' => ['sync_request_ex'],
  84. - '0873' => ['sync_request_ex'],
  85. - '0874' => ['sync_request_ex'],
  86. - '0875' => ['sync_request_ex'],
  87. - '0876' => ['sync_request_ex'],
  88. - '0877' => ['sync_request_ex'],
  89. - '0878' => ['sync_request_ex'],
  90. - '0879' => ['sync_request_ex'],
  91. - '087A' => ['sync_request_ex'],
  92. - '087B' => ['sync_request_ex'],
  93. - '087C' => ['sync_request_ex'],
  94. - '087D' => ['sync_request_ex'],
  95. - '087E' => ['sync_request_ex'],
  96. - '087F' => ['sync_request_ex'],
  97. - '0880' => ['sync_request_ex'],
  98. - '0881' => ['sync_request_ex'],
  99. - '0882' => ['sync_request_ex'],
  100. - '0883' => ['sync_request_ex'],
  101. + '089F' => ['sync_request_ex'],
  102. );
  103.  
  104. foreach my $switch (keys %packets) {
  105. @@ -98,7 +100,14 @@
  106. my $PacketID = $args->{switch};
  107. # Cleaning Leading Zeros
  108. $PacketID =~ s/^0+//;
  109. - my $SyncID = (hex($PacketID) + 0x29);
  110. + my $SyncID = hex($PacketID);
  111. + my $index;
  112. + for $index (0 .. scalar(@recvPackets)) {
  113. + if ($SyncID == $recvPackets[$index]) {
  114. + $SyncID = $sendPackets[$index];
  115. + last;
  116. + }
  117. + }
  118. # Dispatching Sync Ex Reply
  119. $messageSender->sendReplySyncRequestEx($SyncID);
  120. }
  121. Index: src/Network/Send/bRO.pm
  122. ===================================================================
  123. --- src/Network/Send/bRO.pm (revision 7958)
  124. +++ src/Network/Send/bRO.pm (working copy)
  125. @@ -16,19 +16,19 @@
  126. '0232' => ['homunculus_move','a4 a4', [qw(homumID coordString)]],
  127. '02B0' => ['master_login', 'V Z24 a24 C Z16 Z14 C', [qw(version username password_rijndael master_version ip mac isGravityID)]],
  128. '0801' => ['buy_bulk_vender', 'x2 a4 a4 a*', [qw(venderID venderCID itemInfo)]],
  129. - '0802' => ['actor_look_at', 'v C', [qw(head body)]],
  130. - '0838' => ['storage_item_add', 'v V', [qw(index amount)]],
  131. - '0862' => ['move','a4', [qw(coordString)]],
  132. - '086D' => ['map_login', 'a4 a4 a4 V C', [qw(accountID charID sessionID tick sex)]],
  133. - '089A' => ['actor_info_request', 'a4', [qw(ID)]],
  134. - '0919' => ['sync', 'V', [qw(time)]],
  135. - '091F' => ['actor_action', 'a4 C', [qw(targetID type)]],
  136. - '0923' => ['item_drop', 'v2', [qw(index amount)]],
  137. - '092D' => ['storage_item_remove', 'v V', [qw(index amount)]],
  138. - '0932' => ['party_join_request_by_name', 'a24', [qw(partyName)]],
  139. - '0946' => ['homunculus_command', 'v C', [qw(commandType, commandID)]],
  140. - '094E' => ['item_take', 'a4', [qw(ID)]],
  141. - '0953' => ['skill_use_location', 'v4', [qw(lv skillID x y)]],
  142. + '086B' => ['actor_look_at', 'v C', [qw(head body)]],
  143. + '093A' => ['storage_item_add', 'v V', [qw(index amount)]],
  144. + '0870' => ['move','a4', [qw(coordString)]],
  145. + '094A' => ['map_login', 'a4 a4 a4 V C', [qw(accountID charID sessionID tick sex)]],
  146. + '0438' => ['actor_info_request', 'a4', [qw(ID)]],
  147. + '02C4' => ['sync', 'V', [qw(time)]],
  148. + '0882' => ['actor_action', 'a4 C', [qw(targetID type)]],
  149. + '088F' => ['item_drop', 'v2', [qw(index amount)]],
  150. + '0860' => ['storage_item_remove', 'v V', [qw(index amount)]],
  151. + '08A3' => ['party_join_request_by_name', 'a24', [qw(partyName)]],
  152. + '095E' => ['homunculus_command', 'v C', [qw(commandType, commandID)]],
  153. + '087B' => ['item_take', 'a4', [qw(ID)]],
  154. + '0880' => ['skill_use_location', 'v4', [qw(lv skillID x y)]],
  155. );
  156.  
  157. $self->{packet_list}{$_} = $packets{$_} for keys %packets;
  158. @@ -38,19 +38,19 @@
  159. homunculus_move 0232
  160. master_login 02B0
  161. buy_bulk_vender 0801
  162. - actor_look_at 0802
  163. - storage_item_add 0838
  164. - move 0862
  165. - map_login 086D
  166. - actor_info_request 089A
  167. - sync 0919
  168. - actor_action 091F
  169. - item_drop 0923
  170. - storage_item_remove 092D
  171. - party_join_request_by_name 0932
  172. - homunculus_command 0946
  173. - item_take 094E
  174. - skill_use_location 0953
  175. + actor_look_at 086B
  176. + storage_item_add 093A
  177. + move 0870
  178. + map_login 094A
  179. + actor_info_request 0438
  180. + sync 02C4
  181. + actor_action 0882
  182. + item_drop 088F
  183. + storage_item_remove 0860
  184. + party_join_request_by_name 08A3
  185. + homunculus_command 095E
  186. + item_take 087B
  187. + skill_use_location 0880
  188. );
  189.  
  190. $self->{packet_lut}{$_} = $handlers{$_} for keys %handlers;
  191. @@ -100,9 +100,9 @@
  192. my $type = shift;
  193. my $msg;
  194. if ($type == 3) {
  195. - $msg = pack("v v", 0x23B, $type).$pass.pack("H*", "EC62E539BB6BBC811A60C06FACCB7EC8");
  196. + $msg = pack("v v", 0x93E, $type).$pass.pack("H*", "EC62E539BB6BBC811A60C06FACCB7EC8");
  197. } elsif ($type == 2) {
  198. - $msg = pack("v v", 0x23B, $type).pack("H*", "EC62E539BB6BBC811A60C06FACCB7EC8").$pass;
  199. + $msg = pack("v v", 0x93E, $type).pack("H*", "EC62E539BB6BBC811A60C06FACCB7EC8").$pass;
  200. } else {
  201. ArgumentException->throw("The 'type' argument has invalid value ($type).");
  202. }
  203. @@ -182,14 +182,24 @@
  204. debug "Sent Request Join Party (by name): $name\n", "sendPacket", 2;
  205. }
  206.  
  207. +sub sendSkillUse {
  208. + my ($self, $ID, $lv, $targetID) = @_;
  209. + my $msg;
  210. +
  211. + $msg = pack("C*", 0x23, 0x09).pack("v*",$lv,$ID).$targetID;
  212. +
  213. + $self->sendToServer($msg);
  214. + debug "Skill Use: $ID\n", "sendPacket", 2;
  215. +}
  216. +
  217. sub CalculateHash()
  218. {
  219. # K
  220. - $enc_val1 = Math::BigInt->new('0x00000000BF63E862')->bxor(0xFFFFFFFF);
  221. + $enc_val1 = Math::BigInt->new('0x737D211C');
  222. # M
  223. - $enc_val3 = Math::BigInt->new('0x00000000807EC6ED')->bxor(0xFFFFFFFF);
  224. + $enc_val3 = Math::BigInt->new('0x456F57EF');
  225. # A
  226. - $enc_val2 = Math::BigInt->new('0x00000000ABE5F430')->bxor(0xFFFFFFFF);
  227. + $enc_val2 = Math::BigInt->new('0x38424E43');
  228. }
  229.  
  230. 1;
Advertisement
Add Comment
Please, Sign In to add comment