From aec8bce9e31b8c35316fcd9035f83a9f2f83f01f Mon Sep 17 00:00:00 2001 From: Muneeb Mubashir Date: Wed, 21 Aug 2024 23:34:58 +0500 Subject: [PATCH 1/4] Added Testing files to check functionality --- Testing_Files/index.html | 1 + Testing_Files/sample-file.py | 1 + Testing_Files/test-lamba.py | 4 ++++ Testing_Files/test1.js | 1 + Testing_Files/test2.cpp | 1 + 5 files changed, 8 insertions(+) create mode 100644 Testing_Files/index.html create mode 100644 Testing_Files/sample-file.py create mode 100644 Testing_Files/test-lamba.py create mode 100644 Testing_Files/test1.js create mode 100644 Testing_Files/test2.cpp diff --git a/Testing_Files/index.html b/Testing_Files/index.html new file mode 100644 index 0000000..7f7556c --- /dev/null +++ b/Testing_Files/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Testing_Files/sample-file.py b/Testing_Files/sample-file.py new file mode 100644 index 0000000..4648e70 --- /dev/null +++ b/Testing_Files/sample-file.py @@ -0,0 +1 @@ +print("Hello, World!") \ No newline at end of file diff --git a/Testing_Files/test-lamba.py b/Testing_Files/test-lamba.py new file mode 100644 index 0000000..8efc346 --- /dev/null +++ b/Testing_Files/test-lamba.py @@ -0,0 +1,4 @@ +import json +def lambda_handler(event, context): + for i in range(1, 21): + print(i) diff --git a/Testing_Files/test1.js b/Testing_Files/test1.js new file mode 100644 index 0000000..184dfcc --- /dev/null +++ b/Testing_Files/test1.js @@ -0,0 +1 @@ +console.log("Hello, World!"); diff --git a/Testing_Files/test2.cpp b/Testing_Files/test2.cpp new file mode 100644 index 0000000..2bd1e3b --- /dev/null +++ b/Testing_Files/test2.cpp @@ -0,0 +1 @@ +#include int main() { std::cout << "Hello, World!"; return 0; } From 5cef7c5fadc5c1dcd60a6b0c089382e1277dd426 Mon Sep 17 00:00:00 2001 From: Muneeb Mubashir Date: Thu, 22 Aug 2024 09:48:14 +0500 Subject: [PATCH 2/4] Edited modules/m_decoder.py file to solve issue of input mishandling and previous issue of copying obfuscated code in the same input file --- modules/m_decoder.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/modules/m_decoder.py b/modules/m_decoder.py index 2d7f12e..263feb3 100644 --- a/modules/m_decoder.py +++ b/modules/m_decoder.py @@ -21,9 +21,7 @@ def __write( value: str ) -> None: - d_path = os.path.join(self.output_dir_path, file_path) - - with open(d_path, 'a+') as f: + with open(file_path, 'a+') as f: f.write(value) def __get_program_struct( @@ -43,7 +41,7 @@ def str_to_hex( def execute( self, - file_path: str, + input_file_path: str, program_struct: Dict, encoding_method: str ) -> None: @@ -51,9 +49,14 @@ def execute( # Set program_struct as class vars self.program_struct = program_struct + # Determine the output file path + input_filename = os.path.basename(input_file_path) + output_filename = os.path.splitext(input_filename)[0] + "_obfuscated.py" + output_file_path = os.path.join(self.output_dir_path, output_filename) + # Write the necessary libraries self.__write( - file_path, + output_file_path, "import base64, codecs \n" ) @@ -61,12 +64,12 @@ def execute( for k, _ in program_struct.items(): encode_part = self.__get_program_struct(k, 'base64_encode') to_write = f"{k} = '{encode_part}'\n" - self.__write(file_path, to_write) + self.__write(output_file_path, to_write) # Write custom encoding method var hex_name = self.str_to_hex(encoding_method) to_write = f"{self.encoding_var} = '{hex_name}' \n" - self.__write( file_path, to_write) + self.__write(output_file_path, to_write) # Write encoding program var to_write = f"{self.execute_var} = \\\n" @@ -81,10 +84,10 @@ def execute( if ith != len(program_struct) - 1: to_write += f" + \\\n" - self.__write(file_path, to_write) + self.__write(output_file_path, to_write) # Write cmd to decode program hex_name = self.str_to_hex(self.execute_var) cmd = f"base64.b64decode(eval('{hex_name}')).decode('utf-8')" to_write = f"\neval(compile({cmd},'', 'exec'))" - self.__write(file_path, to_write) \ No newline at end of file + self.__write(output_file_path, to_write) \ No newline at end of file From 044c684b786293c739fb7249179b789299379301 Mon Sep 17 00:00:00 2001 From: Muneeb Mubashir Date: Thu, 22 Aug 2024 09:48:35 +0500 Subject: [PATCH 3/4] Tweeked py_obfuscator.py file and edited its Shebang to support all python3 versions --- py_obfuscator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py_obfuscator.py b/py_obfuscator.py index 92abe71..599109d 100755 --- a/py_obfuscator.py +++ b/py_obfuscator.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python3.9 +#!/usr/bin/env python3 import argparse from modules.m_obfuscate import Obfuscate From eb625cd1b08a8d7282321a869912f710cabfb90a Mon Sep 17 00:00:00 2001 From: Muneeb Mubashir Date: Thu, 31 Oct 2024 16:15:45 +0500 Subject: [PATCH 4/4] Added testing files and made final changes to decoder --- modules/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 194 bytes modules/__pycache__/m_decoder.cpython-310.pyc | Bin 0 -> 2588 bytes modules/__pycache__/m_encoder.cpython-310.pyc | Bin 0 -> 2780 bytes modules/__pycache__/m_obfuscate.cpython-310.pyc | Bin 0 -> 5556 bytes {Testing_Files => testing_files}/index.html | 0 {Testing_Files => testing_files}/sample-file.py | 0 {Testing_Files => testing_files}/test-lamba.py | 0 {Testing_Files => testing_files}/test1.js | 0 {Testing_Files => testing_files}/test2.cpp | 0 9 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 modules/__pycache__/__init__.cpython-310.pyc create mode 100644 modules/__pycache__/m_decoder.cpython-310.pyc create mode 100644 modules/__pycache__/m_encoder.cpython-310.pyc create mode 100644 modules/__pycache__/m_obfuscate.cpython-310.pyc rename {Testing_Files => testing_files}/index.html (100%) rename {Testing_Files => testing_files}/sample-file.py (100%) rename {Testing_Files => testing_files}/test-lamba.py (100%) rename {Testing_Files => testing_files}/test1.js (100%) rename {Testing_Files => testing_files}/test2.cpp (100%) diff --git a/modules/__pycache__/__init__.cpython-310.pyc b/modules/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f3142b1e06295058a8340a72b28127a664a975d1 GIT binary patch literal 194 zcmd1j<>g`kfq{KP6Q+KPj!WI61K-Ge1waAU|0@C>11}q8m`@50%L;(nsdRmz1Zb pW~Zj;=jNxB=A;(u$H!;pWtPOp>lIYq;;?~;+JUSuW&#o{3;;@$GqV5y literal 0 HcmV?d00001 diff --git a/modules/__pycache__/m_decoder.cpython-310.pyc b/modules/__pycache__/m_decoder.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ed7054a44aac5a3874d72218553ca713c0b92dcf GIT binary patch literal 2588 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