Доступ к модулю «sys» без использования импортного оборудования.Python

Программы на Python
Ответить
Anonymous
 Доступ к модулю «sys» без использования импортного оборудования.

Сообщение Anonymous »

Изолировать код Python в песочнице чрезвычайно сложно из-за мощных средств отражения, встроенных в язык. Как минимум придётся убрать механизм импорта и большую часть встроенных функций и глобальных переменных, да и то есть дыры(

Код: Выделить всё

{}.__class__.__base__.__subclasses__()
, например).

И в Python 2, и в Python 3 модуль 'sys' встроен в интерпретатор и предварительно загружается до начала выполнения пользовательского кода (даже в режиме -S). Если вы можете получить дескриптор модуля sys, у вас есть доступ к глобальному списку загруженных модулей (

Код: Выделить всё

sys.modules
), который позволяет вам делать всякие непослушные вещи.

Итак, вопрос: начиная с пустого модуля, без использования механизма импорта вообще (без оператора import, без __import__, без библиотеки imp и т. д.), а также без использования чего-либо, что обычно находится в __builtins__, если вы не можете получить к нему дескриптор каким-либо другим способом, можно ли получить ссылку либо в sys, либо в sys.modules? (Каждый указывает на другого.) Меня интересуют ответы как 2.x, так и 3.x.

Подробнее здесь: https://stackoverflow.com/questions/338 ... -machinery
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»