import random import string from utils.name_gen import NameGenerator class JunkGenerator: def __init__(self, name_generator: NameGenerator): self.name_generator = name_generator def add_junk(self) -> str: """ Generates random multi-line junk code, used to pad the final output. """ var1 = self.name_generator.generate_name() var2 = self.name_generator.generate_name() example_strings = ["HelloWorld", "CryptoMagic", "XxX_Obf_42", "DataStorm", "RandomStr", "TestString"] s1 = random.choice(example_strings) s2 = random.choice(example_strings) multi_line_junks = [ f"{var1} = chr({random.randint(65, 90)}) + chr({random.randint(65, 90)})", f"{var1} = sum([{random.randint(1,10)} for _ in range({random.randint(1,5)})])", f"{var1} = len(bytes([{random.randint(65,90)}, {random.randint(65,90)}, {random.randint(65,90)}]))", f"if chr({random.randint(65,90)}).isupper(): {var1} = {random.randint(0, 999)}", f"{var1} = bytes([{random.randint(65,90)}] * {random.randint(1,3)})", f"{var1} = ord(chr({random.randint(65,90)})) - {random.randint(1,10)}", f"{var1} = '{s1}'.lower()\n{var2} = '{s2}'.upper()", f"{var1} = [chr(random.randint(65,90)) for _ in range({random.randint(2,5)})]\n{var2} = ''.join({var1})", f"{var1} = {random.randint(1,10)} ** {random.randint(1,3)}\n{var2} = {var1} % {random.randint(1,10)}", f"{var1} = [{random.randint(1,5)} for _ in range({random.randint(3,5)})]\nif len({var1}) > {random.randint(1,4)}: {var2} = sum({var1})", f"{var1} = {{ {random.randint(1,10)} : '{s1}' }}\n{var2} = {var1}.get({random.randint(1,10)}, None)", f"{var1} = set(range({random.randint(2,5)}))\n{var2} = set(range({random.randint(2,5)}))\n{var1}.intersection({var2})" ] return random.choice(multi_line_junks) def generate_junk(self) -> str: """ Generates a single line of junk code. """ var_name = self.name_generator.generate_name() junk_code = [ f"{var_name} = {random.randint(0, 100)}", f"{var_name} = '{''.join(random.choices(string.ascii_letters, k=10))}'", f"{var_name} = {random.randint(0, 100)} + {random.randint(0, 100)}", f"{var_name} = {random.randint(0, 100)} * {random.randint(0, 100)}", f"{var_name} = {random.randint(0, 100)} - {random.randint(0, 100)}", f"{var_name} = {random.randint(0, 100)} / {random.randint(1, 100)}", f"{var_name} = '{''.join(random.choices(string.ascii_letters + string.digits, k=15))}'", f"{var_name} = {random.randint(0, 100)} % {random.randint(1, 100)}", f"{var_name} = {random.randint(0, 100)} ** {random.randint(0, 5)}", f"{var_name} = {random.randint(0, 100)} // {random.randint(1, 100)}" ] return random.choice(junk_code)