py3 写的基于GUI 的 旁注 wwwscan集成扫描工具

软件作用:

1.自动旁注指定IP段,收集旁注信息,并自动保存为文本文件方便以后查看。

2.自动多线程针对第一步骤的网站结果调用wwwscan进行扫描。(可以自己定义多少线程)

全部都是自动化完成。

程序界面如下:



代码如下:

from tkinter import *
import httplib2,os,queue,threading,sys,socket,time,iptools
from bs4 import BeautifulSoup
import urllib.parse as up

text='本软件自动旁注IP地址,并自动调用wwwscan多线程扫描。\r\n注意:程序目录自动生成dns.txt(记录旁注信息)'

class wscan(threading.Thread):
    def __init__(self,que):
        super(wscan,self).__init__()
        self.queue=que
        self.start()

    def run(self):
        while True:
            if self.queue.empty():
                break
            foo=self.queue.get()
            os.system(foo)
            self.queue.task_done()

def getrdom(ip):
    os.chdir(sys.path[0])
    url=r'http://cn.bing.com/search?count=100&q=ip:'+ip
    httphead={'User-Agent':'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) ; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152)',
    'Cookie':'SRCHUID=V=2&GUID=79E9F92F75B54E60B4588D130264EFD4; MUID=0A81369FC80C6E532B69359EC9026E42; SRCHD=SM=1&MS=2196069&D=2160426&AF=NOFORM; SRCHUSR=AUTOREDIR=0&GEOVAR=&DOB=20120209; _SS=SID=C8C39DCC3EA342E2859C472E445A1BEC; _UR=D=0; RMS=F=O&A=Q; SCRHDN=ASD=0&DURL=#',
    'Referer':'http://cn.bing.com/'}
    h=httplib2.Http()
    res,cont=h.request(url,headers=httphead)
    soup=BeautifulSoup(cont)
    lst=[]
    print('\r\n','#'*10,ip,'#'*10,file=open('dns.txt','at'))
    yield '-'*10+ip+'-'*10,''
    for i in soup.findAll('div',attrs={'class':'sb_tlst sbt_ad'}):
        dom=up.urlparse(i.a['href']).netloc
        if dom in lst:
            pass
        else:
            lst.append(dom)
            yield up.urlparse(i.a['href']).netloc,i.a.text
            print(up.urlparse(i.a['href']).netloc,i.a.text,file=open('dns.txt','at'))




def wwwscan(path,startip,stopip,ws,tno=3):
    que=queue.Queue(1000)
    for ip in iptools.IpRange(startip,stopip):
        for i in getrdom(ip):
            yield i
            que.put('wwwscan.exe '+i[0]+' -m 20')
    if not ws:
        os.chdir(path)
        for i in range(tno):
            wscan(que)



#################################################################################


class Application(Frame):
    def setopt(self):
        self.options = {
            'starth' : StringVar(),
            'stoph' : StringVar(),
            'path' : StringVar(),
            'tno': IntVar(),
            'cont':StringVar(),
            'WS': BooleanVar()}
    
        self.options['starth'].set('0.0.0.0')
        self.options['stoph'].set('255.255.255.255')
        self.options['path'].set(r'C:\SecTools\Web\wwwscan')
        self.options['tno'].set(3)

    def createWidgets(self):
        gf = LabelFrame(self, text = '选项', relief = GROOVE, labelanchor = 'nw', width = 500, height = 70)
        gf.grid(row = 0, column = 1)
        gf.grid_propagate(0)
        
        Label(gf, text = '开始IP:').grid(row = 0, column = 2)
        Entry(gf, textvariable = self.options['starth']).grid(row = 0, column = 3, columnspan = 2)
        
        Label(gf, text = '结束IP:').grid(row = 0, column = 5)
        Entry(gf, textvariable = self.options['stoph']).grid(row = 0, column = 6, columnspan = 2)
        
        Label(gf, text = 'wwwscan路径:').grid(row = 1, column = 2)
        Entry(gf, textvariable = self.options['path']).grid(row = 1, column = 3, columnspan = 2)
        
        Label(gf, text = 'wwwscan线程数:').grid(row = 1, column = 5)
        Entry(gf, textvariable = self.options['tno']).grid(row = 1, column = 6, columnspan = 2)

        Button(gf, text = "开始", command = self.launch).grid(row = 2, column = 4)
        Button(gf, text = "清除", command = self.clear).grid(row = 2, column = 5)
        Checkbutton(gf, text = '仅旁注', variable = self.options['WS']).grid(row = 2, column = 6)

        
        tf = LabelFrame(self, text = '内容', relief = GROOVE, labelanchor = 'nw', width = 500, height = 480)
        tf.grid(row = 1, column = 1)
        tf.grid_propagate(0)
        self.options['cont'] = Text(tf, foreground="white", background="black", highlightcolor="white", highlightbackground="purple", wrap=WORD, height = 480, width = 500)
        self.options['cont'].grid(row = 0, column = 1)
        self.options['cont'].tag_configure('a')
        self.options['cont'].insert(END, text+'\r\n')


    def launch(self):
        self.options['cont'].delete(1.0, END)
        a=threading.Thread(target=self.run)
        a.start()
        
    
        
    def clear(self):
        self.options['cont'].delete(1.0, END)

    def run(self):
        #self.options['cont'].insert(END, 'a'*10+'\r\n')
        ws=self.options['WS'].get()
        startip=self.options['starth'].get().strip()
        stopip=self.options['stoph'].get().strip()
        path=self.options['path'].get().strip()
        tno=self.options['tno'].get()
        for i in wwwscan(path,startip,stopip,ws,tno):
            self.options['cont'].insert(END, i[0]+'\t'+i[1]+'\r\n')
            
            
        
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.setopt()
        self.createWidgets()
        
root = Tk()
root.title("Yatere's 旁注 wwwscan集成扫描工具")
root.maxsize(1000, 1000)
app = Application(master=root)
app.mainloop()



                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值