mid-kid
2 years ago
commit
a3fe883d76
23 changed files with 38382 additions and 0 deletions
@ -0,0 +1,38 @@ |
|||||
|
ster |
||||
|
disa |
||||
|
less |
||||
|
hope |
||||
|
lettuce |
||||
|
|
||||
|
once entered walk twenty steps total |
||||
|
finally you will become femboy |
||||
|
go to hole in the fence five times |
||||
|
|
||||
|
east east north north - done |
||||
|
east north south south - done |
||||
|
north south east east - done |
||||
|
north east south east - done |
||||
|
|
||||
|
braille in Tiny Cavner in Southern Glitchland |
||||
|
|
||||
|
YEET: |
||||
|
SLIDE FREELY EVERYWHERE |
||||
|
|
||||
|
eastern camp: |
||||
|
cracker cavern |
||||
|
|
||||
|
southern camp: |
||||
|
femboy prime |
||||
|
fun value resetter |
||||
|
|
||||
|
northern camp: |
||||
|
fun value checker |
||||
|
casino |
||||
|
altering cave |
||||
|
|
||||
|
northern retreat: |
||||
|
trendy phrase |
||||
|
|
||||
|
western camp: |
||||
|
balls guy |
||||
|
western relic |
@ -0,0 +1,211 @@ |
|||||
|
#!/usr/bin/python3 |
||||
|
|
||||
|
charmap = { |
||||
|
' ': 0x00, |
||||
|
'0': 0xA1, |
||||
|
'1': 0xA2, |
||||
|
'2': 0xA3, |
||||
|
'3': 0xA4, |
||||
|
'4': 0xA5, |
||||
|
'5': 0xA6, |
||||
|
'6': 0xA7, |
||||
|
'7': 0xA8, |
||||
|
'8': 0xA9, |
||||
|
'9': 0xAA, |
||||
|
'!': 0xAB, |
||||
|
'?': 0xAC, |
||||
|
'.': 0xAD, |
||||
|
'-': 0xAE, |
||||
|
'…': 0xB0, |
||||
|
'“': 0xB1, |
||||
|
'”': 0xB2, |
||||
|
'‘': 0xB3, |
||||
|
'’': 0xB4, |
||||
|
'♂': 0xB5, |
||||
|
'♀': 0xB6, |
||||
|
',': 0xB8, |
||||
|
'/': 0xBA, |
||||
|
'A': 0xBB, |
||||
|
'B': 0xBC, |
||||
|
'C': 0xBD, |
||||
|
'D': 0xBE, |
||||
|
'E': 0xBF, |
||||
|
'F': 0xC0, |
||||
|
'G': 0xC1, |
||||
|
'H': 0xC2, |
||||
|
'I': 0xC3, |
||||
|
'J': 0xC4, |
||||
|
'K': 0xC5, |
||||
|
'L': 0xC6, |
||||
|
'M': 0xC7, |
||||
|
'N': 0xC8, |
||||
|
'O': 0xC9, |
||||
|
'P': 0xCA, |
||||
|
'Q': 0xCB, |
||||
|
'R': 0xCC, |
||||
|
'S': 0xCD, |
||||
|
'T': 0xCE, |
||||
|
'U': 0xCF, |
||||
|
'V': 0xD0, |
||||
|
'W': 0xD1, |
||||
|
'X': 0xD2, |
||||
|
'Y': 0xD3, |
||||
|
'Z': 0xD4, |
||||
|
'a': 0xD5, |
||||
|
'b': 0xD6, |
||||
|
'c': 0xD7, |
||||
|
'd': 0xD8, |
||||
|
'e': 0xD9, |
||||
|
'f': 0xDA, |
||||
|
'g': 0xDB, |
||||
|
'h': 0xDC, |
||||
|
'i': 0xDD, |
||||
|
'j': 0xDE, |
||||
|
'k': 0xDF, |
||||
|
'l': 0xE0, |
||||
|
'm': 0xE1, |
||||
|
'n': 0xE2, |
||||
|
'o': 0xE3, |
||||
|
'p': 0xE4, |
||||
|
'q': 0xE5, |
||||
|
'r': 0xE6, |
||||
|
's': 0xE7, |
||||
|
't': 0xE8, |
||||
|
'u': 0xE9, |
||||
|
'v': 0xEA, |
||||
|
'w': 0xEB, |
||||
|
'x': 0xEC, |
||||
|
'y': 0xED, |
||||
|
'z': 0xEE, |
||||
|
'$': 0xFF, |
||||
|
} |
||||
|
chars = [ |
||||
|
' ', |
||||
|
'0', |
||||
|
'1', |
||||
|
'2', |
||||
|
'3', |
||||
|
'4', |
||||
|
'5', |
||||
|
'6', |
||||
|
'7', |
||||
|
'8', |
||||
|
'9', |
||||
|
'!', |
||||
|
'?', |
||||
|
'.', |
||||
|
'-', |
||||
|
'…', |
||||
|
'“', |
||||
|
'”', |
||||
|
'‘', |
||||
|
'’', |
||||
|
'♂', |
||||
|
'♀', |
||||
|
',', |
||||
|
'/', |
||||
|
'A', |
||||
|
'B', |
||||
|
'C', |
||||
|
'D', |
||||
|
'E', |
||||
|
'F', |
||||
|
'G', |
||||
|
'H', |
||||
|
'I', |
||||
|
'J', |
||||
|
'K', |
||||
|
'L', |
||||
|
'M', |
||||
|
'N', |
||||
|
'O', |
||||
|
'P', |
||||
|
'Q', |
||||
|
'R', |
||||
|
'S', |
||||
|
'T', |
||||
|
'U', |
||||
|
'V', |
||||
|
'W', |
||||
|
'X', |
||||
|
'Y', |
||||
|
'Z', |
||||
|
'a', |
||||
|
'b', |
||||
|
'c', |
||||
|
'd', |
||||
|
'e', |
||||
|
'f', |
||||
|
'g', |
||||
|
'h', |
||||
|
'i', |
||||
|
'j', |
||||
|
'k', |
||||
|
'l', |
||||
|
'm', |
||||
|
'n', |
||||
|
'o', |
||||
|
'p', |
||||
|
'q', |
||||
|
'r', |
||||
|
's', |
||||
|
't', |
||||
|
'u', |
||||
|
'v', |
||||
|
'w', |
||||
|
'x', |
||||
|
'y', |
||||
|
'z', |
||||
|
'$', |
||||
|
] |
||||
|
|
||||
|
round1 = ([73, 97, 13, 41, 67, 101, 89, 139, 71, 83], [6969, 6367, 5099, 4591, 4421, 4831, 3581, 5039, 5279, 4079, 4021]) |
||||
|
round2 = ([59, 181, 127, 163, 103, 163, 149, 193, 211, 151], [1337, 3701, 4603, 4663, 4703, 4219, 6481, 6983, 5407, 5297, 5099]) |
||||
|
def one_round(string, coeffs, addends): |
||||
|
assert(len(coeffs) == 10) |
||||
|
assert(len(string) == 10) |
||||
|
|
||||
|
var32769 = addends[0] |
||||
|
for c,n,x in zip(string,coeffs,addends[1:]): |
||||
|
var32769 = (var32769 + charmap[c]) % 65536 |
||||
|
var32769 = (var32769 * n) % 65536 |
||||
|
var32769 = (var32769 + x) % 65536 |
||||
|
return var32769 |
||||
|
|
||||
|
def get_hash_for(string): |
||||
|
var32771 = one_round(string, *round1) |
||||
|
var32769 = one_round(string, *round2) |
||||
|
return hex(var32771),hex(var32769) |
||||
|
|
||||
|
all = len(chars) ** 10 |
||||
|
for x in range(all): |
||||
|
s = "" |
||||
|
while x: |
||||
|
s += chars[x % len(chars)] |
||||
|
x //= len(chars) |
||||
|
while len(s) < 10: |
||||
|
s += "$" |
||||
|
|
||||
|
hash = get_hash_for(s) |
||||
|
if hash == (0xB0EF, 0xD4B9): |
||||
|
print(s) |
||||
|
|
||||
|
final = 0x828E - round1[1][-1] |
||||
|
for x in range(10): |
||||
|
for i, c in reversed(charmap.items()): |
||||
|
if c == 0: |
||||
|
continue |
||||
|
if c % round1[0][-x] == 0: |
||||
|
c //= round1[0][-x] |
||||
|
print(c) |
||||
|
break |
||||
|
else: |
||||
|
print("nope") |
||||
|
exit() |
||||
|
c -= round1[1][-1 - x] |
||||
|
|
||||
|
# 0123456789 = |
||||
|
print(get_hash_for("0123456789")) |
||||
|
print(get_hash_for("$$$$$$$$$$")) |
||||
|
print(get_hash_for("ABABABABAB")) |
||||
|
print(get_hash_for("6969696969")) |
@ -0,0 +1,236 @@ |
|||||
|
#!/usr/bin/python3 |
||||
|
|
||||
|
charmap = { |
||||
|
' ': 0x00, |
||||
|
'0': 0xA1, |
||||
|
'1': 0xA2, |
||||
|
'2': 0xA3, |
||||
|
'3': 0xA4, |
||||
|
'4': 0xA5, |
||||
|
'5': 0xA6, |
||||
|
'6': 0xA7, |
||||
|
'7': 0xA8, |
||||
|
'8': 0xA9, |
||||
|
'9': 0xAA, |
||||
|
'!': 0xAB, |
||||
|
'?': 0xAC, |
||||
|
'.': 0xAD, |
||||
|
'-': 0xAE, |
||||
|
'…': 0xB0, |
||||
|
'“': 0xB1, |
||||
|
'”': 0xB2, |
||||
|
'‘': 0xB3, |
||||
|
'’': 0xB4, |
||||
|
'♂': 0xB5, |
||||
|
'♀': 0xB6, |
||||
|
',': 0xB8, |
||||
|
'/': 0xBA, |
||||
|
'A': 0xBB, |
||||
|
'B': 0xBC, |
||||
|
'C': 0xBD, |
||||
|
'D': 0xBE, |
||||
|
'E': 0xBF, |
||||
|
'F': 0xC0, |
||||
|
'G': 0xC1, |
||||
|
'H': 0xC2, |
||||
|
'I': 0xC3, |
||||
|
'J': 0xC4, |
||||
|
'K': 0xC5, |
||||
|
'L': 0xC6, |
||||
|
'M': 0xC7, |
||||
|
'N': 0xC8, |
||||
|
'O': 0xC9, |
||||
|
'P': 0xCA, |
||||
|
'Q': 0xCB, |
||||
|
'R': 0xCC, |
||||
|
'S': 0xCD, |
||||
|
'T': 0xCE, |
||||
|
'U': 0xCF, |
||||
|
'V': 0xD0, |
||||
|
'W': 0xD1, |
||||
|
'X': 0xD2, |
||||
|
'Y': 0xD3, |
||||
|
'Z': 0xD4, |
||||
|
'a': 0xD5, |
||||
|
'b': 0xD6, |
||||
|
'c': 0xD7, |
||||
|
'd': 0xD8, |
||||
|
'e': 0xD9, |
||||
|
'f': 0xDA, |
||||
|
'g': 0xDB, |
||||
|
'h': 0xDC, |
||||
|
'i': 0xDD, |
||||
|
'j': 0xDE, |
||||
|
'k': 0xDF, |
||||
|
'l': 0xE0, |
||||
|
'm': 0xE1, |
||||
|
'n': 0xE2, |
||||
|
'o': 0xE3, |
||||
|
'p': 0xE4, |
||||
|
'q': 0xE5, |
||||
|
'r': 0xE6, |
||||
|
's': 0xE7, |
||||
|
't': 0xE8, |
||||
|
'u': 0xE9, |
||||
|
'v': 0xEA, |
||||
|
'w': 0xEB, |
||||
|
'x': 0xEC, |
||||
|
'y': 0xED, |
||||
|
'z': 0xEE, |
||||
|
'$': 0xFF, |
||||
|
} |
||||
|
|
||||
|
chars = [ |
||||
|
' ', |
||||
|
'0', |
||||
|
'1', |
||||
|
'2', |
||||
|
'3', |
||||
|
'4', |
||||
|
'5', |
||||
|
'6', |
||||
|
'7', |
||||
|
'8', |
||||
|
'9', |
||||
|
'!', |
||||
|
'?', |
||||
|
'.', |
||||
|
'-', |
||||
|
'…', |
||||
|
'“', |
||||
|
'”', |
||||
|
'‘', |
||||
|
'’', |
||||
|
'♂', |
||||
|
'♀', |
||||
|
',', |
||||
|
'/', |
||||
|
'A', |
||||
|
'B', |
||||
|
'C', |
||||
|
'D', |
||||
|
'E', |
||||
|
'F', |
||||
|
'G', |
||||
|
'H', |
||||
|
'I', |
||||
|
'J', |
||||
|
'K', |
||||
|
'L', |
||||
|
'M', |
||||
|
'N', |
||||
|
'O', |
||||
|
'P', |
||||
|
'Q', |
||||
|
'R', |
||||
|
'S', |
||||
|
'T', |
||||
|
'U', |
||||
|
'V', |
||||
|
'W', |
||||
|
'X', |
||||
|
'Y', |
||||
|
'Z', |
||||
|
'a', |
||||
|
'b', |
||||
|
'c', |
||||
|
'd', |
||||
|
'e', |
||||
|
'f', |
||||
|
'g', |
||||
|
'h', |
||||
|
'i', |
||||
|
'j', |
||||
|
'k', |
||||
|
'l', |
||||
|
'm', |
||||
|
'n', |
||||
|
'o', |
||||
|
'p', |
||||
|
'q', |
||||
|
'r', |
||||
|
's', |
||||
|
't', |
||||
|
'u', |
||||
|
'v', |
||||
|
'w', |
||||
|
'x', |
||||
|
'y', |
||||
|
'z', |
||||
|
'$', |
||||
|
] |
||||
|
# Script vars are u16 |
||||
|
|
||||
|
|
||||
|
def one_round(string, starting_val, coeffs, addends): |
||||
|
assert(len(coeffs) == 10) |
||||
|
assert(len(string) == 10) |
||||
|
|
||||
|
var32769 = starting_val |
||||
|
for c,n,x in zip(string,coeffs,addends): |
||||
|
var32769 = (var32769 + charmap[c]) % 65536 |
||||
|
var32769 = (var32769 * n) % 65536 |
||||
|
var32769 = (var32769 + x) % 65536 |
||||
|
return var32769 |
||||
|
|
||||
|
round1 = (6969, [73, 97, 13, 41, 67, 101, 89, 139, 71, 83], [6367, 5099, 4591, 4421, 4831, 3581, 5039, 5279, 4079, 4021]) |
||||
|
round2 = (1337, [59, 181, 127, 163, 103, 163, 149, 193, 211, 151], [3701, 4603, 4663, 4703, 4219, 6481, 6983, 5407, 5297, 5099]) |
||||
|
def get_hash_for(string): |
||||
|
var32771 = one_round(string, *round1) |
||||
|
var32769 = one_round(string, *round2) |
||||
|
return hex(var32771),hex(var32769) |
||||
|
|
||||
|
def get_unk_coeffs(round): |
||||
|
constant = one_round(" ", *round) |
||||
|
coeffs = [] |
||||
|
for c in round[1]: |
||||
|
for i in range(len(coeffs)): |
||||
|
coeffs[i] = (coeffs[i] * c) % 65536 |
||||
|
coeffs.append(c) |
||||
|
return constant,coeffs |
||||
|
|
||||
|
|
||||
|
simple_round1 = get_unk_coeffs(round1) |
||||
|
simple_round2 = get_unk_coeffs(round2) |
||||
|
print(simple_round1) |
||||
|
print(simple_round2) |
||||
|
|
||||
|
def simple_round(string, starting_val, coeffs): |
||||
|
return (starting_val + sum([ (charmap[char] * coeff) % 65536 for (char,coeff) in zip(string,coeffs) ])) % 65536 |
||||
|
|
||||
|
def simple_hash(string): |
||||
|
var32771 = simple_round(string, *simple_round1) |
||||
|
var32769 = simple_round(string, *simple_round2) |
||||
|
return hex(var32771),hex(var32769) |
||||
|
|
||||
|
|
||||
|
# all = len(chars) ** 10 |
||||
|
# for x in range(all): |
||||
|
# s = "" |
||||
|
# while x: |
||||
|
# s += chars[x % len(chars)] |
||||
|
# x //= len(chars) |
||||
|
# while len(s) < 10: |
||||
|
# s += "$" |
||||
|
|
||||
|
# hash = simple_hash(s) |
||||
|
# if hash == 0xB0EF: |
||||
|
# print(s) |
||||
|
|
||||
|
print(get_hash_for("0123456789"), simple_hash("0123456789")) |
||||
|
print(get_hash_for("$$$$$$$$$$"), simple_hash("$$$$$$$$$$")) |
||||
|
print(get_hash_for("ABABABABAB"), simple_hash("ABABABABAB")) |
||||
|
print(get_hash_for("6969696969"), simple_hash("6969696969")) |
||||
|
|
||||
|
|
||||
|
def print_simple(starting_val, coeffs, target): |
||||
|
print(coeffs, hex((target - starting_val) % 65536)) |
||||
|
|
||||
|
print_simple(*simple_round1, 45295) |
||||
|
print_simple(*simple_round2, 54457) |
||||
|
|
||||
|
for char in charmap: |
||||
|
print("0x%04X" % ((charmap[char] * 39437) & 0xffff)) |
||||
|
|
||||
|
# a1 * x1 + a2 * x2 + C = <> |
||||
|
# (a1 + a2) * (x1 + x2) + C |
@ -0,0 +1,10 @@ |
|||||
|
|
||||
|
"0123456789" = 0AEE 828E |
||||
|
" " = 78D3 FC47 |
||||
|
"ABABABABAB" = 5266 9722 |
||||
|
"6969696969" = 9B24 F0E0 |
||||
|
|
||||
|
32769 32771 |
||||
|
D4B9 B0EF |
||||
|
|
||||
|
Password: "…n….," |
@ -0,0 +1,9 @@ |
|||||
|
Request cert: |
||||
|
07000000686f6c6465723d41656c6974612f747970653d73696c766572ffc04600000000 |
||||
|
Response: |
||||
|
4954496e702b6863537766503243357276544179796e3355496a5a3974584d3368664d634470346b677672515438724d755645367954686652556a397a2b516d45564353564d4a6a393070526f464a355959525257413d3dff |
||||
|
|
||||
|
Verify cert: |
||||
|
080000004954496e702b6863537766503243357276544179796e3355496a5a3974584d3368664d634470346b677672515438724d755645367954686652556a397a2b516d45564353564d4a6a393070526f464a355959525257413d3dff0000000217018037121200c71d020213006587010217018000001200da75030213008c8701021200db75030213008d8701021601800000160280a3001701800000180280010021028000000605898701021701805f121200c81d02021300b287010217018000001200da7503021300d98701021200db7503021300da870102160180000016028067001701800000180280010021028000000605d68701021701807b101200c91d |
||||
|
Response: |
||||
|
53000000617574686f726974793d437261636b6572466f75722f73657269616c3d343636343135342f686f6c6465723d41656c6974612f747970653d73696c766572ff |
@ -0,0 +1,28 @@ |
|||||
|
02018213: lock |
||||
|
02018214: faceplayer |
||||
|
02018215: checkflag 1070 |
||||
|
02018218: goto_if 1, loc_0201825b |
||||
|
0201821e: loadword 0, 0x02018265 |
||||
|
02018224: callstd 4 |
||||
|
02018226: waitmessage |
||||
|
02018227: closemessage |
||||
|
02018228: delay 60 |
||||
|
0201822b: playse 209 |
||||
|
0201822e: delay 20 |
||||
|
02018231: setvar 32781, 3 |
||||
|
02018236: playse 107 |
||||
|
02018239: callnative 0x080b0535 |
||||
|
0201823e: delay 150 |
||||
|
02018241: callnative 0x080b058d |
||||
|
02018246: waitstate |
||||
|
02018247: delay 10 |
||||
|
0201824a: message 0x02018321 |
||||
|
0201824f: setflag 1070 |
||||
|
02018252: playfanfare 389 |
||||
|
02018255: waitfanfare |
||||
|
02018256: call 0x0203e14c |
||||
|
loc_0201825b: |
||||
|
0201825b: loadword 0, 0x0201835a |
||||
|
02018261: callstd 4 |
||||
|
02018263: release |
||||
|
02018264: end |
@ -0,0 +1,463 @@ |
|||||
|
#!/usr/bin/env python3 |
||||
|
|
||||
|
import json |
||||
|
from urllib.request import Request, urlopen |
||||
|
from base64 import b64encode, b64decode |
||||
|
from binascii import hexlify, unhexlify |
||||
|
from random import randrange |
||||
|
from os.path import isfile, isdir |
||||
|
from os import mkdir |
||||
|
from time import time |
||||
|
|
||||
|
charmap = { |
||||
|
' ': 0x00, |
||||
|
'é': 0x1B, |
||||
|
'0': 0xA1, |
||||
|
'1': 0xA2, |
||||
|
'2': 0xA3, |
||||
|
'3': 0xA4, |
||||
|
'4': 0xA5, |
||||
|
'5': 0xA6, |
||||
|
'6': 0xA7, |
||||
|
'7': 0xA8, |
||||
|
'8': 0xA9, |
||||
|
'9': 0xAA, |
||||
|
'!': 0xAB, |
||||
|
'?': 0xAC, |
||||
|
'.': 0xAD, |
||||
|
'-': 0xAE, |
||||
|
'…': 0xB0, |
||||
|
'“': 0xB1, |
||||
|
'”': 0xB2, |
||||
|
'‘': 0xB3, |
||||
|
'’': 0xB4, |
||||
|
'♂': 0xB5, |
||||
|
'♀': 0xB6, |
||||
|
',': 0xB8, |
||||
|
'/': 0xBA, |
||||
|
'A': 0xBB, |
||||
|
'B': 0xBC, |
||||
|
'C': 0xBD, |
||||
|
'D': 0xBE, |
||||
|
'E': 0xBF, |
||||
|
'F': 0xC0, |
||||
|
'G': 0xC1, |
||||
|
'H': 0xC2, |
||||
|
'I': 0xC3, |
||||
|
'J': 0xC4, |
||||
|
'K': 0xC5, |
||||
|
'L': 0xC6, |
||||
|
'M': 0xC7, |
||||
|
'N': 0xC8, |
||||
|
'O': 0xC9, |
||||
|
'P': 0xCA, |
||||
|
'Q': 0xCB, |
||||
|
'R': 0xCC, |
||||
|
'S': 0xCD, |
||||
|
'T': 0xCE, |
||||
|
'U': 0xCF, |
||||
|
'V': 0xD0, |
||||
|
'W': 0xD1, |
||||
|
'X': 0xD2, |
||||
|
'Y': 0xD3, |
||||
|
'Z': 0xD4, |
||||
|
'a': 0xD5, |
||||
|
'b': 0xD6, |
||||
|
'c': 0xD7, |
||||
|
'd': 0xD8, |
||||
|
'e': 0xD9, |
||||
|
'f': 0xDA, |
||||
|
'g': 0xDB, |
||||
|
'h': 0xDC, |
||||
|
'i': 0xDD, |
||||
|
'j': 0xDE, |
||||
|
'k': 0xDF, |
||||
|
'l': 0xE0, |
||||
|
'm': 0xE1, |
||||
|
'n': 0xE2, |
||||
|
'o': 0xE3, |
||||
|
'p': 0xE4, |
||||
|
'q': 0xE5, |
||||
|
'r': 0xE6, |
||||
|
's': 0xE7, |
||||
|
't': 0xE8, |
||||
|
'u': 0xE9, |
||||
|
'v': 0xEA, |
||||
|
'w': 0xEB, |
||||
|
'x': 0xEC, |
||||
|
'y': 0xED, |
||||
|
'z': 0xEE, |
||||
|
'$': 0xFF, |
||||
|
} |
||||
|
charmap_rev = {} |
||||
|
for x, y in charmap.items(): |
||||
|
charmap_rev[y] = x |
||||
|
def translate(str): |
||||
|
d = bytearray() |
||||
|
for x in str: |
||||
|
d.append(charmap[x]) |
||||
|
d.append(0xff) |
||||
|
return d |
||||
|
def translate_rev(bytes): |
||||
|
s = "" |
||||
|
for c in bytes: |
||||
|
if c == 0xff: |
||||
|
break |
||||
|
s += charmap_rev[c] |
||||
|
return s |
||||
|
|
||||
|
class BitstreamReader(): |
||||
|
def __init__(self, bytes, bytesize=8): |
||||
|
self.bytes = bytes |
||||
|
self.bytesize = bytesize |
||||
|
self.pos = 0 |
||||
|
self.bits = 0 |
||||
|
self.value = 0 |
||||
|
|
||||
|
def remaining(self): |
||||
|
if self.pos < len(self.bytes): |
||||
|
return True |
||||
|
if self.bits > 0: |
||||
|
return True |
||||
|
return False |
||||
|
|
||||
|
def read(self, count): |
||||
|
while self.bits < count: |
||||
|
if self.pos >= len(self.bytes): |
||||
|
break |
||||
|
self.value |= (self.bytes[self.pos] & ((1 << self.bytesize) - 1)) << self.bits |
||||
|
self.bits += self.bytesize |
||||
|
self.pos += 1 |
||||
|
|
||||
|
ret = self.value & ((1 << count) - 1) |
||||
|
self.value >>= count |
||||
|
self.bits -= count |
||||
|
return ret |
||||
|
|
||||
|
def bitpack(code, origbits, destbits): |
||||
|
newcode = [] |
||||
|
reader = BitstreamReader(code, origbits) |
||||
|
while reader.remaining(): |
||||
|
newcode.append(reader.read(destbits)) |
||||
|
return newcode |
||||
|
|
||||
|
def ror(val, bits): |
||||
|
return val >> bits | ((val << (32 - bits)) & (2 ** 32 - 1)) |
||||
|
|
||||
|
class Client: |
||||
|
def __init__(self, user, pwd): |
||||
|
self.token = None |
||||
|
self.uid = None |
||||
|
self.login(user, pwd) |
||||
|
|
||||
|
def makereq(self, endpoint, *args, **kwargs): |
||||
|
req = Request("https://fools2022.online/%s" % endpoint, *args, **kwargs) |
||||
|
req.add_header("User-Agent", "fools2022-client/1.1.0") |
||||
|
req.add_header("Content-Type", "application/x-www-form-urlencoded") |
||||
|
req.add_header("Accept-Encoding", "identity") |
||||
|
if self.token: |
||||
|
req.add_header("X-Foolssessiontoken", self.token) |
||||
|
return req |
||||
|
|
||||
|
def makepkt(self, cmd, data): |
||||
|
data = bitpack(data, 8, 32) |
||||
|
rnd = randrange(256) |
||||
|
|
||||
|
pkt = [rnd << 8 | cmd] + data |
||||
|
|
||||
|
magic = 0xf0dbeb15 |
||||
|
for x in pkt: |
||||
|
magic = ror(magic, 5) |
||||
|
magic ^= x |
||||
|
magic += x * 2 |
||||
|
pkt[0] = (magic & (2**16-1)) << 16 | pkt[0] |
||||
|
pkt = b64encode(bytes(bitpack(pkt, 32, 8))) |
||||
|
return self.makereq("packet/%s" % self.uid, data=pkt) |
||||
|
|
||||
|
def login(self, user, pwd): |
||||
|
data = {"u": user, "p": pwd} |
||||
|
data = json.dumps(data).encode() |
||||
|
req = self.makereq("login", data=data) |
||||
|
res = json.loads(urlopen(req).read().decode()) |
||||
|
self.token = res["data"]["session"] |
||||
|
self.uid = res["data"]["uid"] |
||||
|
|
||||
|
def getmap(self, mapid, pos=(0,0)): |
||||
|
data = [mapid >> 0, mapid >> 8, pos[0], pos[1]] |
||||
|
req = self.makepkt(0x01, data) |
||||
|
rev = b64decode(urlopen(req).read().decode()) |
||||
|
print(hexlify(rev).decode()) |
||||
|
return rev |
||||
|
|
||||
|
def trendset(self, text): |
||||
|
data = bytearray() |
||||
|
for i, x in enumerate(text): |
||||
|
data.append(x) |
||||
|
data.append(0xff) |
||||
|
req = self.makepkt(0x04, data) |
||||
|
rev = b64decode(urlopen(req).read().decode()).decode() |
||||
|
print(rev) |
||||
|
|
||||
|
def cave3(self, text): |
||||
|
data = bytearray(unhexlify("ffffffffffffffffffff")) |
||||
|
for i, x in enumerate(text): |
||||
|
data[i] = x |
||||
|
req = self.makepkt(0x06, data) |
||||
|
print(urlopen(req).read().decode()) |
||||
|
|
||||
|
def cave4gen(self, text): |
||||
|
data = bytearray() |
||||
|
for i, x in enumerate(text): |
||||
|
data.append(ord(x)) |
||||
|
data.append(0xff) |
||||
|
req = self.makepkt(0x07, data) |
||||
|
rev = b64decode(urlopen(req).read().decode())[:-1].decode() |
||||
|
print(rev) |
||||
|
|
||||
|
def cave4chk(self, cert): |
||||
|
data = cert.encode() + b"\xff" |
||||
|
req = self.makepkt(0x08, data) |
||||
|
rev = b64decode(urlopen(req).read().decode()) |
||||
|
print(rev) |
||||
|
rev = rev[4:-1] |
||||
|
for x in range(0, len(rev), 16): |
||||
|
print(rev[x:x+16]) |
||||
|
|
||||
|
def lotto(self): |
||||
|
data = b"" |
||||
|
req = self.makepkt(0x05, data) |
||||
|
rev = b64decode(urlopen(req).read().decode()) |
||||
|
print(hexlify(rev).decode()) |
||||
|
|
||||
|
def complete(self): |
||||
|
data = bytearray(unhexlify("ef7fffff7fe0ffff000000000000000000000000000000000000000000000000")) |
||||
|
data = bytearray(unhexlify("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")) |
||||
|
req = self.makepkt(0x02, data) |
||||
|
rev = b64decode(urlopen(req).read().decode()).decode() |
||||
|
print(rev) |
||||
|
|
||||
|
maps = [ |
||||
|
0x0000, |
||||
|
0x0100, |
||||
|
0x0110, |
||||
|
0x0210, |
||||
|
0x0327, |
||||
|
0x0364, |
||||
|
0x043A, |
||||
|
0x0523, |
||||
|
0x0565, |
||||
|
0x0566, |
||||
|
0x062F, |
||||
|
0x0667, |
||||
|
0x0668, |
||||
|
0x0669, |
||||
|
0x066A, |
||||
|
0x0734, |
||||
|
0x0824, |
||||
|
0x0932, |
||||
|
0x096B, |
||||
|
0x098A, |
||||
|
0x0A32, |
||||
|
0x0B2D, |
||||
|
0x0C2C, |
||||
|
0x0D3E, |
||||
|
0x0E3C, |
||||
|
0x0E6C, |
||||
|
0x0F3B, |
||||
|
0x103B, |
||||
|
0x106D, |
||||
|
0x113D, |
||||
|
0x116E, |
||||
|
0x123D, |
||||
|
0x1321, |
||||
|
0x1337, |
||||
|
0x1432, |
||||
|
0x146F, |
||||
|
0x152D, |
||||
|
0x1631, |
||||
|
0x1639, |
||||
|
0x1670, |
||||
|
0x1671, |
||||
|
0x1672, |
||||
|
0x1720, |
||||
|
0x1730, |
||||
|
0x1731, |
||||
|
0x1732, |
||||
|
0x182A, |
||||
|
0x1927, |
||||
|
0x1A3C, |
||||
|
0x1A73, |
||||
|
0x1B37, |
||||
|
0x1C2C, |
||||
|
0x1D3B, |
||||
|
0x1E33, |
||||
|
0x1E92, |
||||
|
0x1F3A, |
||||
|
0x1F79, |
||||
|
0x1F7A, |
||||
|
0x2001, |
||||
|
0x202F, |
||||
|
0x207B, |
||||
|
0x2125, |
||||
|
0x2174, |
||||
|
0x223A, |
||||
|
0x2275, |
||||
|
0x2276, |
||||
|
0x2277, |
||||
|
0x232D, |
||||
|
0x2435, |
||||
|
0x2478, |
||||
|
0x2536, |
||||
|
0x2632, |
||||
|
0x2725, |
||||
|
0x2731, |
||||
|
0x2791, |
||||
|
0x2833, |
||||
|
0x2939, |
||||
|
0x2B29, |
||||
|
0x2B7C, |
||||
|
0x2B7D, |
||||
|
0x2B7E, |
||||
|
0x2C29, |
||||
|
0x2D27, |
||||
|
0x2E2B, |
||||
|
0x2F38, |
||||
|
0x2F7F, |
||||
|
0x2F80, |
||||
|
0x2F81, |
||||
|
0x302C, |
||||
|
0x3120, |
||||
|
0x318B, |
||||
|
0x318C, |
||||
|
0x318D, |
||||
|
0x318E, |
||||
|
0x318F, |
||||
|
0x3190, |
||||
|
0x3191, |
||||
|
0x323F, |
||||
|
0x3336, |
||||
|
0x3420, |
||||
|
0x3482, |
||||
|
0x353C, |
||||
|
0x3621, |
||||
|
0x3724, |
||||
|
0x3828, |
||||
|
0x3920, |
||||
|
0x3A3E, |
||||
|
0x3B22, |
||||
|
0x3B30, |
||||
|
0x3B31, |
||||
|
0x3B32, |
||||
|
0x3C36, |
||||
|
0x3D20, |
||||
|
0x3D83, |
||||
|
0x3E31, |
||||
|
0x3E90, |
||||
|
0x3F3D, |
||||
|
0x4026, |
||||
|
0x412E, |
||||
|
0x423A, |
||||
|
0x432A, |
||||
|
0x4384, |
||||
|
0x4430, |
||||
|
0x4528, |
||||
|
0x4530, |
||||
|
0x4585, |
||||
|
0x472B, |
||||
|
0x4786, |
||||
|
0x4787, |
||||
|
0x4788, |
||||
|
0x482B, |
||||
|
0x4889, |
||||
|
0x4933, |
||||
|
0x4A34, |
||||
|
0x4B3A, |
||||
|
0x4C21, |
||||
|
0x4C93, |
||||
|
0x4D3A, |
||||
|
0x4E22, |
||||
|
0x4F21, |
||||
|
0x506F, |
||||
|
0x5133, |
||||
|
0x5134, |
||||
|
0x5135, |
||||
|
0x5136, |
||||
|
0x5137, |
||||
|
0x5160, |
||||
|
0x5211, |
||||
|
] |
||||
|
maps_skip = [ |
||||
|
# YEET maps (not always accessible) |
||||
|
0x5133, |
||||
|
0x5134, |
||||
|
0x5135, |
||||
|
0x5136, |
||||
|
0x5137, |
||||
|
0x5160 |
||||
|
] |
||||
|
|
||||
|
if __name__ == "__main__": |
||||
|
from time import sleep |
||||
|
from sys import argv |
||||
|
|
||||
|
c = Client(open(".user").read().strip(), open(".pass").read().strip()) |
||||
|
sleep(1) |
||||
|
if argv[1] == "map": |
||||
|
c.getmap(int(argv[2], 0)) |
||||
|
if argv[1] == "maps": |
||||
|
fun_map = c.getmap(0x1670) |
||||
|
fun_value = int(translate_rev(fun_map[0x25b:0x260])) |
||||
|
print("Fun value:", fun_value) |
||||
|
fdir = "maps_%03d" % fun_value |
||||
|
if not isdir(fdir): |
||||
|
mkdir(fdir) |
||||
|
sleep(1) |
||||
|
|
||||
|
# fdir = "maps" |
||||
|
# for x in range(0x10000): |
||||
|
for x in maps: |
||||
|
fname = "%s/%04X.map" % (fdir, x) |
||||
|
if isfile(fname): |
||||
|
continue |
||||
|
if x in maps_skip: |
||||
|
continue |
||||
|
print("Getting map %s..." % fname) |
||||
|
m = c.getmap(x) |
||||
|
open(fname, "wb").write(m) |
||||
|
sleep(1) |
||||
|
if argv[1] == "trend": |
||||
|
c.trendset(translate(argv[2])) |
||||
|
if argv[1] == "cave3": |
||||
|
c.cave3(translate(argv[2])) |
||||
|
if argv[1] == "cave4gen": |
||||
|
c.cave4gen(argv[2]) |
||||
|
if argv[1] == "cave4chk": |
||||
|
c.cave4chk(argv[2]) |
||||
|
if argv[1] == "complete": |
||||
|
c.getmap(int(argv[2], 0)) |
||||
|
sleep(1) |
||||
|
c.complete() |
||||
|
if argv[1] == "lotto": |
||||
|
c.lotto() |
||||
|
if argv[1] == "yeet": |
||||
|
game_corner_map = c.getmap(0x1A73) |
||||
|
sleep(1) |
||||
|
yeet_map_id = game_corner_map[0x8B0] << 0 |
||||
|
yeet_map_id |= game_corner_map[0x8B1] << 8 |
||||
|
yeet_map = c.getmap(yeet_map_id) |
||||
|
game_corner_map_fname = "maps_changing/1A73_%04X.map" % yeet_map_id |
||||
|
if not isfile(game_corner_map_fname): |
||||
|
open(game_corner_map_fname, "wb").write(game_corner_map) |
||||
|
yeet_map_fname = "maps/%04X.map" % yeet_map_id |
||||
|
if not isfile(yeet_map_fname): |
||||
|
open(yeet_map_fname, "wb").write(yeet_map) |
||||
|
sleep(1) |
||||
|
results_map = c.getmap(0x5160) |
||||
|
results_map_fname = "maps_changing/5160_%d.map" % time() |
||||
|
open(results_map_fname, "wb").write(results_map) |
||||
|
if argv[1] == "funroll": |
||||
|
fun_map = c.getmap(0x472b, (15, 10)) |
||||
|
if argv[1] == "funcheck": |
||||
|
fun_map = c.getmap(0x1670) |
||||
|
fun_value = int(translate_rev(fun_map[0x25b:0x260])) |
||||
|
print(fun_value) |
Binary file not shown.
After Width: | Height: | Size: 2.2 MiB |
@ -0,0 +1,158 @@ |
|||||
|
#!/usr/bin/env python3 |
||||
|
|
||||
|
file = open("cave5.map", "rb").read() |
||||
|
|
||||
|
def read_byte(): |
||||
|
global offset |
||||
|
val = file[offset + 0] |
||||
|
offset += 1 |
||||
|
return val |
||||
|
|
||||
|
def read_half(): |
||||
|
global offset |
||||
|
val = file[offset + 0] << 0 |
||||
|
val |= file[offset + 1] << 8 |
||||
|
offset += 2 |
||||
|
return val |
||||
|
|
||||
|
def read_word(): |
||||
|
global offset |
||||
|
val = file[offset + 0] << 0 |
||||
|
val |= file[offset + 1] << 8 |
||||
|
val |= file[offset + 2] << 16 |
||||
|
val |= file[offset + 3] << 24 |
||||
|
offset += 4 |
||||
|
return val |
||||
|
|
||||
|
def dump_loadword(): |
||||
|
dest = read_byte() |
||||
|
value = read_word() |
||||
|
print("loadword %d, 0x%08x" % (dest, value)) |
||||
|
|
||||
|
def dump_callstd(): |
||||
|
func = read_byte() |
||||
|
print("callstd %d" % func) |
||||
|
|
||||
|
def dump_call(): |
||||
|
dest = read_word() |
||||
|
print("call 0x%08x" % dest) |
||||
|
|
||||
|
def dump_callnative(): |
||||
|
dest = read_word() |
||||
|
print("callnative 0x%08x" % dest) |
||||
|
|
||||
|
def dump_compare_var_to_value(): |
||||
|
var = read_half() |
||||
|
value = read_half() |
||||
|
print("compare_var_to_value %d, %d" % (var, value)) |
||||
|
|
||||
|
def dump_goto_if(): |
||||
|
cond = read_byte() |
||||
|
dest = read_word() |
||||
|
print("goto_if %d, 0x%08x" % (cond, dest)) |
||||
|
|
||||
|
def dump_playse(): |
||||
|
song = read_half() |
||||
|
print("playse %d" % song) |
||||
|
|
||||
|
def dump_setvar(): |
||||
|
var = read_half() |
||||
|
val = read_half() |
||||
|
print("setvar %d, %d" % (var, val)) |
||||
|
|
||||
|
def dump_loadbytefromptr(): |
||||
|
var = read_byte() |
||||
|
source = read_word() |
||||
|
print("loadbytefromptr %d, 0x%08x" % (var, source)) |
||||
|
|
||||
|
def dump_setptrbyte(): |
||||
|
var = read_byte() |
||||
|
dest = read_word() |
||||
|
print("setptrbyte %d, 0x%08x" % (var, dest)) |
||||
|
|
||||
|
def dump_addvar(): |
||||
|
var = read_half() |
||||
|
val = read_half() |
||||
|
print("addvar %d, %d" % (var, val)) |
||||
|
|
||||
|
def dump_subvar(): |
||||
|
var = read_half() |
||||
|
val = read_half() |
||||
|
print("subvar %d, %d" % (var, val)) |
||||
|
|
||||
|
def dump_copyvar(): |
||||
|
var = read_half() |
||||
|
val = read_half() |
||||
|
print("copyvar %d, %d" % (var, val)) |
||||
|
|
||||
|
def dump_checkflag(): |
||||
|
flag = read_half() |
||||
|
print("checkflag %d" % flag) |
||||
|
|
||||
|
def dump_delay(): |
||||
|
frames = read_half() |
||||
|
print("delay %d" % frames) |
||||
|
|
||||
|
def dump_message(): |
||||
|
text = read_word() |
||||
|
print("message 0x%08x" % text) |
||||
|
|
||||
|
def dump_setflag(): |
||||
|
flag = read_half() |
||||
|
print("setflag %d" % flag) |
||||
|
|
||||
|
def dump_playfanfare(): |
||||
|
song = read_half() |
||||
|
print("playfanfare %d" % song) |
||||
|
|
||||
|
cmds = { |
||||
|
0x02: "end", |
||||
|
0x03: "return", |
||||
|
0x04: dump_call, |
||||
|
0x06: dump_goto_if, |
||||
|
0x09: dump_callstd, |
||||
|
0x0f: dump_loadword, |
||||
|
0x12: dump_loadbytefromptr, |
||||
|
0x13: dump_setptrbyte, |
||||
|
0x16: dump_setvar, |
||||
|
0x17: dump_addvar, |
||||
|
0x18: dump_subvar, |
||||
|
0x19: dump_copyvar, |
||||
|
0x21: dump_compare_var_to_value, |
||||
|
0x23: dump_callnative, |
||||
|
0x27: "waitstate", |
||||
|
0x28: dump_delay, |
||||
|
0x29: dump_setflag, |
||||
|
0x2b: dump_checkflag, |
||||
|
0x2f: dump_playse, |
||||
|
0x31: dump_playfanfare, |
||||
|
0x32: "waitfanfare", |
||||
|
0x5a: "faceplayer", |
||||
|
0x66: "waitmessage", |
||||
|
0x67: dump_message, |
||||
|
0x68: "closemessage", |
||||
|
0x6a: "lock", |
||||
|
0x6c: "release" |
||||
|
} |
||||
|
|
||||
|
def dump(): |
||||
|
global offset |
||||
|
while True: |
||||
|
cmd = file[offset] |
||||
|
if cmd not in cmds: |
||||
|
print("Unknown cmd: %02x" % cmd) |
||||
|
return |
||||
|
print("%08x: " % (offset - base_rel + base), end="") |
||||
|
offset += 1 |
||||
|
ex = cmds[cmd] |
||||
|
if isinstance(ex, str): |
||||
|
print(ex) |
||||
|
else: |
||||
|
ex() |
||||
|
if cmd == 0x02 or cmd == 0x03: |
||||
|
return |
||||
|
|
||||
|
base = 0x02018213 |
||||
|
base_rel = 0x213 |
||||
|
offset = (0x02018213 - base) + base_rel |
||||
|
dump() |
@ -0,0 +1,7 @@ |
|||||
|
#!/bin/sh |
||||
|
while sleep 1; do |
||||
|
while sleep 1; do |
||||
|
./client.py maps && break |
||||
|
done |
||||
|
./client.py funroll |
||||
|
done |
@ -0,0 +1,73 @@ |
|||||
|
#!/usr/bin/env python3 |
||||
|
|
||||
|
from urllib.request import urlopen, build_opener, install_opener, Request, BaseHandler |
||||
|
from http.server import BaseHTTPRequestHandler, HTTPServer |
||||
|
from base64 import b64decode, b64encode |
||||
|
from binascii import hexlify, unhexlify |
||||
|
|
||||
|
host = "localhost" |
||||
|
port = 80 |
||||
|
|
||||
|
class HTTPErrorIgnore(BaseHandler): |
||||
|
def http_response(self, request, response): |
||||
|
return response |
||||
|
install_opener(build_opener(HTTPErrorIgnore)) |
||||
|
|
||||
|
class Server(BaseHTTPRequestHandler): |
||||
|
def do_GET(self): |
||||
|
print(self.path) |
||||
|
print(self.headers) |
||||
|
self.send_response(200) |
||||
|
self.end_headers() |
||||
|
|
||||
|
def do_POST(self): |
||||
|
path = self.path |
||||
|
if path.startswith("////////"): |
||||
|
path = path[8:] |
||||
|
|
||||
|
print(path) |
||||
|
print(self.headers) |
||||
|
body = self.rfile.read(int(self.headers.get("Content-Length"))) |
||||
|
if path != "/login": |
||||
|
data = bytearray(b64decode(body)) |
||||
|
# if data[0] == 4: |
||||
|
# text = unhexlify("C8BFD0BFCC00C1C9C8C8BB00C1C3D0BF00D3C9CF00CFCAFF") |
||||
|
# for i, x in enumerate(text): |
||||
|
# data[4+i] = x |
||||
|
|
||||
|
# new = bytearray(unhexlify("02fad7c9ef7ffff76fa0ffff000000000000000000000000000000000000000000000000")) |
||||
|
# new[1] = data[1] |
||||
|
# new[2] = data[2] |
||||
|
# new[3] = data[3] |
||||
|
# data = new |
||||
|
|
||||
|
# data[4] = 0x00 |
||||
|
# data[5] = 0x00 |
||||
|
# data[6] = 0x00 |
||||
|
# data[7] = 0x00 |
||||
|
print(hexlify(data).decode()) |
||||
|
body = b64encode(data) |
||||
|
print(body) |
||||
|
|
||||
|
print("====") |
||||
|
r = Request("https://fools2022.online" + path, data=body) |
||||
|
for header in self.headers: |
||||
|
r.add_header(header, self.headers.get(header)) |
||||
|
req = urlopen(r) |
||||
|
res = req.read() |
||||
|
# print(req.code) |
||||
|
print(req.headers) |
||||
|
print(res) |
||||
|
print() |
||||
|
|
||||
|
self.send_response(req.code) |
||||
|
for header in req.headers: |
||||
|
if header == "Transfer-Encoding": |
||||
|
continue |
||||
|
self.send_header(header, req.headers.get(header)) |
||||
|
self.end_headers() |
||||
|
self.wfile.write(res) |
||||
|
|
||||
|
if __name__ == "__main__": |
||||
|
server = HTTPServer((host, port), Server) |
||||
|
server.serve_forever() |
@ -0,0 +1,3 @@ |
|||||
|
Port: |
||||
|
Clock: 49420 |
||||
|
Data: 54970 |
@ -0,0 +1 @@ |
|||||
|
!2'§è\KÏØ.k½02ÊÜÏê(ûp«t@ëQ6§vc&—IÁ@$PB¿§™yLƇŽYbÒrZO�=¬ÀE‘ãÌDœúÏh)ðÔ¡ð®Å |
@ -0,0 +1,31 @@ |
|||||
|
#!/usr/bin/env python3 |
||||
|
|
||||
|
from client import translate_rev |
||||
|
from struct import unpack_from |
||||
|
|
||||
|
class Map: |
||||
|
def __init__(self, fname): |
||||
|
self.map = open(fname, "rb").read() |
||||
|
self.baseaddr = 0x02018000 |
||||
|
|
||||
|
def getoffs(self, pos): |
||||
|
return unpack_from("<I", self.map, pos)[0] - self.baseaddr |
||||
|
|
||||
|
def readstr(self, pos): |
||||
|
b = bytearray() |
||||
|
while self.map[pos] != 0xff: |
||||
|
b.append(self.map[pos]) |
||||
|
pos += 1 |
||||
|
return translate_rev(b) |
||||
|
|
||||
|
def getname(self): |
||||
|
ptr = self.getoffs(0x28) |
||||
|
return self.readstr(ptr) |
||||
|
|
||||
|
if __name__ == "__main__": |
||||
|
from sys import argv |
||||
|
|
||||
|
if argv[1] == "name": |
||||
|
for file in argv[2:]: |
||||
|
m = Map(file) |
||||
|
print(file + ":", m.getname()) |
@ -0,0 +1,3 @@ |
|||||
|
#!/bin/bash |
||||
|
#./uniquemaps.sh | xargs ./map.py name | tee mapnames.txt |
||||
|
find maps_???/ -type f | sort | xargs ./map.py name | tee mapnames.txt |
File diff suppressed because it is too large
@ -0,0 +1,56 @@ |
|||||
|
Login: |
||||
|
/login |
||||
|
Content-Type: application/x-www-form-urlencoded |
||||
|
User-Agent: fools2022-client/1.1.0 |
||||
|
b'{"u": "pfero", "p": "<pass>"}' |
||||
|
Response: |
||||
|
b'{"error": 0, "data": {"session": "1648943817-6223807-598062-014fd637cbe966350fa894f93652b9c526227c6d19cea7e8439749dd5cb9228a", "uid": 6223807, "scope": "fools2022"}}' |
||||
|
|
||||
|
Trend setter: |
||||
|
/packet/6223807 |
||||
|
Content-Type: application/x-www-form-urlencoded |
||||
|
X-Foolssessiontoken: 1648943649-6223807-953493-063b14ace81e435d7f4a5e16331444165258c1253ff3a6b197c13b1f425e7f35 |
||||
|
User-Agent: fools2022-client/1.1.0 |
||||
|
04f18b97c8bfd0bfcc00c1c9c8c8bb00c1c3d0bf00d3c9cf00cfcaff0000c04600000000 |
||||
|
|
||||
|
Ball collection: |
||||
|
/packet/6223807 |
||||
|
024bccccef7ffff76da0ffff000000000000000000000000000000000000000000000000 |
||||
|
02849dccef7fffff6fa0ffff000000000000000000000000000000000000000000000000 |
||||
|
Response: |
||||
|
b'CLPD' |
||||
|
|
||||
|
Ball delivery: |
||||
|
/packet/6223807 |
||||
|
02fad7c9ef7ffff76fa0ffff000000000000000000000000000000000000000000000000 |
||||
|
0202dfccef7fffff7fa0ffff000000000000000000000000000000000000000000000000 |
||||
|
Response: |
||||
|
b'CLPD' |
||||
|
|
||||
|
Mystery zone: |
||||
|
01097339e700d9e2 |
||||
|
|
||||
|
Challenge 3: |
||||
|
062b4f5dffffffffffffffffffffc046 |
||||
|
0699162dbbbbbbbbbbbbbbbbbbbbc046 |
||||
|
|
||||
|
Getting exploitation expert title: |
||||
|
02d7b0cdef7fffff7fe0ffff000000000000000000000000000000000000000000000000 |
||||
|
|
||||
|
|
||||
|
YEET: |
||||
|
Play maps: |
||||
|
0x5133 |
||||
|
0x5134 |
||||
|
0x5135 |
||||
|
0x5136 |
||||
|
0x5137 |
||||
|
End map: |
||||
|
0x5160 |
||||
|
|
||||
|
Fun value roll: |
||||
|
0150080e86470408 |
||||
|
01be17082b470f0a |
||||
|
|
||||
|
Fun value check: |
||||
|
014a1a5c70160408 |
@ -0,0 +1,362 @@ |
|||||
|
setvar 32769, 6969 |
||||
|
|
||||
|
; *32769 += str[0] |
||||
|
loadbytefromptr 0, 0x02021dc4 ; str[0] |
||||
|
setptrbyte 0, 0x02018372 |
||||
|
addvar 32769, 0 |
||||
|
|
||||
|
; *32769 *= 73 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x02018399 |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x0201839a |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 73 |
||||
|
loc_02018396: |
||||
|
addvar 32769, 0 ; 0x020375da |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_02018396 |
||||
|
|
||||
|
; *32769 += 6367 |
||||
|
addvar 32769, 6367 |
||||
|
|
||||
|
; *32769 += str[1] |
||||
|
loadbytefromptr 0, 0x02021dc5 ; str[1] |
||||
|
setptrbyte 0, 0x020183bf |
||||
|
addvar 32769, 0 |
||||
|
|
||||
|
; *32769 *= 97 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x020183e6 |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x020183e7 |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 97 |
||||
|
loc_020183e3: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_020183e3 |
||||
|
|
||||
|
; *32769 += 5099 |
||||
|
addvar 32769, 5099 |
||||
|
loadbytefromptr 0, 0x02021dc6 ; str[2] |
||||
|
setptrbyte 0, 0x0201840c |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x02018433 |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x02018434 |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 13 |
||||
|
|
||||
|
loc_02018430: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_02018430 |
||||
|
|
||||
|
addvar 32769, 4591 |
||||
|
loadbytefromptr 0, 0x02021dc7 ; str[3] |
||||
|
setptrbyte 0, 0x02018459 |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x02018480 |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x02018481 |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 41 |
||||
|
|
||||
|
loc_0201847d: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_0201847d |
||||
|
|
||||
|
addvar 32769, 4421 |
||||
|
loadbytefromptr 0, 0x02021dc8 ; str[4] |
||||
|
setptrbyte 0, 0x020184a6 |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x020184cd |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x020184ce |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 67 |
||||
|
|
||||
|
loc_020184ca: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_020184ca |
||||
|
|
||||
|
addvar 32769, 4831 |
||||
|
loadbytefromptr 0, 0x02021dc9 ; str[5] |
||||
|
setptrbyte 0, 0x020184f3 |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x0201851a |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x0201851b |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 101 |
||||
|
|
||||
|
loc_02018517: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_02018517 |
||||
|
|
||||
|
addvar 32769, 3581 |
||||
|
loadbytefromptr 0, 0x02021dca ; str[6] |
||||
|
setptrbyte 0, 0x02018540 |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x02018567 |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x02018568 |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 89 |
||||
|
|
||||
|
loc_0201856: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_02018564 |
||||
|
|
||||
|
addvar 32769, 5039 |
||||
|
loadbytefromptr 0, 0x02021dcb ; str[7] |
||||
|
setptrbyte 0, 0x0201858d |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x020185b4 |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x020185b5 |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 139 |
||||
|
|
||||
|
loc_020185b1: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_020185b1 |
||||
|
|
||||
|
addvar 32769, 5279 |
||||
|
loadbytefromptr 0, 0x02021dcc ; str[8] |
||||
|
setptrbyte 0, 0x020185da |
||||
|
addvar 32769, 0 |
||||
|
|
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x02018601 |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x02018602 |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 71 |
||||
|
loc_020185fe: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_020185fe |
||||
|
|
||||
|
addvar 32769, 4079 |
||||
|
loadbytefromptr 0, 0x02021dcd ; str[9] |
||||
|
setptrbyte 0, 0x02018627 |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
|
||||
|
setptrbyte 0, 0x0201864e |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x0201864f |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 83 |
||||
|
loc_0201864b: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_0201864b |
||||
|
|
||||
|
addvar 32769, 4021 |
||||
|
|
||||
|
copyvar 32771, 32769 |
||||
|
|
||||
|
setvar 32769, 1337 |
||||
|
loadbytefromptr 0, 0x02021dc4 |
||||
|
setptrbyte 0, 0x0201867e |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x020186a5 |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x020186a6 |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 59 |
||||
|
|
||||
|
loc_020186a2: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_020186a2 |
||||
|
|
||||
|
addvar 32769, 3701 |
||||
|
loadbytefromptr 0, 0x02021dc5 |
||||
|
setptrbyte 0, 0x020186cb |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x020186f2 |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x020186f3 |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 181 |
||||
|
|
||||
|
loc_020186ef: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_020186ef |
||||
|
|
||||
|
addvar 32769, 4603 |
||||
|
loadbytefromptr 0, 0x02021dc6 |
||||
|
setptrbyte 0, 0x02018718 |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x0201873f |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x02018740 |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 127 |
||||
|
|
||||
|
loc_0201873c: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_0201873c |
||||
|
|
||||
|
addvar 32769, 4663 |
||||
|
loadbytefromptr 0, 0x02021dc7 |
||||
|
setptrbyte 0, 0x02018765 |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x0201878c |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x0201878d |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 163 |
||||
|
|
||||
|
loc_02018789: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_02018789 |
||||
|
|
||||
|
addvar 32769, 4703 |
||||
|
loadbytefromptr 0, 0x02021dc8 |
||||
|
setptrbyte 0, 0x020187b2 |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x020187d9 |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x020187da |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 103 |
||||
|
|
||||
|
loc_020187d6: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_020187d6 |
||||
|
|
||||
|
addvar 32769, 4219 |
||||
|
loadbytefromptr 0, 0x02021dc9 |
||||
|
setptrbyte 0, 0x020187ff |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x02018826 |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x02018827 |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 163 |
||||
|
|
||||
|
loc_02018823: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_02018823 |
||||
|
|
||||
|
addvar 32769, 6481 |
||||
|
loadbytefromptr 0, 0x02021dca |
||||
|
setptrbyte 0, 0x0201884c |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x02018873 |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x02018874 |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 149 |
||||
|
|
||||
|
loc_02018870: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_02018870 |
||||
|
|
||||
|
addvar 32769, 6983 |
||||
|
loadbytefromptr 0, 0x02021dcb |
||||
|
setptrbyte 0, 0x02018899 |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x020188c0 |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x020188c1 |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 193 |
||||
|
|
||||
|
loc_020188bd: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_020188bd |
||||
|
|
||||
|
addvar 32769, 5407 |
||||
|
loadbytefromptr 0, 0x02021dcc |
||||
|
setptrbyte 0, 0x020188e6 |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x0201890d |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x0201890e |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 211 |
||||
|
|
||||
|
loc_0201890a: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_0201890a |
||||
|
|
||||
|
addvar 32769, 5297 |
||||
|
loadbytefromptr 0, 0x02021dcd |
||||
|
setptrbyte 0, 0x02018933 |
||||
|
addvar 32769, 0 |
||||
|
loadbytefromptr 0, 0x020375da |
||||
|
setptrbyte 0, 0x0201895a |
||||
|
loadbytefromptr 0, 0x020375db |
||||
|
setptrbyte 0, 0x0201895b |
||||
|
setvar 32769, 0 |
||||
|
setvar 32770, 151 |
||||
|
|
||||
|
loc_02018957: |
||||
|
addvar 32769, 0 |
||||
|
subvar 32770, 1 |
||||
|
compare_var_to_value 32770, 0 |
||||
|
goto_if 5, loc_02018957 |
||||
|
|
||||
|
addvar 32769, 5099 |
||||
|
compare_var_to_value 32771, 45295 |
||||
|
goto_if 5, loc_0201898d |
||||
|
compare_var_to_value 32769, 54457 |
||||
|
goto_if 5, loc_0201898d |
||||
|
setvar 32781, 1 |
||||
|
return |
||||
|
loc_0201898d: |
||||
|
setvar 32781, 0 |
||||
|
return |
@ -0,0 +1,19 @@ |
|||||
|
020182ad: lock |
||||
|
020182ae: faceplayer |
||||
|
020182af: loadword 0, 0x02018993 |
||||
|
020182b5: callstd 4 |
||||
|
020182b7: call 0x020182fd |
||||
|
020182bc: callnative 0x0203d075 |
||||
|
020182c1: waitstate |
||||
|
020182c2: call 0x0201835e |
||||
|
020182c7: compare_var_to_value 32781, 0 |
||||
|
020182cc: goto_if 1, 0x020182f3 |
||||
|
020182d2: loadword 0, 0x020189b6 |
||||
|
020182d8: callstd 4 |
||||
|
020182da: callnative 0x02018233 |
||||
|
020182df: call 0x0203e17c |
||||
|
020182e4: playse 40 |
||||
|
020182e7: callnative 0x02018263 |
||||
|
020182ec: callnative 0x08089c35 |
||||
|
020182f1: release |
||||
|
020182f2: end |
@ -0,0 +1,289 @@ |
|||||
|
0201835e: setvar 32769, 6969 |
||||
|
02018363: loadbytefromptr 0, 0x02021dc4 |
||||
|
02018369: setptrbyte 0, 0x02018372 |
||||
|
0201836f: addvar 32769, 0 |
||||
|
02018374: loadbytefromptr 0, 0x020375da |
||||
|
0201837a: setptrbyte 0, 0x02018399 |
||||
|
02018380: loadbytefromptr 0, 0x020375db |
||||
|
02018386: setptrbyte 0, 0x0201839a |
||||
|
0201838c: setvar 32769, 0 |
||||
|
02018391: setvar 32770, 73 |
||||
|
02018396: addvar 32769, 0 |
||||
|
0201839b: subvar 32770, 1 |
||||
|
020183a0: compare_var_to_value 32770, 0 |
||||
|
020183a5: goto_if 5, 0x02018396 |
||||
|
020183ab: addvar 32769, 6367 |
||||
|
020183b0: loadbytefromptr 0, 0x02021dc5 |
||||
|
020183b6: setptrbyte 0, 0x020183bf |
||||
|
020183bc: addvar 32769, 0 |
||||
|
020183c1: loadbytefromptr 0, 0x020375da |
||||
|
020183c7: setptrbyte 0, 0x020183e6 |
||||
|
020183cd: loadbytefromptr 0, 0x020375db |
||||
|
020183d3: setptrbyte 0, 0x020183e7 |
||||
|
020183d9: setvar 32769, 0 |
||||
|
020183de: setvar 32770, 97 |
||||
|
020183e3: addvar 32769, 0 |
||||
|
020183e8: subvar 32770, 1 |
||||
|
020183ed: compare_var_to_value 32770, 0 |
||||
|
020183f2: goto_if 5, 0x020183e3 |
||||
|
020183f8: addvar 32769, 5099 |
||||
|
020183fd: loadbytefromptr 0, 0x02021dc6 |
||||
|
02018403: setptrbyte 0, 0x0201840c |
||||
|
02018409: addvar 32769, 0 |
||||
|
0201840e: loadbytefromptr 0, 0x020375da |
||||
|
02018414: setptrbyte 0, 0x02018433 |
||||
|
0201841a: loadbytefromptr 0, 0x020375db |
||||
|
02018420: setptrbyte 0, 0x02018434 |
||||
|
02018426: setvar 32769, 0 |
||||
|
0201842b: setvar 32770, 13 |
||||
|
02018430: addvar 32769, 0 |
||||
|
02018435: subvar 32770, 1 |
||||
|
0201843a: compare_var_to_value 32770, 0 |
||||
|
0201843f: goto_if 5, 0x02018430 |
||||
|
02018445: addvar 32769, 4591 |
||||
|
0201844a: loadbytefromptr 0, 0x02021dc7 |
||||
|
02018450: setptrbyte 0, 0x02018459 |
||||
|
02018456: addvar 32769, 0 |
||||
|
0201845b: loadbytefromptr 0, 0x020375da |
||||
|
02018461: setptrbyte 0, 0x02018480 |
||||
|
02018467: loadbytefromptr 0, 0x020375db |
||||
|
0201846d: setptrbyte 0, 0x02018481 |
||||
|
02018473: setvar 32769, 0 |
||||
|
02018478: setvar 32770, 41 |
||||
|
0201847d: addvar 32769, 0 |
||||
|
02018482: subvar 32770, 1 |
||||
|
02018487: compare_var_to_value 32770, 0 |
||||
|
0201848c: goto_if 5, 0x0201847d |
||||
|
02018492: addvar 32769, 4421 |
||||
|
02018497: loadbytefromptr 0, 0x02021dc8 |
||||
|
0201849d: setptrbyte 0, 0x020184a6 |
||||
|
020184a3: addvar 32769, 0 |
||||
|
020184a8: loadbytefromptr 0, 0x020375da |
||||
|
020184ae: setptrbyte 0, 0x020184cd |
||||
|
020184b4: loadbytefromptr 0, 0x020375db |
||||
|
020184ba: setptrbyte 0, 0x020184ce |
||||
|
020184c0: setvar 32769, 0 |
||||
|
020184c5: setvar 32770, 67 |
||||
|
020184ca: addvar 32769, 0 |
||||
|
020184cf: subvar 32770, 1 |
||||
|
020184d4: compare_var_to_value 32770, 0 |
||||
|
020184d9: goto_if 5, 0x020184ca |
||||
|
020184df: addvar 32769, 4831 |
||||
|
020184e4: loadbytefromptr 0, 0x02021dc9 |
||||
|
020184ea: setptrbyte 0, 0x020184f3 |
||||
|
020184f0: addvar 32769, 0 |
||||
|
020184f5: loadbytefromptr 0, 0x020375da |
||||
|
020184fb: setptrbyte 0, 0x0201851a |
||||
|
02018501: loadbytefromptr 0, 0x020375db |
||||
|
02018507: setptrbyte 0, 0x0201851b |
||||
|
0201850d: setvar 32769, 0 |
||||
|
02018512: setvar 32770, 101 |
||||
|
02018517: addvar 32769, 0 |
||||
|
0201851c: subvar 32770, 1 |
||||
|
02018521: compare_var_to_value 32770, 0 |
||||
|
02018526: goto_if 5, 0x02018517 |
||||
|
0201852c: addvar 32769, 3581 |
||||
|
02018531: loadbytefromptr 0, 0x02021dca |
||||
|
02018537: setptrbyte 0, 0x02018540 |
||||
|
0201853d: addvar 32769, 0 |
||||
|
02018542: loadbytefromptr 0, 0x020375da |
||||
|
02018548: setptrbyte 0, 0x02018567 |
||||
|
0201854e: loadbytefromptr 0, 0x020375db |
||||
|
02018554: setptrbyte 0, 0x02018568 |
||||
|
0201855a: setvar 32769, 0 |
||||
|
0201855f: setvar 32770, 89 |
||||
|
02018564: addvar 32769, 0 |
||||
|
02018569: subvar 32770, 1 |
||||
|
0201856e: compare_var_to_value 32770, 0 |
||||
|
02018573: goto_if 5, 0x02018564 |
||||
|
02018579: addvar 32769, 5039 |
||||
|
0201857e: loadbytefromptr 0, 0x02021dcb |
||||
|
02018584: setptrbyte 0, 0x0201858d |
||||
|
0201858a: addvar 32769, 0 |
||||
|
0201858f: loadbytefromptr 0, 0x020375da |
||||
|
02018595: setptrbyte 0, 0x020185b4 |
||||
|
0201859b: loadbytefromptr 0, 0x020375db |
||||
|
020185a1: setptrbyte 0, 0x020185b5 |
||||
|
020185a7: setvar 32769, 0 |
||||
|
020185ac: setvar 32770, 139 |
||||
|
020185b1: addvar 32769, 0 |
||||
|
020185b6: subvar 32770, 1 |
||||
|
020185bb: compare_var_to_value 32770, 0 |
||||
|
020185c0: goto_if 5, 0x020185b1 |
||||
|
020185c6: addvar 32769, 5279 |
||||
|
020185cb: loadbytefromptr 0, 0x02021dcc |
||||
|
020185d1: setptrbyte 0, 0x020185da |
||||
|
020185d7: addvar 32769, 0 |
||||
|
020185dc: loadbytefromptr 0, 0x020375da |
||||
|
020185e2: setptrbyte 0, 0x02018601 |
||||
|
020185e8: loadbytefromptr 0, 0x020375db |
||||
|
020185ee: setptrbyte 0, 0x02018602 |
||||
|
020185f4: setvar 32769, 0 |
||||
|
020185f9: setvar 32770, 71 |
||||
|
020185fe: addvar 32769, 0 |
||||
|
02018603: subvar 32770, 1 |
||||
|
02018608: compare_var_to_value 32770, 0 |
||||
|
0201860d: goto_if 5, 0x020185fe |
||||
|
02018613: addvar 32769, 4079 |
||||
|
02018618: loadbytefromptr 0, 0x02021dcd |
||||
|
0201861e: setptrbyte 0, 0x02018627 |
||||
|
02018624: addvar 32769, 0 |
||||
|
02018629: loadbytefromptr 0, 0x020375da |
||||
|
0201862f: setptrbyte 0, 0x0201864e |
||||
|
02018635: loadbytefromptr 0, 0x020375db |
||||
|
0201863b: setptrbyte 0, 0x0201864f |
||||
|
02018641: setvar 32769, 0 |
||||
|
02018646: setvar 32770, 83 |
||||
|
0201864b: addvar 32769, 0 |
||||
|
02018650: subvar 32770, 1 |
||||
|
02018655: compare_var_to_value 32770, 0 |
||||
|
0201865a: goto_if 5, 0x0201864b |
||||
|
02018660: addvar 32769, 4021 |
||||
|
02018665: copyvar 32771, 32769 |
||||
|
0201866a: setvar 32769, 1337 |
||||
|
0201866f: loadbytefromptr 0, 0x02021dc4 |
||||
|
02018675: setptrbyte 0, 0x0201867e |
||||
|
0201867b: addvar 32769, 0 |
||||
|
02018680: loadbytefromptr 0, 0x020375da |
||||
|
02018686: setptrbyte 0, 0x020186a5 |
||||
|
0201868c: loadbytefromptr 0, 0x020375db |
||||
|
02018692: setptrbyte 0, 0x020186a6 |
||||
|
02018698: setvar 32769, 0 |
||||
|
0201869d: setvar 32770, 59 |
||||
|
020186a2: addvar 32769, 0 |
||||
|
020186a7: subvar 32770, 1 |
||||
|
020186ac: compare_var_to_value 32770, 0 |
||||
|
020186b1: goto_if 5, 0x020186a2 |
||||
|
020186b7: addvar 32769, 3701 |
||||
|
020186bc: loadbytefromptr 0, 0x02021dc5 |
||||
|
020186c2: setptrbyte 0, 0x020186cb |
||||
|
020186c8: addvar 32769, 0 |
||||
|
020186cd: loadbytefromptr 0, 0x020375da |
||||
|
020186d3: setptrbyte 0, 0x020186f2 |
||||
|
020186d9: loadbytefromptr 0, 0x020375db |
||||
|
020186df: setptrbyte 0, 0x020186f3 |
||||
|
020186e5: setvar 32769, 0 |
||||
|
020186ea: setvar 32770, 181 |
||||
|
020186ef: addvar 32769, 0 |
||||
|
020186f4: subvar 32770, 1 |
||||
|
020186f9: compare_var_to_value 32770, 0 |
||||
|
020186fe: goto_if 5, 0x020186ef |
||||
|
02018704: addvar 32769, 4603 |
||||
|
02018709: loadbytefromptr 0, 0x02021dc6 |
||||
|
0201870f: setptrbyte 0, 0x02018718 |
||||
|
02018715: addvar 32769, 0 |
||||
|
0201871a: loadbytefromptr 0, 0x020375da |
||||
|
02018720: setptrbyte 0, 0x0201873f |
||||
|
02018726: loadbytefromptr 0, 0x020375db |
||||
|
0201872c: setptrbyte 0, 0x02018740 |
||||
|
02018732: setvar 32769, 0 |
||||
|
02018737: setvar 32770, 127 |
||||
|
0201873c: addvar 32769, 0 |
||||
|
02018741: subvar 32770, 1 |
||||
|
02018746: compare_var_to_value 32770, 0 |
||||
|
0201874b: goto_if 5, 0x0201873c |
||||
|
02018751: addvar 32769, 4663 |
||||
|
02018756: loadbytefromptr 0, 0x02021dc7 |
||||
|
0201875c: setptrbyte 0, 0x02018765 |
||||
|
02018762: addvar 32769, 0 |
||||
|
02018767: loadbytefromptr 0, 0x020375da |
||||
|
0201876d: setptrbyte 0, 0x0201878c |
||||
|
02018773: loadbytefromptr 0, 0x020375db |
||||
|
02018779: setptrbyte 0, 0x0201878d |
||||
|
0201877f: setvar 32769, 0 |
||||
|
02018784: setvar 32770, 163 |
||||
|
02018789: addvar 32769, 0 |
||||
|
0201878e: subvar 32770, 1 |
||||
|
02018793: compare_var_to_value 32770, 0 |
||||
|
02018798: goto_if 5, 0x02018789 |
||||
|
0201879e: addvar 32769, 4703 |
||||
|
020187a3: loadbytefromptr 0, 0x02021dc8 |
||||
|
020187a9: setptrbyte 0, 0x020187b2 |
||||
|
020187af: addvar 32769, 0 |
||||
|
020187b4: loadbytefromptr 0, 0x020375da |
||||
|
020187ba: setptrbyte 0, 0x020187d9 |
||||
|
020187c0: loadbytefromptr 0, 0x020375db |
||||
|
020187c6: setptrbyte 0, 0x020187da |
||||
|
020187cc: setvar 32769, 0 |
||||
|
020187d1: setvar 32770, 103 |
||||
|
020187d6: addvar 32769, 0 |
||||
|
020187db: subvar 32770, 1 |
||||
|
020187e0: compare_var_to_value 32770, 0 |
||||
|
020187e5: goto_if 5, 0x020187d6 |
||||
|
020187eb: addvar 32769, 4219 |
||||
|
020187f0: loadbytefromptr 0, 0x02021dc9 |
||||
|
020187f6: setptrbyte 0, 0x020187ff |
||||
|
020187fc: addvar 32769, 0 |
||||
|
02018801: loadbytefromptr 0, 0x020375da |
||||
|
02018807: setptrbyte 0, 0x02018826 |
||||
|
0201880d: loadbytefromptr 0, 0x020375db |
||||
|
02018813: setptrbyte 0, 0x02018827 |
||||
|
02018819: setvar 32769, 0 |
||||
|
0201881e: setvar 32770, 163 |
||||
|
02018823: addvar 32769, 0 |
||||
|
02018828: subvar 32770, 1 |
||||
|
0201882d: compare_var_to_value 32770, 0 |
||||
|
02018832: goto_if 5, 0x02018823 |
||||
|
02018838: addvar 32769, 6481 |
||||
|
0201883d: loadbytefromptr 0, 0x02021dca |
||||
|
02018843: setptrbyte 0, 0x0201884c |
||||
|
02018849: addvar 32769, 0 |
||||
|
0201884e: loadbytefromptr 0, 0x020375da |
||||
|
02018854: setptrbyte 0, 0x02018873 |
||||
|
0201885a: loadbytefromptr 0, 0x020375db |
||||
|
02018860: setptrbyte 0, 0x02018874 |
||||
|
02018866: setvar 32769, 0 |
||||
|
0201886b: setvar 32770, 149 |
||||
|
02018870: addvar 32769, 0 |
||||
|
02018875: subvar 32770, 1 |
||||
|
0201887a: compare_var_to_value 32770, 0 |
||||
|
0201887f: goto_if 5, 0x02018870 |
||||
|
02018885: addvar 32769, 6983 |
||||
|
0201888a: loadbytefromptr 0, 0x02021dcb |
||||
|
02018890: setptrbyte 0, 0x02018899 |
||||
|
02018896: addvar 32769, 0 |
||||
|
0201889b: loadbytefromptr 0, 0x020375da |
||||
|
020188a1: setptrbyte 0, 0x020188c0 |
||||
|
020188a7: loadbytefromptr 0, 0x020375db |
||||
|
020188ad: setptrbyte 0, 0x020188c1 |
||||
|
020188b3: setvar 32769, 0 |
||||
|
020188b8: setvar 32770, 193 |
||||
|
020188bd: addvar 32769, 0 |
||||
|
020188c2: subvar 32770, 1 |
||||
|
020188c7: compare_var_to_value 32770, 0 |
||||
|
020188cc: goto_if 5, 0x020188bd |
||||
|
020188d2: addvar 32769, 5407 |
||||
|
020188d7: loadbytefromptr 0, 0x02021dcc |
||||
|
020188dd: setptrbyte 0, 0x020188e6 |
||||
|
020188e3: addvar 32769, 0 |
||||
|
020188e8: loadbytefromptr 0, 0x020375da |
||||
|
020188ee: setptrbyte 0, 0x0201890d |
||||
|
020188f4: loadbytefromptr 0, 0x020375db |
||||
|
020188fa: setptrbyte 0, 0x0201890e |
||||
|
02018900: setvar 32769, 0 |
||||
|
02018905: setvar 32770, 211 |
||||
|
0201890a: addvar 32769, 0 |
||||
|
0201890f: subvar 32770, 1 |
||||
|
02018914: compare_var_to_value 32770, 0 |
||||
|
02018919: goto_if 5, 0x0201890a |
||||
|
0201891f: addvar 32769, 5297 |
||||
|
02018924: loadbytefromptr 0, 0x02021dcd |
||||
|
0201892a: setptrbyte 0, 0x02018933 |
||||
|
02018930: addvar 32769, 0 |
||||
|
02018935: loadbytefromptr 0, 0x020375da |
||||
|
0201893b: setptrbyte 0, 0x0201895a |
||||
|
02018941: loadbytefromptr 0, 0x020375db |
||||
|
02018947: setptrbyte 0, 0x0201895b |
||||
|
0201894d: setvar 32769, 0 |
||||
|
02018952: setvar 32770, 151 |
||||
|
02018957: addvar 32769, 0 |
||||
|
0201895c: subvar 32770, 1 |
||||
|
02018961: compare_var_to_value 32770, 0 |
||||
|
02018966: goto_if 5, 0x02018957 |
||||
|
0201896c: addvar 32769, 5099 |
||||
|
02018971: compare_var_to_value 32771, 45295 |
||||
|
02018976: goto_if 5, 0x0201898d |
||||
|
0201897c: compare_var_to_value 32769, 54457 |
||||
|
02018981: goto_if 5, 0x0201898d |
||||
|
02018987: setvar 32781, 1 |
||||
|
0201898c: return |
@ -0,0 +1,3 @@ |
|||||
|
#!/bin/sh |
||||
|
|
||||
|
sha256sum maps/*.map | grep -v '^81974fba47083477159db7fc4ad40fda4adc0bde504f3d9a911cc61cf76ed5e9 ' | awk '{print $2}' |
@ -0,0 +1,30 @@ |
|||||
|
=============================================================================== |
||||
|
THEZZAZZGLITCH'S FOOLS2022 - WHOLESOME REWARD |
||||
|
=============================================================================== |
||||
|
|
||||
|
Thank you for donating. You might not realize it, but it's been 7 years since |
||||
|
the first April Fools Event. Despite being a grown-ass man with a job and many |
||||
|
other responsibilities, I still do my best to keep this silly tradition going. |
||||
|
|
||||
|
Did you know that I took a two week unpaid leave, just to work on Fools2022? |
||||
|
This was possible only because of your support last year. Thanks to this, |
||||
|
I was able to create a fully-online event, akin to 2018 one, while also taking |
||||
|
a leap to newer generation of games. |
||||
|
|
||||
|
That being said, the Fools Events are possible only because of your continued |
||||
|
support. Whether you donate, or just enjoy the gameplay - you're playing a big |
||||
|
role in the Fools Event legacy. Thank you for being part of this wonderful |
||||
|
community and helping keep this long-living tradition alive! |
||||
|
|
||||
|
Use the following code to unlock your Wholesome Reward perks: |
||||
|
0mG-y0Ur3-s0-AMaZ1nG-I-wAn7-T0-G1v3-U-M1lL10n5-0f-hUg5 |
||||
|
|
||||
|
Want to claim your reward? |
||||
|
- Go to the event site: https://zzazzdzz.github.io/fools2022 |
||||
|
- Log in, or register if you haven't already |
||||
|
- Go to Settings |
||||
|
- Enter the code at the very bottom of the page |
||||
|
|
||||
|
Hope you're having a nice day. Have fun exploring Glitchland! |
||||
|
|
||||
|
~ TheZZAZZGlitch |
Loading…
Reference in new issue