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.
Files changed (209) hide show
  1. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/LICENSE +2 -2
  2. {python_obfuscation_framework-1.7.4/python_obfuscation_framework.egg-info → python_obfuscation_framework-1.8.0}/PKG-INFO +148 -110
  3. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/README.md +147 -109
  4. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/__init__.py +1 -1
  5. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/__main__.py +1 -1
  6. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/cli.py +1 -1
  7. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/cli_v2.py +4 -1
  8. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/errors.py +1 -1
  9. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/__init__.py +1 -1
  10. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/argv.py +29 -10
  11. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/base.py +1 -1
  12. {python_obfuscation_framework-1.7.4/pof/evasion/fs → python_obfuscation_framework-1.8.0/pof/evasion/cpu}/__init__.py +1 -1
  13. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/cpu/cpu_count.py +1 -1
  14. {python_obfuscation_framework-1.7.4/pof/evasion/hardware → python_obfuscation_framework-1.8.0/pof/evasion/fs}/__init__.py +1 -1
  15. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/directory_exist.py +1 -1
  16. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/directory_list_exist.py +1 -1
  17. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/directory_list_missing.py +1 -1
  18. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/directory_missing.py +1 -1
  19. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/exec_method.py +5 -2
  20. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/executable_path.py +1 -1
  21. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/file_exist.py +1 -1
  22. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/file_list_exist.py +1 -1
  23. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/file_list_missing.py +1 -1
  24. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/file_missing.py +1 -1
  25. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/fs/tmp.py +5 -5
  26. {python_obfuscation_framework-1.7.4/pof/evasion/hooks → python_obfuscation_framework-1.8.0/pof/evasion/hardware}/__init__.py +1 -1
  27. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/hardware/ram_count.py +1 -1
  28. {python_obfuscation_framework-1.7.4/pof/evasion/cpu → python_obfuscation_framework-1.8.0/pof/evasion/hooks}/__init__.py +1 -1
  29. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/hooks/debugger.py +1 -1
  30. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/hooks/tracemalloc.py +1 -1
  31. python_obfuscation_framework-1.8.0/pof/evasion/human/__init__.py +15 -0
  32. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/human/p.py +1 -1
  33. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/human/prompt.py +1 -1
  34. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/integrity.py +1 -1
  35. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/multi.py +1 -1
  36. python_obfuscation_framework-1.8.0/pof/evasion/os/__init__.py +15 -0
  37. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/os/domain.py +1 -1
  38. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/os/hostname.py +1 -1
  39. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/os/uid.py +1 -1
  40. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/os/username.py +1 -1
  41. python_obfuscation_framework-1.8.0/pof/evasion/processes/__init__.py +15 -0
  42. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/processes/proc_count.py +1 -1
  43. python_obfuscation_framework-1.8.0/pof/evasion/time/__init__.py +15 -0
  44. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/time/expire.py +3 -29
  45. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/time/uptime.py +1 -1
  46. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/time/utc.py +1 -1
  47. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/evasion/utils.py +1 -1
  48. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/logger.py +1 -1
  49. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/main.py +14 -9
  50. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/__init__.py +5 -1
  51. python_obfuscation_framework-1.8.0/pof/obfuscator/boolean.py +144 -0
  52. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/builtins.py +1 -1
  53. python_obfuscation_framework-1.8.0/pof/obfuscator/cipher/__init__.py +15 -0
  54. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/cipher/deep_encryption.py +1 -1
  55. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/cipher/rc4.py +1 -1
  56. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/cipher/shift.py +1 -1
  57. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/cipher/xor.py +1 -1
  58. python_obfuscation_framework-1.8.0/pof/obfuscator/compression/__init__.py +15 -0
  59. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/compression/bz2.py +1 -1
  60. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/compression/gzip.py +1 -1
  61. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/compression/lzma.py +1 -1
  62. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/compression/zlib.py +1 -1
  63. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/constants.py +1 -1
  64. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/definitions.py +1 -1
  65. python_obfuscation_framework-1.8.0/pof/obfuscator/encoding/__init__.py +15 -0
  66. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/encoding/a85.py +1 -1
  67. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/encoding/b16.py +1 -1
  68. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/encoding/b32.py +1 -1
  69. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/encoding/b32hex.py +1 -1
  70. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/encoding/b64.py +1 -1
  71. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/encoding/b85.py +1 -1
  72. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/encoding/binascii.py +1 -1
  73. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/encoding/snt.py +1 -1
  74. python_obfuscation_framework-1.8.0/pof/obfuscator/encoding/whitespace.py +39 -0
  75. python_obfuscation_framework-1.8.0/pof/obfuscator/esoteric/__init__.py +15 -0
  76. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/esoteric/call.py +1 -1
  77. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/esoteric/doc.py +1 -1
  78. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/esoteric/globals.py +1 -1
  79. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/esoteric/imports.py +1 -1
  80. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/extract_variables.py +1 -1
  81. python_obfuscation_framework-1.8.0/pof/obfuscator/junk/__init__.py +15 -0
  82. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/junk/add_comments.py +1 -1
  83. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/junk/add_newlines.py +1 -1
  84. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/names.py +1 -1
  85. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/names_rope.py +1 -1
  86. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/numbers.py +1 -1
  87. python_obfuscation_framework-1.8.0/pof/obfuscator/other/__init__.py +15 -0
  88. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/other/tokens.py +1 -1
  89. python_obfuscation_framework-1.8.0/pof/obfuscator/remove/__init__.py +15 -0
  90. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/remove/comments.py +1 -1
  91. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/remove/exceptions.py +1 -1
  92. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/remove/indents.py +1 -1
  93. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/remove/loggings.py +1 -1
  94. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/remove/loggings_old.py +1 -1
  95. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/remove/newline.py +1 -1
  96. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/remove/print.py +1 -1
  97. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/restructure.py +1 -1
  98. python_obfuscation_framework-1.8.0/pof/obfuscator/stegano/__init__.py +15 -0
  99. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/stegano/docstrings.py +1 -1
  100. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/stegano/ipv6encoding.py +1 -1
  101. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/stegano/macencoding.py +1 -1
  102. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/stegano/uuidencoding.py +1 -1
  103. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/obfuscator/strings.py +1 -1
  104. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/__init__.py +1 -1
  105. python_obfuscation_framework-1.8.0/pof/stager/cipher/__init__.py +15 -0
  106. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/cipher/rc4.py +1 -1
  107. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/download.py +1 -1
  108. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/image.py +1 -1
  109. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/lots/__init__.py +1 -1
  110. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/lots/cl1pnet.py +1 -1
  111. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/lots/pastebin.py +1 -1
  112. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/lots/pasters.py +1 -1
  113. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/stager/quine.py +1 -1
  114. python_obfuscation_framework-1.8.0/pof/utils/__init__.py +15 -0
  115. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/cipher/__init__.py +1 -1
  116. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/cipher/rc4.py +1 -1
  117. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/cipher/shift.py +1 -1
  118. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/compression/__init__.py +1 -1
  119. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/compression/bz2.py +1 -1
  120. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/compression/gzip.py +1 -1
  121. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/compression/lzma.py +1 -1
  122. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/compression/zlib.py +1 -1
  123. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/__init__.py +3 -1
  124. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/a85.py +1 -1
  125. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/b16.py +1 -1
  126. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/b3.py +1 -1
  127. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/b32.py +1 -1
  128. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/b32hex.py +1 -1
  129. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/b64.py +1 -1
  130. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/b85.py +1 -1
  131. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/binascii.py +1 -1
  132. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/encoding/snt.py +1 -1
  133. python_obfuscation_framework-1.8.0/pof/utils/encoding/whitespace.py +117 -0
  134. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/entropy.py +1 -1
  135. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/extract_names.py +1 -1
  136. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/format.py +1 -1
  137. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/generator/__init__.py +1 -1
  138. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/generator/advanced.py +1 -1
  139. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/generator/base.py +1 -1
  140. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/generator/basic.py +1 -1
  141. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/generator/comments.py +1 -1
  142. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/generator/comments.txt +154 -154
  143. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/generator/unicode.py +1 -1
  144. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/se/__init__.py +1 -1
  145. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/se/homoglyphs.py +1 -1
  146. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/stegano/__init__.py +1 -1
  147. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/stegano/ipv6encoding.py +1 -1
  148. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/stegano/macencoding.py +1 -1
  149. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/stegano/uuidencoding.py +1 -1
  150. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/tokens.py +1 -1
  151. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pyproject.toml +1 -1
  152. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0/python_obfuscation_framework.egg-info}/PKG-INFO +148 -110
  153. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/python_obfuscation_framework.egg-info/SOURCES.txt +4 -0
  154. python_obfuscation_framework-1.8.0/tests/__init__.py +15 -0
  155. python_obfuscation_framework-1.8.0/tests/obfuscator/__init__.py +15 -0
  156. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_a85.py +1 -1
  157. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_b16.py +1 -1
  158. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_b32.py +1 -1
  159. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_b32hex.py +1 -1
  160. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_b64.py +1 -1
  161. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_b85.py +1 -1
  162. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_binascii.py +1 -1
  163. python_obfuscation_framework-1.8.0/tests/obfuscator/test_boolean.py +35 -0
  164. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_call.py +1 -1
  165. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_comments.py +1 -1
  166. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_doc.py +1 -1
  167. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_docstrings.py +1 -1
  168. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_exceptions.py +1 -1
  169. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_ipv6encoding.py +1 -1
  170. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_names/test_names.py +1 -1
  171. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_number.py +1 -1
  172. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_print.py +1 -1
  173. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_snt.py +1 -1
  174. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_tokens.py +1 -1
  175. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_xor.py +1 -1
  176. python_obfuscation_framework-1.8.0/tests/utils/__init__.py +15 -0
  177. python_obfuscation_framework-1.8.0/tests/utils/se/__init__.py +15 -0
  178. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/utils/se/test_homoglyphs.py +1 -1
  179. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/utils/test_generator.py +1 -1
  180. python_obfuscation_framework-1.7.4/pof/evasion/human/__init__.py +0 -15
  181. python_obfuscation_framework-1.7.4/pof/evasion/os/__init__.py +0 -15
  182. python_obfuscation_framework-1.7.4/pof/evasion/processes/__init__.py +0 -15
  183. python_obfuscation_framework-1.7.4/pof/evasion/time/__init__.py +0 -15
  184. python_obfuscation_framework-1.7.4/pof/obfuscator/cipher/__init__.py +0 -15
  185. python_obfuscation_framework-1.7.4/pof/obfuscator/compression/__init__.py +0 -15
  186. python_obfuscation_framework-1.7.4/pof/obfuscator/encoding/__init__.py +0 -15
  187. python_obfuscation_framework-1.7.4/pof/obfuscator/esoteric/__init__.py +0 -15
  188. python_obfuscation_framework-1.7.4/pof/obfuscator/junk/__init__.py +0 -15
  189. python_obfuscation_framework-1.7.4/pof/obfuscator/other/__init__.py +0 -15
  190. python_obfuscation_framework-1.7.4/pof/obfuscator/remove/__init__.py +0 -15
  191. python_obfuscation_framework-1.7.4/pof/obfuscator/stegano/__init__.py +0 -15
  192. python_obfuscation_framework-1.7.4/pof/stager/cipher/__init__.py +0 -15
  193. python_obfuscation_framework-1.7.4/pof/utils/__init__.py +0 -15
  194. python_obfuscation_framework-1.7.4/tests/__init__.py +0 -15
  195. python_obfuscation_framework-1.7.4/tests/obfuscator/__init__.py +0 -15
  196. python_obfuscation_framework-1.7.4/tests/utils/__init__.py +0 -15
  197. python_obfuscation_framework-1.7.4/tests/utils/se/__init__.py +0 -15
  198. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/MANIFEST.in +0 -0
  199. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/generator/names.txt +0 -0
  200. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/pof/utils/se/homoglyphs.txt +0 -0
  201. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/python_obfuscation_framework.egg-info/dependency_links.txt +0 -0
  202. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/python_obfuscation_framework.egg-info/entry_points.txt +0 -0
  203. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/python_obfuscation_framework.egg-info/requires.txt +0 -0
  204. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/python_obfuscation_framework.egg-info/top_level.txt +0 -0
  205. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/setup.cfg +0 -0
  206. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_names/code/out.py +0 -0
  207. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/test_names/code/source.py +0 -0
  208. {python_obfuscation_framework-1.7.4 → python_obfuscation_framework-1.8.0}/tests/obfuscator/utils.py +0 -0
  209. {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 - 2025 POF Team
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 - 2025 POF Team
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.7.4
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
  [![python-obfuscation-framework-pypi](https://img.shields.io/pypi/v/python-obfuscation-framework.svg)](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
- - **Create staged payloads**, store stages inside images, on trusted sites, encrypt, compress, or encode them, and much more.
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
  ![](./examples/images/lazarus.png)
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
+ ![](./examples/images/red_tiger_stealer.png)
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
- There are multiple installation options, with PIP, a virtualenv, a container, or with Nix.
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
- pip install python-obfuscation-framework
232
+ echo 'print("Hello, world!")' | curl -X POST -d @- https://pof.run
228
233
  ```
229
234
 
230
- ### 2. Source
235
+ ### PIP
231
236
 
232
- Install from source inside a virtual env:
237
+ From [pypi](https://pypi.org/project/python-obfuscation-framework):
233
238
 
234
239
  ```bash
235
- git clone https://github.com/deoktr/pof
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
- This will install pof inside a virtual env, so you'll need to activate it every time you want to use it.
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 /tmp/in.py -o /tmp/out.py
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 random as dZoHe5KQ5T
347
- import string as BOu1uhdV
348
-
349
- def hrEnWnn_d():
350
- """This is a docstring."""
351
- return dZoHe5KQ5T.choice(BOu1uhdV.ascii_lowercase)
352
-
353
- def a_D(wYKTr7D5Ex):
354
- JfQdd = hrEnWnn_d()
355
- for kEw73z in range(wYKTr7D5Ex - 1):
356
- JfQdd += hrEnWnn_d()
357
- return JfQdd
358
-
359
- def VLBQn3():
360
- mxO = a_D(8)
361
- tBceS = 'My pet is name: ' + mxO
362
- print(tBceS)
363
- VLBQn3()
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
- gfdd_j=print
440
- uVu8Mq=8
441
- GqTsw9ZK="My pet is name: "
442
- u4F5X=range
443
- rSO2F=1
444
- # source file that will be obfuscated
445
- import random
446
- import string
447
-
448
- def get_random_letter():
449
- """This is a docstring."""
450
- return random.choice(string.ascii_lowercase)
451
-
452
- def get_random_name(name_len):
453
- # this is a comment
454
- name=get_random_letter()
455
- for _ in u4F5X(name_len-rSO2F):
456
- name+=get_random_letter()
457
- return name
458
-
459
- def present_my_pet():
460
- pet_name=get_random_name(uVu8Mq)
461
- message=GqTsw9ZK+pet_name
462
- gfdd_j(message)
463
-
464
- present_my_pet()
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 random
507
- import string
508
-
509
- def get_random_letter():
510
- """This is a docstring."""
511
- return random.choice(string.ascii_lowercase)
512
-
513
- def get_random_name(name_len):
514
- # this is a comment
515
- name=globals()['get_random_letter']()
516
- for _ in range(name_len-1):
517
- name+=globals()['get_random_letter']()
518
- return name
519
-
520
- def present_my_pet():
521
- pet_name=globals()['get_random_name'](8)
522
- message="My pet is name: "+pet_name
523
- print(message)
524
-
525
- globals()['present_my_pet']()
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.