Last active
February 1, 2019 14:53
-
-
Save Kalaborative/31ff830b79cee4a1c487966e1a0f3718 to your computer and use it in GitHub Desktop.
Survivio deobfuscation script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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