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)