Code: Show/Hide M <game> [pid=0] bad position packet len=21
M <game> [pid=0] bad position packet len=21 M <game> [pid=0] bad position packet len=21 |
Code: Show/Hide sub send_position {
# Offset Length Description # 0 1 Type Byte 0x03 # 1 1 Direction (0 ... 360) # 2 4 Timestamp # 6 2 X Velocity # 8 2 Y Pixels (0 ... 16384) # 10 1 Checksum # 11 1 Togglables *1 # 12 2 X Pixels (0 ... 16384) # 14 2 Y Velocity # 16 2 Bounty # 18 2 Energy # 20 2 Weapon Info *2 # # 22 2 Energy *4 (Optional) # 24 2 S2C Latency *4 (Optional) # 26 2 Timer *4 (Optional) # 28 4 Item info *3 *4 (Optional) my (@spacket, $rpacket, $ticks, $csum, $i); $ticks = int(bc_handleproto::getTicks() / 10); $spacket[0] = bc_enc::enc_byte(0x03); $spacket[1] = bc_enc::enc_byte(0x00); @spacket[2 .. 5] = bc_enc::ence_int($ticks); @spacket[6 .. 7] = bc_enc::ence_short(bc_enc::short(0x00)); @spacket[8 .. 9] = bc_enc::ence_short(bc_enc::short($bc_global::posY)); $spacket[10] = bc_enc::enc_byte(0x00); $spacket[11] = bc_enc::enc_byte(0x00); @spacket[12 .. 13] = bc_enc::ence_short(bc_enc::short($bc_global::posX)); @spacket[14 .. 15] = bc_enc::ence_short(bc_enc::short(0x00)); @spacket[15 .. 16] = bc_enc::ence_short(bc_enc::short(0x00)); @spacket[17 .. 18] = bc_enc::ence_short(bc_enc::short(0x00)); @spacket[19 .. 20] = bc_enc::ence_short(bc_enc::short(0x00)); for ($i = 0; $i < scalar(@spacket); $i++) { $csum = $csum ^ $spacket[$i]; } $spacket[10] = bc_enc::enc_byte($csum); $rpacket = bc_enc::encrypt(@spacket); bc_handleproto::C2S_send($rpacket); } |
Code: Show/Hide #ifdef CFG_RELAX_LENGTH_CHECKS
if (len < 22) #else if (len != 22 && len != 32) #endif { lm->LogP(L_MALICIOUS, "game", p, "bad position packet len=%i", len); return; } |
Quote: |
$spacket[0] = bc_enc::enc_byte(0x03);
$spacket[1] = bc_enc::enc_byte(0x00); @spacket[2 .. 5] = bc_enc::ence_int($ticks); @spacket[6 .. 7] = bc_enc::ence_short(bc_enc::short(0x00)); @spacket[8 .. 9] = bc_enc::ence_short(bc_enc::short($bc_global::posY)); $spacket[10] = bc_enc::enc_byte(0x00); $spacket[11] = bc_enc::enc_byte(0x00); @spacket[12 .. 13] = bc_enc::ence_short(bc_enc::short($bc_global::posX)); @spacket[14 .. 15] = bc_enc::ence_short(bc_enc::short(0x00)); @spacket[15 .. 16] = bc_enc::ence_short(bc_enc::short(0x00)); @spacket[17 .. 18] = bc_enc::ence_short(bc_enc::short(0x00)); @spacket[19 .. 20] = bc_enc::ence_short(bc_enc::short(0x00)); |