软件作用:
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()