Skip to content

Instantly share code, notes, and snippets.

@Kalaborative
Last active February 1, 2019 14:53
Show Gist options
  • Save Kalaborative/31ff830b79cee4a1c487966e1a0f3718 to your computer and use it in GitHub Desktop.
Save Kalaborative/31ff830b79cee4a1c487966e1a0f3718 to your computer and use it in GitHub Desktop.
Survivio deobfuscation script
import json
obfuscate = {}
main_module_finder = '"error", "sendMessageException"),'
init_module_finder = "this.particle.fadeOut(),"
free_module_finder = 'this.particle.fadeOut(),'
update_module_finder = "this.initialized && this.playing"
render_module_finder = ".newEmotes = [],"
sendMessage_module_finder = 'error", "sendMessageException")'
processGame_module_finder = 'audioManager: this'
emoteManager_finder = 'var t = (e = {},'
camera_finder = ',this.config),'
targetZoom_finder = 'debugZoom'
activePlayer_finder = 'zoomFast ? 3 : 2'
input_finder = ',this.canvasMode),'
keyPressed_finder = '!this.keysOld[e] && !!this.keys[e]'
mousePressed_finder = 'this.mouseButtonsOld[e] && !!this.mouseButtons[e]'
mouseDown_finder = 'return !!this.keysOld'
smokeBarn_finder = 'r.render = r.render || {},'
map_finder = 'Type.Obstacle, this'
smokePool_finder = 'this.sprite.anchor = new n.Point(.5,.5),'
pieTimer_finder = 'updateAmbience:'
lootBarn_finder = '(this.canvasMode),'
obstaclePool_finder = 'mapTexture = null'
buildingPool_finder = 'Creator;'
pool_finder = 'this.activeCount = 0'
playerBarn_finder = '.weapsDirty = !0),'
playerPool_finder = 'Type.Player, this'
playerInfo_finder = 'teamInfo = {},'
activeId_finder = 'debugZoom = 1'
objectCreator_finder = 'e.delObjIds['
netData_finder = 'noCeilingRevealTicker = 0'
closestLoot_finder = 'sprite.scale.set(.8, .8),'
activeTimer_finder = 'this.container = new r.Graphics,'
def find_matching_line(file_obj, query):
match_num = False
for num, line in enumerate(file_obj, 1):
if query in line:
match_num = num
break
return match_num
def find_obfuscate_variable(file_obj, init_line, steps, symbol, variable_length):
init_line += steps
res = [l for f, l in enumerate(file_obj, 1) if f == init_line][0]
found_symbol = res.find(symbol)
if found_symbol == -1:
return False
else:
return res[found_symbol-variable_length:found_symbol]
with open('app.new.js', encoding="utf8") as code:
code = code.readlines()
main_module_line = find_matching_line(code, main_module_finder)
if main_module_line:
obfuscate['mainModule'] = find_obfuscate_variable(file_obj=code, init_line=main_module_line, steps=6, symbol=':', variable_length=2)
else:
print("No match for variable main.")
init_module_line = find_matching_line(code, init_module_finder)
if init_module_line:
obfuscate['init'] = find_obfuscate_variable(file_obj=code, init_line=init_module_line, steps=-2, symbol=':', variable_length=1)
else:
print("No match for variable init.")
free_module_line = find_matching_line(code, free_module_finder)
if free_module_line:
obfuscate['free'] = find_obfuscate_variable(file_obj=code, init_line=free_module_line, steps=-1, symbol=':', variable_length=1)
else:
print("No match for variable free.")
update_module_line = find_matching_line(code, update_module_finder)
if update_module_line:
obfuscate['update'] = find_obfuscate_variable(file_obj=code, init_line=update_module_line, steps=2, symbol=':', variable_length=1)
else:
print("No match for variable update.")
render_module_line = find_matching_line(code, render_module_finder)
if render_module_line:
obfuscate['render'] = find_obfuscate_variable(file_obj=code, init_line=render_module_line, steps=1, symbol='(', variable_length=2)
else:
print("No match for variable render.")
sendMessage_module_line = find_matching_line(code, sendMessage_module_finder)
if sendMessage_module_line:
obfuscate['sendMessage'] = find_obfuscate_variable(file_obj=code, init_line=sendMessage_module_line, steps=-5, symbol=':', variable_length=2)
else:
print("No match for variable sendMessage.")
processGame_module_line = find_matching_line(code, processGame_module_finder)
if processGame_module_line:
obfuscate['processGameUpdate'] = find_obfuscate_variable(file_obj=code, init_line=processGame_module_line, steps=-2, symbol=':', variable_length=2)
else:
print("No match for variable processGame.")
emoteManager_line = find_matching_line(code, emoteManager_finder)
if emoteManager_line:
obfuscate['EmoteManager'] = find_obfuscate_variable(file_obj=code, init_line=emoteManager_line, steps=-2, symbol='(', variable_length=2)
else:
print("No match for variable EmoteManager.")
camera_line = find_matching_line(code, camera_finder)
if camera_line:
obfuscate['camera'] = find_obfuscate_variable(file_obj=code, init_line=camera_line, steps=1, symbol=' =', variable_length=1)
else:
print("No match for variable camera.")
targetZoom_line = find_matching_line(code, targetZoom_finder)
if targetZoom_line:
obfuscate['targetZoom'] = find_obfuscate_variable(file_obj=code, init_line=targetZoom_line, steps=-1, symbol=' =', variable_length=1)
else:
print("No match for variable targetZoom.")
activePlayer_line = find_matching_line(code, activePlayer_finder)
if activePlayer_line:
obfuscate['activePlayer'] = find_obfuscate_variable(file_obj=code, init_line=activePlayer_line, steps=0, symbol='.z', variable_length=2)
else:
print("No match for variable activePlayer.")
input_line = find_matching_line(code, input_finder)
if input_line:
obfuscate['input'] = find_obfuscate_variable(file_obj=code, init_line=input_line, steps=-2, symbol=',this.config)', variable_length=2)
else:
print("No match for variable input.")
keyPressed_line = find_matching_line(code, keyPressed_finder)
if keyPressed_line:
obfuscate['keyPressed'] = find_obfuscate_variable(file_obj=code, init_line=keyPressed_line, steps=-1, symbol=':', variable_length=2)
else:
print("No match for variable keyPressed.")
mousePressed_line = find_matching_line(code, mousePressed_finder)
if mousePressed_line:
obfuscate['mousePressed'] = find_obfuscate_variable(file_obj=code, init_line=mousePressed_line, steps=-1, symbol=':', variable_length=2)
else:
print("No match for variable mousePressed.")
mouseDown_line = find_matching_line(code, mouseDown_finder)
if mouseDown_line:
obfuscate['mouseDown'] = find_obfuscate_variable(file_obj=code, init_line=mouseDown_line, steps=-1, symbol=':', variable_length=2)
else:
print("No match for variable mouseDown.")
smokeBarn_line = find_matching_line(code, smokeBarn_finder)
if smokeBarn_line:
obfuscate['smokeBarn'] = find_obfuscate_variable(file_obj=code, init_line=smokeBarn_line, steps=-4, symbol='.particles', variable_length=2)
else:
print("No match for variable smokeBarn.")
smokePool_line = find_matching_line(code, smokePool_finder)
if smokePool_line:
obfuscate['smokePool'] = find_obfuscate_variable(file_obj=code, init_line=smokePool_line, steps=4, symbol=' =', variable_length=1)
else:
print("No match for variable smokePool.")
map_line = find_matching_line(code, map_finder)
if map_line:
obfuscate['map'] = find_obfuscate_variable(file_obj=code, init_line=map_line, steps=-4, symbol=')', variable_length=2)
else:
print("No match for variable map.")
obstaclePool_line = find_matching_line(code, obstaclePool_finder)
if obstaclePool_line:
obfuscate['obstaclePool'] = find_obfuscate_variable(file_obj=code, init_line=obstaclePool_line, steps=1, symbol=' =', variable_length=1)
else:
print("No match for variable obstaclePool.")
buildingPool_line = find_matching_line(code, buildingPool_finder)
if buildingPool_line:
obfuscate['buildingPool'] = find_obfuscate_variable(file_obj=code, init_line=buildingPool_line, steps=-7, symbol=')', variable_length=2)
else:
print("No match for variable buildingPool.")
pool_line = find_matching_line(code, pool_finder)
if pool_line:
obfuscate['pool'] = find_obfuscate_variable(file_obj=code, init_line=pool_line, steps=-1, symbol=' =', variable_length=2)
else:
print("No match for variable pool.")
playerBarn_line = find_matching_line(code, playerBarn_finder)
if playerBarn_line:
obfuscate['playerBarn'] = find_obfuscate_variable(file_obj=code, init_line=playerBarn_line, steps=-1, symbol=')', variable_length=2)
else:
print("No match for variable playerBarn.")
playerPool_line = find_matching_line(code, playerPool_finder)
if playerPool_line:
obfuscate['playerPool'] = find_obfuscate_variable(file_obj=code, init_line=playerPool_line, steps=0, symbol=')', variable_length=2)
else:
print("No match for variable playerPool.")
playerInfo_line = find_matching_line(code, playerInfo_finder)
if playerInfo_line:
obfuscate['playerInfo'] = find_obfuscate_variable(file_obj=code, init_line=playerInfo_line, steps=-2, symbol=' =', variable_length=2)
else:
print("No match for variable playerInfo.")
activeId_line = find_matching_line(code, activeId_finder)
if activeId_line:
obfuscate['activeId'] = find_obfuscate_variable(file_obj=code, init_line=activeId_line, steps=-4, symbol=' =', variable_length=2)
else:
print("No match for variable activeId.")
objectCreator_line = find_matching_line(code, objectCreator_finder)
if objectCreator_line:
obfuscate['objectCreator'] = find_obfuscate_variable(file_obj=code, init_line=objectCreator_line, steps=1, symbol='.d', variable_length=2)
else:
print("No match for variable objectCreator.")
netData_line = find_matching_line(code, netData_finder)
if netData_line:
obfuscate['netData'] = find_obfuscate_variable(file_obj=code, init_line=netData_line, steps=5, symbol=' =', variable_length=1)
else:
print("No match for variable netData.")
pieTimer_line = find_matching_line(code, pieTimer_finder)
if pieTimer_line:
obfuscate['pieTimer'] = find_obfuscate_variable(file_obj=code, init_line=pieTimer_line, steps=-3, symbol='.render', variable_length=2)
else:
print("No match for variable pieTimer.")
lootBarn_line = find_matching_line(code, lootBarn_finder)
if lootBarn_line:
obfuscate['lootBarn'] = find_obfuscate_variable(file_obj=code, init_line=lootBarn_line, steps=-1, symbol=' =', variable_length=2)
else:
print("No match for variable lootBarn.")
closestLoot_line = find_matching_line(code, closestLoot_finder)
if closestLoot_line:
obfuscate['closestLoot'] = find_obfuscate_variable(file_obj=code, init_line=closestLoot_line, steps=5, symbol=' =', variable_length=2)
else:
print("No match for variable closestLoot.")
lootPool_line = find_matching_line(code, closestLoot_finder)
if lootPool_line:
obfuscate['lootPool'] = find_obfuscate_variable(file_obj=code, init_line=lootPool_line, steps=4, symbol=' =', variable_length=2)
else:
print("No match for variable lootPool.")
localData_line = find_matching_line(code, netData_finder)
if localData_line:
obfuscate['localData'] = find_obfuscate_variable(file_obj=code, init_line=localData_line, steps=6, symbol=' =', variable_length=1)
else:
print("No match for variable localData.")
activeTimer_line = find_matching_line(code, activeTimer_finder)
if activeTimer_line:
obfuscate['activeTimer'] = find_obfuscate_variable(file_obj=code, init_line=activeTimer_line, steps=-2, symbol=' =', variable_length=2)
else:
print("No match for variable activeTimer.")
with open("output.js", "w") as stdout:
stdout.write(json.dumps(obfuscate, indent=4))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment