3 ms·
I think you are misunderstanding. The secret does not need to be hardcoded in the python file. If it's read in from an environment variable or some other extern
by Newky 6y ago
I think you are misunderstanding. The secret does not need to be hardcoded in the python file. If it's read in from an environment variable or some other external source, it will also be in the pyc
- orf 6y agoThat’s totally incorrect. .pyc files just contain a representation of the _code_ and not any values that don’t exist in the code. So a snippet like “os.environ[‘my_super_secret’]” won’t contain anything else than the bytecode to fetch that environment variable.
- oefrha 6y agoOf course not, that would mean env vars are hard-coded into byte code at compile time, which would be completely crazy. A pyc file is just a parsed series of op codes that the interpreter could dispatch directly, so that it doesn't have to parse source files every single time. It's very easy to verify: secrets.py: import os SECRET = os.getenv('SECRET') Then $ python -m compileall secrets.py $ uncompyle6 __pycache__/secrets.cpython-38.pyc # uncompyle6 version 3.7.0 # Python bytecode 3.8 (3413) # Decompiled from: Python 3.8.2 (default, Mar 10 2020, 12:58:02) # [Clang 11.0.0 (clang-1100.0.33.17)] # Embedded file name: secrets.py # Compiled at: ... # Size of source mod 2**32: 40 bytes import os SECRET = os.getenv('SECRET') # okay decompiling __pycache__/secrets.cpython-38.pyc