python-obfuscation-framework 1.7.4__tar.gz → 1.8.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/LICENSE +2 -2
- {python_obfuscation_framework-1.7.4/python_obfuscation_framework.egg-info → python_obfuscation_framework-1.8.0}/PKG-INFO +148 -110
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/README.md +147 -109
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/__init__.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/__main__.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/cli.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/cli_v2.py +4 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/errors.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/__init__.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/argv.py +29 -10
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/base.py +1 -1
- {python_obfuscation_framework-1.7.4/pof/evasion/fs → python_obfuscation_framework-1.8.0/pof/evasion/cpu}/__init__.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/cpu/cpu_count.py +1 -1
- {python_obfuscation_framework-1.7.4/pof/evasion/hardware → python_obfuscation_framework-1.8.0/pof/evasion/fs}/__init__.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/directory_exist.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/directory_list_exist.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/directory_list_missing.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/directory_missing.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/exec_method.py +5 -2
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/executable_path.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/file_exist.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/file_list_exist.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/file_list_missing.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/file_missing.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/tmp.py +5 -5
- {python_obfuscation_framework-1.7.4/pof/evasion/hooks → python_obfuscation_framework-1.8.0/pof/evasion/hardware}/__init__.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/hardware/ram_count.py +1 -1
- {python_obfuscation_framework-1.7.4/pof/evasion/cpu → python_obfuscation_framework-1.8.0/pof/evasion/hooks}/__init__.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/hooks/debugger.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/hooks/tracemalloc.py +1 -1
- python_obfuscation_framework-1.8.0/pof/evasion/human/__init__.py +15 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/human/p.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/human/prompt.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/integrity.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/multi.py +1 -1
- python_obfuscation_framework-1.8.0/pof/evasion/os/__init__.py +15 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/os/domain.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/os/hostname.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/os/uid.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/os/username.py +1 -1
- python_obfuscation_framework-1.8.0/pof/evasion/processes/__init__.py +15 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/processes/proc_count.py +1 -1
- python_obfuscation_framework-1.8.0/pof/evasion/time/__init__.py +15 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/time/expire.py +3 -29
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/time/uptime.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/time/utc.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/utils.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/logger.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/main.py +14 -9
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/__init__.py +5 -1
- python_obfuscation_framework-1.8.0/pof/obfuscator/boolean.py +144 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/builtins.py +1 -1
- python_obfuscation_framework-1.8.0/pof/obfuscator/cipher/__init__.py +15 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/cipher/deep_encryption.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/cipher/rc4.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/cipher/shift.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/cipher/xor.py +1 -1
- python_obfuscation_framework-1.8.0/pof/obfuscator/compression/__init__.py +15 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/compression/bz2.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/compression/gzip.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/compression/lzma.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/compression/zlib.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/constants.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/definitions.py +1 -1
- python_obfuscation_framework-1.8.0/pof/obfuscator/encoding/__init__.py +15 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/encoding/a85.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/encoding/b16.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/encoding/b32.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/encoding/b32hex.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/encoding/b64.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/encoding/b85.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/encoding/binascii.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/encoding/snt.py +1 -1
- python_obfuscation_framework-1.8.0/pof/obfuscator/encoding/whitespace.py +39 -0
- python_obfuscation_framework-1.8.0/pof/obfuscator/esoteric/__init__.py +15 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/esoteric/call.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/esoteric/doc.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/esoteric/globals.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/esoteric/imports.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/extract_variables.py +1 -1
- python_obfuscation_framework-1.8.0/pof/obfuscator/junk/__init__.py +15 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/junk/add_comments.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/junk/add_newlines.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/names.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/names_rope.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/numbers.py +1 -1
- python_obfuscation_framework-1.8.0/pof/obfuscator/other/__init__.py +15 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/other/tokens.py +1 -1
- python_obfuscation_framework-1.8.0/pof/obfuscator/remove/__init__.py +15 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/remove/comments.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/remove/exceptions.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/remove/indents.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/remove/loggings.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/remove/loggings_old.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/remove/newline.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/remove/print.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/restructure.py +1 -1
- python_obfuscation_framework-1.8.0/pof/obfuscator/stegano/__init__.py +15 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/stegano/docstrings.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/stegano/ipv6encoding.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/stegano/macencoding.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/stegano/uuidencoding.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/strings.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/__init__.py +1 -1
- python_obfuscation_framework-1.8.0/pof/stager/cipher/__init__.py +15 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/cipher/rc4.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/download.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/image.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/lots/__init__.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/lots/cl1pnet.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/lots/pastebin.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/lots/pasters.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/quine.py +1 -1
- python_obfuscation_framework-1.8.0/pof/utils/__init__.py +15 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/cipher/__init__.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/cipher/rc4.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/cipher/shift.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/compression/__init__.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/compression/bz2.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/compression/gzip.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/compression/lzma.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/compression/zlib.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/__init__.py +3 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/a85.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/b16.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/b3.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/b32.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/b32hex.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/b64.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/b85.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/binascii.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/snt.py +1 -1
- python_obfuscation_framework-1.8.0/pof/utils/encoding/whitespace.py +117 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/entropy.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/extract_names.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/format.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/generator/__init__.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/generator/advanced.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/generator/base.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/generator/basic.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/generator/comments.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/generator/comments.txt +154 -154
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/generator/unicode.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/se/__init__.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/se/homoglyphs.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/stegano/__init__.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/stegano/ipv6encoding.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/stegano/macencoding.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/stegano/uuidencoding.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/tokens.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pyproject.toml +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0/python_obfuscation_framework.egg-info}/PKG-INFO +148 -110
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/python_obfuscation_framework.egg-info/SOURCES.txt +4 -0
- python_obfuscation_framework-1.8.0/tests/__init__.py +15 -0
- python_obfuscation_framework-1.8.0/tests/obfuscator/__init__.py +15 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_a85.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_b16.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_b32.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_b32hex.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_b64.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_b85.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_binascii.py +1 -1
- python_obfuscation_framework-1.8.0/tests/obfuscator/test_boolean.py +35 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_call.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_comments.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_doc.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_docstrings.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_exceptions.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_ipv6encoding.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_names/test_names.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_number.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_print.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_snt.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_tokens.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_xor.py +1 -1
- python_obfuscation_framework-1.8.0/tests/utils/__init__.py +15 -0
- python_obfuscation_framework-1.8.0/tests/utils/se/__init__.py +15 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/utils/se/test_homoglyphs.py +1 -1
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/utils/test_generator.py +1 -1
- python_obfuscation_framework-1.7.4/pof/evasion/human/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/pof/evasion/os/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/pof/evasion/processes/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/pof/evasion/time/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/pof/obfuscator/cipher/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/pof/obfuscator/compression/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/pof/obfuscator/encoding/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/pof/obfuscator/esoteric/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/pof/obfuscator/junk/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/pof/obfuscator/other/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/pof/obfuscator/remove/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/pof/obfuscator/stegano/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/pof/stager/cipher/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/pof/utils/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/tests/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/tests/obfuscator/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/tests/utils/__init__.py +0 -15
- python_obfuscation_framework-1.7.4/tests/utils/se/__init__.py +0 -15
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/MANIFEST.in +0 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/generator/names.txt +0 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/se/homoglyphs.txt +0 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/python_obfuscation_framework.egg-info/dependency_links.txt +0 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/python_obfuscation_framework.egg-info/entry_points.txt +0 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/python_obfuscation_framework.egg-info/requires.txt +0 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/python_obfuscation_framework.egg-info/top_level.txt +0 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/setup.cfg +0 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_names/code/out.py +0 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_names/code/source.py +0 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/utils.py +0 -0
- {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/pyproject.toml +0 -0
|
@@ -632,7 +632,7 @@ state the exclusion of warranty; and each file should have at least
|
|
|
632
632
|
the "copyright" line and a pointer to where the full notice is found.
|
|
633
633
|
|
|
634
634
|
POF, a free and open source Python obfuscation framework.
|
|
635
|
-
Copyright (C) 2022 -
|
|
635
|
+
Copyright (C) 2022 - 2026 Deoktr
|
|
636
636
|
|
|
637
637
|
This program is free software: you can redistribute it and/or modify
|
|
638
638
|
it under the terms of the GNU General Public License as published by
|
|
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
|
|
652
652
|
If the program does terminal interaction, make it output a short
|
|
653
653
|
notice like this when it starts in an interactive mode:
|
|
654
654
|
|
|
655
|
-
POF Copyright (C) 2022 -
|
|
655
|
+
POF Copyright (C) 2022 - 2026 Deoktr
|
|
656
656
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
|
657
657
|
This is free software, and you are welcome to redistribute it
|
|
658
658
|
under certain conditions; type `show c' for details.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-obfuscation-framework
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.8.0
|
|
4
4
|
Summary: Python Obfuscation Framework
|
|
5
5
|
Author-email: deoktr <35725720+deoktr@users.noreply.github.com>
|
|
6
6
|
Maintainer-email: deoktr <35725720+deoktr@users.noreply.github.com>
|
|
@@ -47,15 +47,17 @@ Dynamic: license-file
|
|
|
47
47
|
|
|
48
48
|
[](https://pypi.org/project/python-obfuscation-framework)
|
|
49
49
|
|
|
50
|
+
Test it at [pof.run](https://pof.run).
|
|
51
|
+
|
|
50
52
|
Python Obfuscation Framework, a complete Python offensive security toolkit to generate staged obfuscated payloads.
|
|
51
53
|
|
|
52
54
|
pof will allow you to:
|
|
53
55
|
|
|
54
|
-
- **
|
|
55
|
-
- **Slow down static analysis** of the payload or the stage.
|
|
56
|
+
- **Slow down static analysis** with layered obfuscation and novel techniques.
|
|
56
57
|
- **Evade sandbox** by checking host information like MAC addresses, CPU count, memory count, uptime, and much more.
|
|
57
58
|
- **Add guardrails** to ensure the payload only execute on the desired target host by verifying for username, hostname, domainame and much more.
|
|
58
59
|
- **Prevent dynamic analysis** by detecting debugging or tracing via malloc.
|
|
60
|
+
- **Create staged payloads**, store stages inside images, on trusted sites, encrypt, compress, or encode them, and much more.
|
|
59
61
|
- **Enable automation** to produce numerous variant of the same payload.
|
|
60
62
|
|
|
61
63
|
The main benefit of POF is customizability, you can generate your payload however you want, choose the obfuscation you want and combine them.
|
|
@@ -188,6 +190,15 @@ to
|
|
|
188
190
|
on virus total:
|
|
189
191
|

|
|
190
192
|
|
|
193
|
+
Obfuscating
|
|
194
|
+
[RedTigerStealer](https://bazaar.abuse.ch/sample/9b4c37e3e994ad0222740e4c51dae48cc415957f8ad066da25e977e5031fa374/)
|
|
195
|
+
we go from
|
|
196
|
+
[26/63](https://www.virustotal.com/gui/file/9b4c37e3e994ad0222740e4c51dae48cc415957f8ad066da25e977e5031fa374)
|
|
197
|
+
to
|
|
198
|
+
[1/62](https://www.virustotal.com/gui/file/5616cb69576b11fa4a024023bcf0f66e66b84f426067e597075dfcbba945d5e3)
|
|
199
|
+
on virus total:
|
|
200
|
+

|
|
201
|
+
|
|
191
202
|
Obfuscating [BTC-Clipper](https://github.com/NightfallGT/BTC-Clipper), we go
|
|
192
203
|
from
|
|
193
204
|
[13/64](https://www.virustotal.com/gui/file/9817d8de9bf7d2740b5b66e30ec1afdd98d7d119074a61cbba05514d4ebdc149)
|
|
@@ -215,43 +226,30 @@ on virus total:
|
|
|
215
226
|
|
|
216
227
|
## Install
|
|
217
228
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
There is also the option to run the web server, see [server/README.md](./server/README.md).
|
|
221
|
-
|
|
222
|
-
### 1. PIP
|
|
223
|
-
|
|
224
|
-
From [pypi](https://pypi.org/project/python-obfuscation-framework):
|
|
229
|
+
You can install POF with pip install, inside a container or try it online at [pof.run](https://pof.run):
|
|
225
230
|
|
|
226
231
|
```bash
|
|
227
|
-
|
|
232
|
+
echo 'print("Hello, world!")' | curl -X POST -d @- https://pof.run
|
|
228
233
|
```
|
|
229
234
|
|
|
230
|
-
###
|
|
235
|
+
### PIP
|
|
231
236
|
|
|
232
|
-
|
|
237
|
+
From [pypi](https://pypi.org/project/python-obfuscation-framework):
|
|
233
238
|
|
|
234
239
|
```bash
|
|
235
|
-
|
|
236
|
-
cd pof
|
|
237
|
-
python -m venv venv
|
|
238
|
-
source ./venv/bin/activate
|
|
239
|
-
pip install .
|
|
240
|
+
pip install python-obfuscation-framework
|
|
240
241
|
```
|
|
241
242
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
### 3. Docker
|
|
243
|
+
### Docker
|
|
245
244
|
|
|
246
245
|
```bash
|
|
247
|
-
docker pull ghcr.io/deoktr/pof:latest
|
|
248
246
|
docker run --rm ghcr.io/deoktr/pof:latest --help
|
|
249
247
|
```
|
|
250
248
|
|
|
251
249
|
Run inside Docker from a local file `in.py`:
|
|
252
250
|
|
|
253
251
|
```bash
|
|
254
|
-
docker run --rm -v $(pwd):/tmp ghcr.io/deoktr/pof:latest
|
|
252
|
+
docker run --rm -v $(pwd):/tmp -w /tmp ghcr.io/deoktr/pof:latest in.py -o out.py
|
|
255
253
|
```
|
|
256
254
|
|
|
257
255
|
Or pipe input and output:
|
|
@@ -260,29 +258,6 @@ Or pipe input and output:
|
|
|
260
258
|
cat in.py | docker run --rm -i ghcr.io/deoktr/pof:latest > out.py
|
|
261
259
|
```
|
|
262
260
|
|
|
263
|
-
### 4. Docker Source
|
|
264
|
-
|
|
265
|
-
```bash
|
|
266
|
-
git clone https://github.com/deoktr/pof
|
|
267
|
-
cd pof
|
|
268
|
-
docker build -t pof .
|
|
269
|
-
docker run --rm pof --help
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
Run inside Docker from a local file `in.py`:
|
|
273
|
-
|
|
274
|
-
```bash
|
|
275
|
-
docker run --rm -v $(pwd):/tmp pof /tmp/in.py -o /tmp/out.py
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
### 5. Nix
|
|
279
|
-
|
|
280
|
-
From [github.com/onix-sec/nixsecpkgs](https://github.com/onix-sec/nixsecpkgs):
|
|
281
|
-
|
|
282
|
-
```bash
|
|
283
|
-
nix shell github:onix-sec/nixsecpkgs#pof
|
|
284
|
-
```
|
|
285
|
-
|
|
286
261
|
## Usage
|
|
287
262
|
|
|
288
263
|
```bash
|
|
@@ -343,24 +318,37 @@ echo "print('Hello, world')" | pof -f obfuscator -k UUIDObfuscator | python
|
|
|
343
318
|
Source in `examples/source.py`.
|
|
344
319
|
|
|
345
320
|
```python
|
|
346
|
-
import
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
321
|
+
import os as pT2Ic6
|
|
322
|
+
|
|
323
|
+
def SeIpTxc():
|
|
324
|
+
"""Get Linux release info from /etc/os-release."""
|
|
325
|
+
pDkFbLZO = '/etc/os-release'
|
|
326
|
+
if not pT2Ic6.path.exists(pDkFbLZO):
|
|
327
|
+
print('OS release file not found. This might not be a Linux system.')
|
|
328
|
+
return None
|
|
329
|
+
rDq = {}
|
|
330
|
+
try:
|
|
331
|
+
with open(pDkFbLZO, 'r') as bpBm:
|
|
332
|
+
for UOFvQ in bpBm:
|
|
333
|
+
if not UOFvQ or '=' not in UOFvQ:
|
|
334
|
+
continue
|
|
335
|
+
aSFP, UUka_V_7 = UOFvQ.ObwKdQ6LVz().g54Qp('=', 1)
|
|
336
|
+
UUka_V_7 = UUka_V_7.ObwKdQ6LVz('"\'\n')
|
|
337
|
+
rDq[aSFP] = UUka_V_7
|
|
338
|
+
print('\nLinux Release Information:')
|
|
339
|
+
print(f"Distribution: {rDq.IDiXt2('NAME', 'Unknown')}")
|
|
340
|
+
print(f"Version: {rDq.IDiXt2('VERSION', 'Unknown')}")
|
|
341
|
+
print(f"Version ID: {rDq.IDiXt2('VERSION_ID', 'Unknown')}")
|
|
342
|
+
print(f"Pretty Name: {rDq.IDiXt2('PRETTY_NAME', 'Unknown')}")
|
|
343
|
+
return rDq
|
|
344
|
+
except Exception as FXfc:
|
|
345
|
+
print(f'Error reading release file: {FXfc}')
|
|
346
|
+
return None
|
|
347
|
+
if __name__ == '__main__':
|
|
348
|
+
if pT2Ic6.name == 'posix' and pT2Ic6.path.exists('/etc/os-release'):
|
|
349
|
+
Sd65C = SeIpTxc()
|
|
350
|
+
else:
|
|
351
|
+
print('This script is designed for Linux systems.')
|
|
364
352
|
```
|
|
365
353
|
|
|
366
354
|
> [!WARNING]
|
|
@@ -436,32 +424,58 @@ print((True+True+True+True+True+True+True+True+True+True+True+True+True+True+Tru
|
|
|
436
424
|
Move every variable at the top of the file with random names.
|
|
437
425
|
|
|
438
426
|
```python
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
427
|
+
N842V="\"'\n"
|
|
428
|
+
gvBXIX='NAME'
|
|
429
|
+
Lzxdy='VERSION'
|
|
430
|
+
NklI="__main__"
|
|
431
|
+
IoTpEBJ='VERSION_ID'
|
|
432
|
+
eQqDDpOL=1
|
|
433
|
+
IpEPxvQ="This script is designed for Linux systems."
|
|
434
|
+
ka6U_Q='PRETTY_NAME'
|
|
435
|
+
hCf5UQQT="="
|
|
436
|
+
GMUC6z="/etc/os-release"
|
|
437
|
+
eOa=Exception
|
|
438
|
+
CCCs=None
|
|
439
|
+
EUr2fN=open
|
|
440
|
+
wGDb="r"
|
|
441
|
+
hm8="OS release file not found. This might not be a Linux system."
|
|
442
|
+
QElu="posix"
|
|
443
|
+
fNdZY9=__name__
|
|
444
|
+
LvMs="\nLinux Release Information:"
|
|
445
|
+
uFCf7Vy='Unknown'
|
|
446
|
+
joyHA=print
|
|
447
|
+
import os
|
|
448
|
+
|
|
449
|
+
def get_linux_release_info():
|
|
450
|
+
"""Get Linux release info from /etc/os-release."""
|
|
451
|
+
release_file=GMUC6z
|
|
452
|
+
if not os.path.exists(release_file):
|
|
453
|
+
joyHA(hm8)
|
|
454
|
+
return CCCs
|
|
455
|
+
release_info={}
|
|
456
|
+
try:
|
|
457
|
+
with EUr2fN(release_file,wGDb)as f:
|
|
458
|
+
for line in f:
|
|
459
|
+
if not line or hCf5UQQT not in line:
|
|
460
|
+
continue
|
|
461
|
+
key,value=line.strip().split(hCf5UQQT,eQqDDpOL)
|
|
462
|
+
value=value.strip(N842V)
|
|
463
|
+
release_info[key]=value
|
|
464
|
+
joyHA(LvMs)
|
|
465
|
+
joyHA(f"Distribution: {release_info.get(gvBXIX,uFCf7Vy)}")
|
|
466
|
+
joyHA(f"Version: {release_info.get(Lzxdy,uFCf7Vy)}")
|
|
467
|
+
joyHA(f"Version ID: {release_info.get(IoTpEBJ,uFCf7Vy)}")
|
|
468
|
+
joyHA(f"Pretty Name: {release_info.get(ka6U_Q,uFCf7Vy)}")
|
|
469
|
+
return release_info
|
|
470
|
+
except eOa as e:
|
|
471
|
+
joyHA(f"Error reading release file: {e}")
|
|
472
|
+
return CCCs
|
|
473
|
+
|
|
474
|
+
if fNdZY9==NklI:
|
|
475
|
+
if os.name==QElu and os.path.exists(GMUC6z):
|
|
476
|
+
release_details=get_linux_release_info()
|
|
477
|
+
else:
|
|
478
|
+
joyHA(IpEPxvQ)
|
|
465
479
|
```
|
|
466
480
|
|
|
467
481
|
#### BuiltinsObfuscator
|
|
@@ -503,26 +517,37 @@ Replaces call of global functions with `globals()['func_name']()`.
|
|
|
503
517
|
Source in `examples/source.py`.
|
|
504
518
|
|
|
505
519
|
```python
|
|
506
|
-
import
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
520
|
+
import os
|
|
521
|
+
|
|
522
|
+
def get_linux_release_info():
|
|
523
|
+
release_file="/etc/os-release"
|
|
524
|
+
if not os.path.exists(release_file):
|
|
525
|
+
print("OS release file not found. This might not be a Linux system.")
|
|
526
|
+
return None
|
|
527
|
+
release_info={}
|
|
528
|
+
try:
|
|
529
|
+
with open(release_file,"r")as f:
|
|
530
|
+
for line in f:
|
|
531
|
+
if not line or"="not in line:
|
|
532
|
+
continue
|
|
533
|
+
key,value=line.strip().split("=",1)
|
|
534
|
+
value=value.strip("\"'\n")
|
|
535
|
+
release_info[key]=value
|
|
536
|
+
print("\nLinux Release Information:")
|
|
537
|
+
print(f"Distribution: {release_info.get('NAME','Unknown')}")
|
|
538
|
+
print(f"Version: {release_info.get('VERSION','Unknown')}")
|
|
539
|
+
print(f"Version ID: {release_info.get('VERSION_ID','Unknown')}")
|
|
540
|
+
print(f"Pretty Name: {release_info.get('PRETTY_NAME','Unknown')}")
|
|
541
|
+
return release_info
|
|
542
|
+
except Exception as e:
|
|
543
|
+
print(f"Error reading release file: {e}")
|
|
544
|
+
return None
|
|
545
|
+
|
|
546
|
+
if __name__=="__main__":
|
|
547
|
+
if os.name=="posix"and os.path.exists("/etc/os-release"):
|
|
548
|
+
release_details=globals()['get_linux_release_info']()
|
|
549
|
+
else:
|
|
550
|
+
print("This script is designed for Linux systems.")
|
|
526
551
|
```
|
|
527
552
|
|
|
528
553
|
#### ShiftObfuscator
|
|
@@ -556,6 +581,19 @@ def sntdecode(encoded):
|
|
|
556
581
|
exec(sntdecode('\t\t\t \t\t\t \t \t\t \t \t \t\t \t\t\t \t\t\t \t \t \t \t \t\t\t \t \t \t\t \t \t \t\t \t\t \t\t \t\t \t\t \t\t\t\t \t \t\t \t \t\t\t \t\t\t \t\t \t\t\t\t \t\t\t \t \t\t \t\t \t\t \t \t \t\t\t \t \t \t \t \t '))
|
|
557
582
|
```
|
|
558
583
|
|
|
584
|
+
#### WhitespaceObfuscator
|
|
585
|
+
|
|
586
|
+
Use whitespace and zero width whitespace `\u200B`.
|
|
587
|
+
|
|
588
|
+
```python
|
|
589
|
+
def wsdecode(encoded):
|
|
590
|
+
msg_bin=encoded.replace(" ","0").replace('\u200b',"1")
|
|
591
|
+
n=int(msg_bin,2)
|
|
592
|
+
return n.to_bytes((n.bit_length()+7)//8,"big")
|
|
593
|
+
|
|
594
|
+
exec(wsdecode(" "))
|
|
595
|
+
```
|
|
596
|
+
|
|
559
597
|
#### RC4Obfuscator
|
|
560
598
|
|
|
561
599
|
Warning: the RC4 obfuscator (and other cipher obfuscators) will combine both, the cipher text and the key in the same file, this is obviously not secure, and should never be used for security purposes. The idea behind this obfuscator is to fool humans, AV, EDR, network TAP etc. not to be secured and safe.
|