抓取WooYun上的厂商列表


之前在别人的blog上看到抓取WooYun上的厂商列表作为一个厂商数据库,然后每每等到漏洞爆发的时候数据库(需要自己提前做一些处理,如:Web容器分类、后端数据库分类……)就起作用了,定向抓取、定向扫描分析、定向击破……

不过今天这里我就放一放抓取厂商列表的Python代码,比较简单,权当作记录&备份了:

方法一:利用sgmllib.SGMLParser

#!/usr/bin/env python
#coding=utf-8
import urllib2
import sgmllib
class LinksParser(sgmllib.SGMLParser):
	urls = []
	def do_a(self, attrs):	# the function's name do_a can't be changed
		for name, value in attrs:
			if name == 'href' and value not in self.urls:
				if value.startswith('http'):
					self.urls.append(value)
					print value
					fp.write(value + 'n')
			else:
				continue
			return

def get_url(link):
	lParser = LinksParser()
	value = (urllib2.urlopen(link)).read()
	lParser.feed(value)
	lParser.close()

if __name__ == "__main__":
	fp = open("URL.list",'a')
	for x in xrange(1, 29):
		get_url('http://wooyun.org/corps/page/' + str(x))
	fp.close()

不得不说Python的代码短小精悍且功能完备,而PHP就无法做到这点(也可能只是我写不出短小精悍的PHP代码而已了o(╯□╰)o)

方法二:利用HTMLParser

#!/usr/bin/env python
# coding=utf-8
import sys, urllib2, HTMLParser

class myparser(HTMLParser.HTMLParser):
	urls = []
	def __init__(self):
		HTMLParser.HTMLParser.__init__(self)
	def handle_starttag(self, tag, attrs):	# the name--"handle_starttag" can't be changed
		if (tag == 'a'):
			for name,value in attrs:
				if (name == 'href' and value.startswith('http') and value not in self.urls):
					self.urls.append(value)
					print value
					fp.write(value + 'n')

if len(sys.argv)>=2 and sys.argv[1] == '-u':
	content = (urllib2.urlopen(sys.argv[2])).read()
	fp = open("URL.list",'a')
	con = myparser()
	con.feed(content)
	fp.close()
else:
	print 'Usage: %s -u http://domain.com' % sys.argv[0]

这个HTMLParser版本的只是抓取单个网页中的链接信息(其实也可以多添加一两个判断,都可以起到暗链检测的功能了,自己改改就成),也可以改写成上面那种批量抓取自动存文件的形式。

然后再通过一个shell脚本提取其中的域名,方便其他工具的使用(如:用theHarvester进行信息搜集):

#!/bin/bash

for i in `cat URL.list`;do
	site=${i/www./}
	site=${site##http://}
	site=${site%%/*}
	echo $site
	mkdir $site
	( cd $site && python /path/to/theHarvester.py -d $site -l 500 -b all -f $site.html )
	sleep 30
done

因为抓取的500多个URL里面只有2个是https形式的,所以上面的shell脚本没有考虑进去,而是直接将https改成了http(域名嘛,HTTP和HTTPS没区别,所以暂时就不计较了)。

, ,

《 “抓取WooYun上的厂商列表” 》 有 3 条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注