Esempio n. 1
0
    def req(self):
        while not self.q.empty() and self.STOP_ME == False:
            try:
                r = requests.get(self.q.get(), headers=self.header, timeout=2)

                if max(
                        map(lambda x: r.headers['Content-Type'].find(x),
                            self.mime)) < 0:
                    continue

                print '[{}] {}'.format(r.status_code, r.url)
                tags = BeautifulSoup(r.content, "lxml")

                for tag in tags.find_all('a'):
                    try:

                        if True in map(lambda x: x == tag['href'][:5],
                                       ['http:', 'https']):
                            targetTmp = tag['href'].split('/')[2]

                            if targetTmp.find(':') != -1:
                                targetTmp = targetTmp[:targetTmp.find(':')]

                            for i in self.hooks:
                                if targetTmp[-len(i):] == i:
                                    self.q.put(tag['href'])

                                    try:
                                        self.lock.acquire()
                                        if targetTmp not in self.domain_db and targetTmp[
                                                -len(i) -
                                                1:] == '.' + i and len(
                                                    targetTmp) > len(i) + 1:
                                            hostTmp = host(targetTmp)
                                            if hostTmp:
                                                portTmp = ','.join([
                                                    str(i) for i in port(
                                                        targetTmp, 80, 443)
                                                ])
                                                if not portTmp:
                                                    portTmp = ''

                                                try:
                                                    self.domain_db.add(
                                                        targetTmp)
                                                    domain_db().insert(
                                                        targetTmp,
                                                        ','.join(hostTmp),
                                                        portTmp)
                                                except:
                                                    pass
                                    except:
                                        pass
                                    finally:
                                        self.lock.release()
                                        break
                    except:
                        pass
            except:
                pass
Esempio n. 2
0
    def run(self, *args):
        if args:
            self.entrances = args[0].split(',')
            for i in self.entrances:
                self.q.put('http://{}'.format(i))
        else:
            print '[+] Choose Entrances Domain ing ...'
            self.entrances = random.sample(self.hooks, self.thread_cnt)
            for i in self.entrances:
                if not port(i, 80):
                    self.reSelect(i)
                else:
                    self.q.put('http://{}'.format(i))

        print "[+] Use : {}".format('、'.join(self.entrances))

        for t in xrange(self.thread_cnt):
            t = threading.Thread(target=self.req)
            t.setDaemon(True)
            t.start()

        while True:
            if threading.activeCount() <= 1:
                break
            else:
                try:
                    time.sleep(0.1)
                except KeyboardInterrupt:
                    self.STOP_ME = True
Esempio n. 3
0
 def reSelect(self, domain):
     newdomain = random.sample(self.hooks, 1)[0]
     try:
         if port(newdomain, 80):
             self.entrances[self.entrances.index(domain)] = newdomain
             self.q.put('http://{}'.format(newdomain))
         else:
             self.reSelect(domain)
     except:
         self.reSelect(domain)