A while ago I wrote a python script obfuscator for python2. Today I needed this and rewrote it for python3.
#!/usr/bin/python3 import base64 import zlib import bz2 def applyb64(i): print("base64 Encoding the Information") headerInfo = '#!/usr/bin/python3\n' headerInfo += 'import base64;exec(base64.b64decode("' encodedInfo = base64.b64encode(i.encode("utf-8")) footerInfo = '"))' outputInfo = headerInfo + str(encodedInfo, "utf-8") + footerInfo return outputInfo def applyZLIB(i): print("zlib Compress the Information") compressionLevel = input("Select compression level (1-9): ") headerInfo = '#!/usr/bin/python3\n' headerInfo += 'import zlib, base64;z=base64.b64decode("' encodedInfo = base64.b64encode(zlib.compress(i.encode("utf-8"), int(compressionLevel))) footerInfo = '");y=zlib.decompress(z);exec(y)' outputInfo = headerInfo + str(encodedInfo, "utf-8") + footerInfo return outputInfo def applyBZ2(i): print("bz2 Compress the Information") compressionLevel = input("Select compression level (1-9): ") headerInfo = '#!/usr/bin/python3\n' headerInfo += 'import bz2, base64;w=base64.b64decode("' encodedInfo = base64.b64encode(bz2.compress(i.encode("utf-8"), int(compressionLevel))) footerInfo = '");r=bz2.decompress(w);exec(r)' outputInfo = headerInfo + str(encodedInfo, "utf-8") + footerInfo return outputInfo def applyXOR(i): print("XOR Information") hexValue = input("XOR INT Value: ") headerInfo = '#!/usr/bin/python3\n' headerInfo += 'import base64;j=bytearray(base64.b64decode("' bArray = bytearray(i.encode("utf-8")) for b in range(len(bArray)): bArray[b] ^= int(hexValue) encodedInfo = base64.b64encode(bArray) footerInfo = '"));\n' footerInfo += 'for c in range(len(j)): j[c] ^= ' + hexValue + '\n' footerInfo += 'exec(str(j, "utf-8"))' outputInfo = headerInfo + str(encodedInfo, "utf-8") + footerInfo return outputInfo def executeRecipe(r): outputPython = "outFile.py" print filename = input("Filename to apply recipe: ") print info = '' f = open(filename, "r") for line in f: if '#!/usr/bin/python3' not in line: info += line f.close() for recipe in r: if recipe == "b64": outputRecipe = applyb64(info) info = outputRecipe elif recipe == "XOR": outputRecipe = applyXOR(info) info = outputRecipe elif recipe == "zlib": outputRecipe = applyZLIB(info) info = outputRecipe elif recipe == "bz2": outputRecipe = applyBZ2(info) info = outputRecipe f = open(outputPython, "w") f.write(outputRecipe) f.close() def main(): recipes = [] selection = 'a' print print("Build a Encoded/Compressed File from a Recipe you Build") while selection != 'q' and selection != 'Q': print("Select which task to fulfill:") print("1. Base64 Encode") print("2. XOR") print("3. zlib Compress") print("4. bz2 Compress") print print("D. Display Recipe") print("E. Execute Recipe") print("Q. Quit") selection = input("> ") if selection == '1': print print("base64") recipes.append("b64") print elif selection == '2': print print("XOR") recipes.append("XOR") print elif selection == '3': print print("zlib") recipes.append("zlib") print elif selection == '4': print print("bz2") recipes.append("bz2") print elif selection == "D" or selection == "d": print print("Recipe:") for recipe in recipes: print(recipe) print elif selection == "E" or selection == "e": print print("Execute the Recipe") executeRecipe(recipes) print recipes = [] if __name__ == "__main__": main()
No comments:
Post a Comment