python写的一个丑陋的dns子域名扫描器

代码丑陋,没事写着玩,见笑

#! /usr/bin/env python
#coding=utf-8
#子域名扫描器


import socket
import sys
socket.setdefaulttimeout(2)
from multiprocessing import Process,Queue
MSG_QUEUE = Queue()

        
def crack(queue,ownsize,noip,arg):
    while 1:
        if queue.empty():
            break
        else:          
            firsthost = queue.get()
            nowownsize = queue.qsize()
            sys.stdout.write(str(ownsize)+"--->"+str((ownsize-queue.qsize()))+'
') #这里这个
是关键
            sys.stdout.flush()              
            dnshost = firsthost+"vip"+"."+arg
            try:
                ip = socket.gethostbyname(dnshost)
                if ".".join(ip.split(".")[:2])+"." not in [noip,"218.28."]:
                    print u"存在%s----->%s" % (dnshost,ip)
            except:
                pass
            
    
def scan(url):
    try:
        ip = socket.gethostbyname("111111bukenengcunzai."+url)
        ip = ".".join(ip.split(".")[:2])+"."
        print u"====================="+ip
    except:
        ip = None
    return ip

        
def main(arg):
    threads = []
    lines = 15
    for x in open("good.txt","r"):
        MSG_QUEUE.put(x.strip())
    ownsize = MSG_QUEUE.qsize()
    noip = scan(arg)
    print u"开始启动..."
    for x in range(lines):
        proc = Process(target=crack,args=(MSG_QUEUE,ownsize,noip,arg,))
        threads.append(proc)
        proc.start()
    for y in threads:
        y.join()
            
if __name__ == '__main__':
    main("baidu.com")
    
        



您可能还会对下面的文章感兴趣: