Mess with tokens
This commit is contained in:
parent
45d1361408
commit
cf57146260
20
.github/workflows/bad_code.yml
vendored
Normal file
20
.github/workflows/bad_code.yml
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
name: Bad code
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Ruby 3.1
|
||||
uses: actions/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: 3.1.x
|
||||
- name: Check code
|
||||
run: ./scripts/bad_code.sh
|
|
@ -40,7 +40,7 @@ class Map
|
|||
|
||||
@sha256_arr = @sha256
|
||||
@sha256 = @sha256.pack('C*')
|
||||
@sha256_str = @sha256.map { |b| b.to_s(16) }.join
|
||||
@sha256_str = @sha256.map { |b| b.to_s(16).rjust(2, '0') }.join
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -14,7 +14,7 @@ class NetBase
|
|||
@port = nil
|
||||
@s = nil
|
||||
@ack = 0
|
||||
@peer_token = [0xFF, 0xFF, 0xFF, 0xFF].map { |b| b.to_s(16) }.join
|
||||
@peer_token = [0xFF, 0xFF, 0xFF, 0xFF].map { |b| b.to_s(16).rjust(2, '0') }.join
|
||||
end
|
||||
|
||||
def bind(socket)
|
||||
|
|
|
@ -104,7 +104,7 @@ class TeeworldsClient
|
|||
@game_client = GameClient.new(self)
|
||||
# me trying to write cool code
|
||||
@client_token = (1..4).to_a.map { |_| rand(0..255) }
|
||||
@client_token = @client_token.map { |b| b.to_s(16) }.join
|
||||
@client_token = @client_token.map { |b| b.to_s(16).rjust(2, '0') }.join
|
||||
puts "client token #{@client_token}"
|
||||
@netbase = NetBase.new(verbose: @verbose)
|
||||
NetChunk.reset
|
||||
|
|
8
lib/teeworlds_server.rb
Executable file → Normal file
8
lib/teeworlds_server.rb
Executable file → Normal file
|
@ -34,7 +34,7 @@ class TeeworldsServer
|
|||
|
||||
def run(ip, port)
|
||||
@server_token = (1..4).to_a.map { |_| rand(0..255) }
|
||||
@server_token = @server_token.map { |b| b.to_s(16) }.join
|
||||
@server_token = @server_token.map { |b| b.to_s(16).rjust(2, '0') }.join
|
||||
puts "server token #{@server_token}"
|
||||
@netbase = NetBase.new(verbose: @verbose)
|
||||
NetChunk.reset
|
||||
|
@ -107,8 +107,10 @@ class TeeworldsServer
|
|||
end
|
||||
|
||||
def send_ctrl_with_token(addr, token)
|
||||
msg = [NET_CTRLMSG_TOKEN] + token
|
||||
msg = [NET_CTRLMSG_TOKEN] + str_bytes(@server_token)
|
||||
@netbase.peer_token = token.pack('C*')
|
||||
@netbase.send_packet(msg, 0, control: true, addr:)
|
||||
# @netbase.peer_token = @server_token
|
||||
end
|
||||
|
||||
def send_map(addr)
|
||||
|
@ -154,7 +156,7 @@ class TeeworldsServer
|
|||
def on_ctrl_token(packet)
|
||||
u = Unpacker.new(packet.payload[1..])
|
||||
token = u.get_raw(4)
|
||||
# puts "got token #{token.map { |b| b.to_s(16) }.join('')}"
|
||||
# puts "got token #{token.map { |b| b.to_s(16).rjust(2, '0') }.join('')}"
|
||||
send_ctrl_with_token(packet.addr, token)
|
||||
end
|
||||
|
||||
|
|
43
scripts/bad_code.sh
Executable file
43
scripts/bad_code.sh
Executable file
|
@ -0,0 +1,43 @@
|
|||
#!/bin/bash
|
||||
|
||||
arg_fix=0
|
||||
|
||||
if [ "$1" == "--fix" ]
|
||||
then
|
||||
arg_fix=1
|
||||
fi
|
||||
|
||||
if [ "$arg_fix" == "1" ]
|
||||
then
|
||||
while read -r bad_file
|
||||
do
|
||||
echo "[*] fixing '$bad_file' ..."
|
||||
for del in ';' '$' ' '
|
||||
do
|
||||
del_end="$del"
|
||||
[[ "$del" == '$' ]] && del_end=''
|
||||
sed "s/.to_s(16)$del/.to_s(16).rjust(2, '0')$del_end/g" "$bad_file" > "$bad_file".tmp
|
||||
done
|
||||
mv "$bad_file".tmp "$bad_file"
|
||||
done < <(grep -nri "to_s(16)" --exclude=bad_code.sh |
|
||||
grep -v "to_s(16).rjust(2, '0')" |
|
||||
cut -d':' -f1)
|
||||
fi
|
||||
|
||||
if grep -nri "to_s(16)" --exclude=bad_code.sh | grep -v "to_s(16).rjust(2, '0')"
|
||||
then
|
||||
if [ "$arg_fix" == "1" ]
|
||||
then
|
||||
echo "[-] Error: could not fix those ^"
|
||||
exit 1
|
||||
fi
|
||||
echo "[-] Error: found usage of 'to_s(16)' without 'rjust(2, '0')'"
|
||||
echo "[-] all hexadecimal string bytes have to be zero padded!"
|
||||
echo "[-]"
|
||||
echo "[-] bad: FAF"
|
||||
echo "[-] good: 0FAF"
|
||||
echo "[-]"
|
||||
echo "[-] run ./scripts/bad_code.sh --fix to fix"
|
||||
echo "[-]"
|
||||
exit 1
|
||||
fi
|
Loading…
Reference in a new issue