import sys,zlib,ast,collections #CODED BY FREAK - http://pastebin.com/u/KekSec - LEAVE CREDS IF U USE DONT BE A RIPPER - Original src (updated from time to time): https://pastebin.com/raw/WzYJJnmW
def escape(s):
ch = (ord(c) for c in s)
return ''.join(('\\x%02x' % c) if c <= 255 else ('\\u%04x' % c) for c in ch)
global newcode
code = newcode = open(sys.argv[1]).read()
root = ast.parse(code)
class ShowStrings(ast.NodeVisitor):
def visit_Str(self, node):
if len(node.s) >= 5 and "re." not in code.split("\n")[node.lineno-1] and ":(" not in code.split("\n")[node.lineno-1] and ": (" not in code.split("\n")[node.lineno-1]: #min length five and no regex statements or dicts allowed
global newcode
string=code.split("\n")[node.lineno-1][node.col_offset:node.col_offset+len(node.s)+2][0]+"".join(code.split("\n")[node.lineno-1][node.col_offset+1:node.col_offset+len(node.s)+len(code.split("\n")[node.lineno-1][node.col_offset-1:node.col_offset+len(node.s)+2].split(code.split("\n")[node.lineno-1][node.col_offset+1:node.col_offset+len(node.s)+2][0])[0])+4][:code.split("\n")[node.lineno-1][node.col_offset+1:node.col_offset+len(node.s)+len(code.split("\n")[node.lineno-1][node.col_offset-1:node.col_offset+len(node.s)+2].split(code.split("\n")[node.lineno-1][node.col_offset+1:node.col_offset+len(node.s)+2][0])[0])+4].find(code.split("\n")[node.lineno-1][node.col_offset:node.col_offset+len(node.s)+2][0])])+code.split("\n")[node.lineno-1][node.col_offset:node.col_offset+len(node.s)+2][0]
compressed="zlib.decompress("+code.split("\n")[node.lineno-1][node.col_offset:node.col_offset+len(node.s)+2][0]+escape(zlib.compress(node.s))+code.split("\n")[node.lineno-1][node.col_offset:node.col_offset+len(node.s)+2][0]+")"
newcode=newcode.replace(string, compressed)
ShowStrings().visit(root)
with open("secret.py", 'w') as f: f.write(newcode)
Comments
0 B
|👍
/👎