Decompress packet payload
This commit is contained in:
parent
6bac18830d
commit
694cb4b448
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Gemfile.lock
|
||||||
|
|
15
teeworlds.rb
15
teeworlds.rb
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
require 'socket'
|
require 'socket'
|
||||||
|
|
||||||
|
require 'huffman_tw'
|
||||||
|
|
||||||
# randomize this
|
# randomize this
|
||||||
MY_TOKEN = [0x73, 0x34, 0xB4, 0xA0]
|
MY_TOKEN = [0x73, 0x34, 0xB4, 0xA0]
|
||||||
|
|
||||||
|
@ -58,6 +60,7 @@ class TwClient
|
||||||
@state = NET_CONNSTATE_OFFLINE
|
@state = NET_CONNSTATE_OFFLINE
|
||||||
@ip = 'localhost'
|
@ip = 'localhost'
|
||||||
@port = 8303
|
@port = 8303
|
||||||
|
@huffman = Huffman.new
|
||||||
end
|
end
|
||||||
|
|
||||||
# turn byte array into hex string
|
# turn byte array into hex string
|
||||||
|
@ -281,7 +284,17 @@ class TwClient
|
||||||
# parse msg with bit flips instead
|
# parse msg with bit flips instead
|
||||||
on_message(msg, data[(header_size + 1)..])
|
on_message(msg, data[(header_size + 1)..])
|
||||||
elsif get_byte(data, 0) == '10' # size 7 flags compression
|
elsif get_byte(data, 0) == '10' # size 7 flags compression
|
||||||
# puts "we f*cked this compressed"
|
payload = data[header_size..]
|
||||||
|
# puts "payload compressed: " + str_hex(payload)
|
||||||
|
payload = @huffman.decompress(payload.unpack("C*"))
|
||||||
|
# puts "payload decompressed: " + str_hex(payload.pack("C*"))
|
||||||
|
|
||||||
|
# debug this datatype
|
||||||
|
# the byte 0x11 is being sent
|
||||||
|
# the tw server somehow reads 8 as NETMSG_SNAPSINGLE
|
||||||
|
# and ruby gets 17 here which is the decimal of 0x11
|
||||||
|
msg = payload[2]
|
||||||
|
puts "msg=#{msg} msgtype=#{msg.class} payloadtype=#{payload.class}"
|
||||||
if @server_info.nil?
|
if @server_info.nil?
|
||||||
send_msg_startinfo
|
send_msg_startinfo
|
||||||
else # assume snap reply with input to keep alive
|
else # assume snap reply with input to keep alive
|
||||||
|
|
Loading…
Reference in a new issue