Skip to content

Instantly share code, notes, and snippets.

@chayleaf
Last active August 22, 2023 18:12
Show Gist options
  • Save chayleaf/1a89365f833afa1ccb49b66f9707015c to your computer and use it in GitHub Desktop.
Save chayleaf/1a89365f833afa1ccb49b66f9707015c to your computer and use it in GitHub Desktop.
needy girl overdose/needy streamer overload localization extraction
import struct
import sys
class Reader:
def __init__(self, f):
self.f = f
self.t = 0
def r(self, n):
ret = self.f.read(n)
self.t += len(ret)
return ret
def u32(self):
self.p(4)
return struct.unpack('<I', self.f.read(4))[0]
def s(self):
# print('t', self.t)
return self.r(self.u32()).decode('utf-8')
def p(self, n):
if self.t % n != 0:
self.r(n - self.t % n)
langs = [
'ja',
'en',
'c1',
'kr',
'c2',
'idk',
'idk',
'idk',
'idk',
'idk',
]
x = sys.argv[1]
line = 'Line' in x
alpha = 'Alpha' in x
beta = 'Beta' in x
# act = 'Act' in x
cmd = 'Cmd' in x
ego = 'Egosa' in x
end = 'Ending' in x
fox = 'Kitune' in x
k1 = 'KRep' in x
k2 = 'KusoCom' in x
mob = 'MobCom' in x
st = 'statuses' in x
syst = 'System' in x
tool = 'Tooltip' in x
tw = 'Tweet' in x
yaku = 'yakujo' in x
# if cmd: langs = langs[:-1]
if beta or alpha: langs = ['ja']
with open(x, 'rb') as f:
r = Reader(f)
n = r.u32()
for i in range(n):
# print('i', i)
if st:
print(r.u32())
r.u32()
print(r.u32())
r.u32()
print(r.s())
if yaku:
print(r.s())
print(r.s())
if k1:
print(r.s())
print(r.s())
print(r.s())
if mob:
print(r.u32())
if fox:
print(r.s())
print(r.u32())
if tool:
print(r.s())
print(r.s())
if ego:
print(r.s())
print(r.s())
if cmd:
print(r.s())
if line:
print(r.s())
print(r.s())
if tw:
print(r.s())
print(r.s())
for i in range(3 if end else 2 if cmd or tw else 0 if st else 1):
for lang in langs:
s = r.s()
if lang == 'ja':
print(s)
#else:
# print('a', s)
if tw:
print(r.s())
print(r.u32())
print(r.u32())
if alpha:
print(r.u32())
print(r.u32())
print(r.u32())
print(r.u32())
print(r.u32())
if beta:
print(r.u32())
print(r.u32())
print(r.u32())
print(r.u32())
if cmd:
print(r.s())
for i in range(14):
r.u32()
if line:
print(r.s())
print(r.s())
if k1:
print(r.s())
if k2:
print(r.s())
if mob:
print(r.s())
print(r.s())
if syst:
print(r.s())
print(r.s())
if st:
r.u32()
r.u32()
print()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment