Выполнять декодированный код
Хочу использовать авто обновляемый код, в планах было заранее кодировать код через base64, заливать на сервер, а на клиентской стороне декодировать этот код и выполнять, но получаю ошибку SyntaxError: invalid syntax, как и каким образом мне надо кодировать\декодировать данные?
(не рабочий код)
decoded = base64.standard_b64decode(b'ZGVmIHByaWludCh4KToKICAgIHByaW50KHN0cih4KSkKZm9yIHggaW4gcmFuZ2UoMTApOgogICAgcHJpaW50KHgp')
print(str(decoded)+'\n\n\n')
eval(decoded)
Ответы (1 шт):
Автор решения: Александр Рассказчиков
→ Ссылка
Для выполнения полноценного кода на Python используйте встроенную функцию exec() вместо eval().
Eval позволяет вам лишь получать результаты выражений.
В отличие от exec(), eval не хранит переменные, функции и прочие объекты в памяти.
import base64
decoded = base64.standard_b64decode(b'ZGVmIHByaWludCh4KToKICAgIHByaW50KHN0cih4KSkKZm9yIHggaW4gcmFuZ2UoMTApOgogICAgcHJpaW50KHgp')
print(str(decoded)+'\n\n\n')
exec(decoded)
Вывод:
b'def priint(x):\n print(str(x))\nfor x in range(10):\n priint(x)'
0
1
2
3
4
5
6
7
8
9