From 9a78427a3f0af5d770bd41a12411d8e293269d36 Mon Sep 17 00:00:00 2001 From: boyhack <34109680@qq.com> Date: Tue, 25 Oct 2016 12:05:10 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E7=A4=BE?= =?UTF-8?q?=E4=BC=9A=E5=B7=A5=E7=A8=8B=E5=AD=A6=E5=AF=86=E7=A0=81=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=92=8Cwhois=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- myweb.py | 34 ++ password.py | 217 +++++++++++ templates/base.html | 2 + templates/password.html | 111 ++++++ templates/whois.html | 50 +++ whois.py | 802 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 1216 insertions(+) create mode 100644 password.py create mode 100644 templates/password.html create mode 100644 templates/whois.html create mode 100644 whois.py diff --git a/myweb.py b/myweb.py index 3600170..5fecd63 100644 --- a/myweb.py +++ b/myweb.py @@ -4,8 +4,10 @@ from flask import Flask,render_template,request import re import baiduip +from password import PasswdGenerator import cms import sys +import whois reload(sys) sys.setdefaultencoding('utf-8') @@ -42,5 +44,37 @@ def webdna(): else: return render_template('cms.html',title="CMS识别") +#在线密码生成 +@app.route('/password',methods=["get","post"]) +def password_build(): + if request.method == 'POST': + birthday = request.form.get("birthday","") + fullname = request.form.get("fullname","") + nickname = request.form.get("nickname","") + englishname = request.form.get("englishname","") + partnername = request.form.get("partnername","") + phone = request.form.get("phone","") + qq = request.form.get("qq","") + company = request.form.get("company","") + domain = request.form.get("domain","") + oldpasswd = request.form.get("oldpasswd","") + keywords = request.form.get("keywords","") + keynumbers = request.form.get("keynumbers","") + pwgen = PasswdGenerator(fullname=fullname,nickname=nickname,englishname=englishname,partnername=partnername,phone=phone,qq=qq,company=company,domain=domain,oldpasswd=oldpasswd,keywords=keywords,keynumbers=keynumbers,birthday=birthday) + wordlist = pwgen.generate() + return render_template('password.html',data=wordlist,title="社工密码生成") + else: + return render_template('password.html',title="社工密码生成") + +#Whois 在线查询 +@app.route('/whois',methods=["get","post"]) +def whoisa(): + if request.method == 'POST': + url = request.form.get("search") + data = whois.whois(url).replace("\n","
") + return render_template('whois.html',data=data,title="Whois查询") + else: + return render_template('whois.html',title="Whois查询") + if __name__ == '__main__': app.run(debug=True) diff --git a/password.py b/password.py new file mode 100644 index 0000000..b935149 --- /dev/null +++ b/password.py @@ -0,0 +1,217 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +''' +Pentestdb, a database for penetration test. +Copyright (c) 2015 alpha1e0 +================================================================ +社工密码生成器. +''' + + +import time +import itertools + + + +class PasswdGenerator(object): + ''' + Password generator. + ''' + # 常用密码关键数字 + _numList = ['123456', '123123', '123123123', '112233', '445566', '456456', '789789', '778899', '321321', '520', '1314', '5201314', '1314520', '147369', '147258', '258', '147', '456', '789', '147258369', '111222', '123', '1234', '12345', '1234567', '12345678', '123456789', '987654321', '87654321', '7654321', '654321', '54321', '4321', '321'] + # 常用前缀列表 + _prefixList = ['a','qq','yy','aa','abc','qwer','woaini'] + # 常用密码 + _commonPasswd = ['123456', 'a123456', '123456a', '123456abc', 'abc123456', 'woaini1314', 'qq123456', 'woaini520', 'woaini123', 'woaini521', 'qazwsx', '1qaz2wsx', '1q2w3e4r', '1q2w3e4r5t', '1q2w3e', 'qwertyuiop', 'zxcvbnm'] + # 和partner混合的常用前缀列表 + partnerPrefixList = ['520','5201314','1314','iloveu','iloveyou'] + # 和domian,company组合的前缀列表 + domainPrefixList = ['admin','root','manager','system'] + + + def __init__(self, fullname="", nickname="", englishname="", partnername="", birthday="", phone="", qq="", \ + company="", domain="", oldpasswd="", keywords="", keynumbers=""): + ''' + Params: + Parameters of args: + fullname: specified the fullname, format: 'zhang san' 'wang ai guo' 0 + nickname: specified the nickname 0 + englishname: specified the english name 0 + partnername: specified the partner name + birthday: specified the birthday day, format: '2000-1-10' 0 + phone: specified the phone number 0 + qq: specified the QQ number 0 + company: specified the company + domain: specified the domain name + oldpasswd: specified the oldpassword + keywords: specified the keywords, example: 'keyword1 keyword2' + keynumbers: specified the keynumbers, example: '123 789' 0 + ''' + self.fullname = fullname + self.nickname = nickname + self.englishname = englishname + self.partnername = partnername + self.birthday = birthday + self.phone = phone + self.qq = qq + self.company = company + self.domain = domain + self.oldpasswd = oldpasswd + self.keywords = keywords + self.keynumbers = keynumbers + + # 常用数字列表,用户和用户名、昵称、英文名、关键字等混合 + self.innerNumList = [] + # 常用前缀列表,用于和手机号、QQ号混合 + self.innerPrefixList = [] + + # 段名列表,由原始全名生成 + self.shortNameList = [] + # 全名列表,由原始全名生成 + self.fullNameList = [] + # 待混合的keyword列表,由于用户名、昵称、英文名、关键字的混合规则一致,因此放到这一个列表内进行混合 + self.mixedKeywordList = [] + + self.result = [] + + + def _genShortNameList(self, fullname=None): + fullname = fullname if fullname else self.fullname + if not fullname: + return [] + else: + result = [] + func = lambda x:[x, x.title(), x[0].lower(), x[0].upper(), x.upper()] + nameSplited = fullname.split() + if len(nameSplited) == 1: + result += func(nameSplited[0]) + elif len(nameSplited) == 2: + shortName = nameSplited[0][0].lower() + nameSplited[1][0].lower() + result += func(shortName) + else: + shortName = nameSplited[0][0].lower() + nameSplited[1][0].lower() + nameSplited[2][0].lower() + result += func(shortName) + shortNameRS = nameSplited[1][0].lower() + nameSplited[2][0].lower() + nameSplited[0][0].lower() + shortNameR = nameSplited[1][0].lower() + nameSplited[2][0].lower() + nameSplited[0] + result += [shortNameR, shortNameRS, shortNameRS.upper()] + + return result + + + def _genFullNameList(self, fullname=None): + fullname = fullname if fullname else self.fullname + if not fullname: + return [] + else: + result = [] + nameSplited = fullname.split() + if len(nameSplited) == 1: + result.append(nameSplited[0]) + elif len(nameSplited) == 2: + result += ["".join(nameSplited), nameSplited[1]+nameSplited[0]] + else: + result += [nameSplited[0]+nameSplited[1]+nameSplited[2], nameSplited[1]+nameSplited[2]+nameSplited[0]] + + return result + [x.upper() for x in result] + + + def _genInnerNumList(self): + result = self._numList + for i in range(0,10): + result += [str(i)*x for x in range(1,10)] + + endyear = int(time.strftime("%Y")) + result += [str(x) for x in range(2000, endyear+1)] + + if self.keynumbers: + result += self.keynumbers.split() + if self.oldpasswd: + result.append(self.oldpasswd) + + return result + + + def _genDateList(self, date): + if not date: + return [] + else: + result = [] + dateSplited = date.split("-") + if len(dateSplited) == 1: + result.append(dateSplited[0]) + elif len(dateSplited) == 2: + result += [dateSplited[0], dateSplited[0]+dateSplited[1], dateSplited[0][-2:]+dateSplited[1]] + else: + result += [dateSplited[0], dateSplited[0]+dateSplited[1], dateSplited[0]+dateSplited[1]+dateSplited[2]] + result += [dateSplited[0][-2:]+dateSplited[1], dateSplited[0][-2:]+dateSplited[1]+dateSplited[2]] + + return result + + def _mixed(self, listA, listB): + if not listA and not listB: + return [] + result = [] + for a,b in itertools.product(listA, listB): + if len(a+b)>5 and len(a+b)<17: + result.append(a+b) + result.append(a+"@"+b) + + return result + + + def _preHandlePhase(self): + self.innerNumList = self._genInnerNumList() + self.innerPrefixList = self._prefixList + [x.upper() for x in self._prefixList] + self.shortNameList = self._genShortNameList() + self.fullNameList = self._genFullNameList() + + self.mixedKeywordList += self.shortNameList + self.mixedKeywordList += self.fullNameList + if self.nickname: + self.mixedKeywordList.append(self.nickname) + if self.englishname: + self.mixedKeywordList.append(self.englishname) + if self.keywords: + self.mixedKeywordList += self.keywords.split() + + + def _mixedPhase(self): + self.result += self._mixed(self.mixedKeywordList, self.innerNumList) + self.result += self._mixed(["520"], self.mixedKeywordList) + if self.phone: + self.result += self._mixed(self.innerPrefixList+self.mixedKeywordList, [self.phone]) + if self.qq: + self.result += self._mixed(self.innerPrefixList+self.mixedKeywordList, [self.qq]) + if self.partnername: + nameList = self._genShortNameList(self.partnername) + nameList += self._genFullNameList(self.partnername) + self.result += self._mixed(self.partnerPrefixList, nameList) + if self.birthday: + dateList = self._genDateList(self.birthday) + self.result += self._mixed(self.innerPrefixList+self.mixedKeywordList, dateList) + if self.domain: + self.result += self._mixed(self.domainPrefixList, [self.domain]) + if self.company: + self.result += self._mixed(self.domainPrefixList, [self.company]) + + + def _lastHandlePhase(self): + self.result += self._commonPasswd + self.result += [x+"." for x in self.result] + + + def generate(self): + self._preHandlePhase() + self._mixedPhase() + self._lastHandlePhase() + + return self.result + + + # [usage] + # pwgen = PasswdGenerator(nickname=nickname,qq=qq) + # wordlist = pwgen.generate() + + + diff --git a/templates/base.html b/templates/base.html index 0b87c3a..e9248b7 100644 --- a/templates/base.html +++ b/templates/base.html @@ -165,6 +165,8 @@

diff --git a/templates/password.html b/templates/password.html new file mode 100644 index 0000000..d0186df --- /dev/null +++ b/templates/password.html @@ -0,0 +1,111 @@ +{% extends "base.html" %} +{% block content %} +
+
+
+

在线社工字典生成

+
+

利用人性的弱点 精准的分析个人密码

+ +
+
+
+ +
+ +
+ + + + + +
+ +
+ +
+ + + + + + +

+ +
+ + + + + + +

+ +
+ + + + + +

+ +
+ + + + + +

+ +
+ + + + + +

+
+ +
+ +
+
+
+ +
+
+
+
+
+ +
+
+
+
+ {% if data %} + + + + + + + + {%for pass in data %} + + + + {%endfor%} + + +
生成的密码
{{pass}}
+ {% endif %} + + +
+
+
+
+
+ +
+{% endblock %} diff --git a/templates/whois.html b/templates/whois.html new file mode 100644 index 0000000..6a0bfb3 --- /dev/null +++ b/templates/whois.html @@ -0,0 +1,50 @@ +{% extends "base.html" %} +{% block content %} +
+
+
+

Whois 在线查询

+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+
+
+ {% if data %} + + + + + + + + + + + +
详细信息
{{data|safe}}
+ {% endif %} + + +
+
+
+
+
+ +
+{% endblock %} diff --git a/whois.py b/whois.py new file mode 100644 index 0000000..9cc89dd --- /dev/null +++ b/whois.py @@ -0,0 +1,802 @@ +#!/usr/bin/env python +# coding=utf-8 + +""" +Function: Whois 模块 +Author: w8ay +Time: 2016年10月22日 21:12:33 +""" + +import socket + +TLDS = [ + ('.br.com', 'whois.centralnic.net', None), + ('.cn.com', 'whois.centralnic.net', None), + ('.de.com', 'whois.centralnic.net', None), + ('.eu.com', 'whois.centralnic.net', None), + ('.gb.com', 'whois.centralnic.net', None), + ('.gb.net', 'whois.centralnic.net', None), + ('.gr.com', 'whois.centralnic.net', None), + ('.hu.com', 'whois.centralnic.net', None), + ('.in.net', 'whois.centralnic.net', None), + ('.no.com', 'whois.centralnic.net', None), + ('.qc.com', 'whois.centralnic.net', None), + ('.ru.com', 'whois.centralnic.net', None), + ('.sa.com', 'whois.centralnic.net', None), + ('.se.com', 'whois.centralnic.net', None), + ('.se.net', 'whois.centralnic.net', None), + ('.uk.com', 'whois.centralnic.net', None), + ('.uk.net', 'whois.centralnic.net', None), + ('.us.com', 'whois.centralnic.net', None), + ('.uy.com', 'whois.centralnic.net', None), + ('.za.com', 'whois.centralnic.net', None), + ('.jpn.com', 'whois.centralnic.net', None), + ('.web.com', 'whois.centralnic.net', None), + ('.com', 'whois.verisign-grs.com', 'VERISIGN'), + ('.za.net', 'whois.za.net', None), + ('.net', 'whois.verisign-grs.com', 'VERISIGN'), + ('.eu.org', 'whois.eu.org', None), + ('.za.org', 'whois.za.org', None), + ('.org', 'whois.pir.org', None), + ('.edu', 'whois.educause.edu', None), + ('.gov', 'whois.dotgov.gov', None), + ('.int', 'whois.iana.org', None), + ('.mil', 'NONE', None), + ('.e164.arpa', 'whois.ripe.net', None), + ('.in-addr.arpa', None, 'ARPA'), + ('.arpa', 'whois.iana.org', None), + ('.aero', 'whois.aero', None), + ('.asia', 'whois.nic.asia', None), + ('.biz', 'whois.biz', None), + ('.cat', 'whois.cat', None), + ('.coop', 'whois.nic.coop', None), + ('.info', 'whois.afilias.net', None), + ('.jobs', 'jobswhois.verisign-grs.com', 'VERISIGN'), + ('.mobi', 'whois.dotmobiregistry.net', None), + ('.museum', 'whois.museum', None), + ('.name', 'whois.nic.name', None), + ('.post', 'whois.dotpostregistry.net', None), + ('.pro', 'whois.dotproregistry.net', None), + ('.tel', 'whois.nic.tel', None), + ('.travel', 'whois.nic.travel', None), + ('.xxx', 'whois.nic.xxx', None), + ('.ac', 'whois.nic.ac', None), + ('.ad', '', 'NONE'), + ('.ae', 'whois.aeda.net.ae', None), + ('.af', 'whois.nic.af', None), + ('.ag', 'whois.nic.ag', None), + ('.ai', 'whois.ai', None), + ('.al', '', 'NONE'), + ('.am', 'whois.amnic.net', None), + ('.an', '', 'NONE'), + ('.ao', '', 'NONE'), + ('.aq', '', 'NONE'), + ('.ar', 'http://www.nic.ar/', 'WEB'), + ('.as', 'whois.nic.as', None), + ('.priv.at', '', 'whois.nic.priv.at'), + ('.at', 'whois.nic.at', None), + ('.au', 'whois.audns.net.au', None), + ('.aw', 'whois.nic.aw', None), + ('.ax', '', 'whois.ax'), + ('.az', 'http://www.nic.az/', 'WEB'), + ('.ba', 'http://www.nic.ba/stream/whois/', 'WEB'), + ('.bb', 'http://whois.telecoms.gov.bb/search_domain.php', 'WEB'), + ('.bd', 'http://whois.btcl.net.bd/', 'WEB'), + ('.be', 'whois.dns.be', None), + ('.bf', '', 'NONE'), + ('.bg', 'whois.register.bg', None), + ('.bh', '', 'NONE'), + ('.bi', 'whois1.nic.bi', None), + ('.bj', 'whois.nic.bj', None), + ('.bm', 'http://207.228.133.14/cgi-bin/lansaweb?procfun+BMWHO+BMWHO2+WHO', 'WEB'), + ('.bn', '', 'whois.bn'), + ('.bo', 'whois.nic.bo', None), + ('.br', 'whois.registro.br', None), + ('.bs', 'http://www.nic.bs/cgi-bin/search.pl', 'WEB'), + ('.bt', 'http://www.nic.bt/', 'WEB'), + ('.bv', '', 'NONE'), + ('.by', 'whois.cctld.by', None), + ('.bw', 'whois.nic.net.bw', None), + ('.bz', 'AFILIAS', None), + ('.co.ca', 'whois.co.ca', None), + ('.ca', 'whois.cira.ca', None), + ('.cc', 'ccwhois.verisign-grs.com', 'VERISIGN'), + ('.cd', 'whois.nic.cd', None), + ('.cf', 'whois.dot.cf', None), + ('.cg', 'http://www.nic.cg/cgi-bin/whois.pl', 'WEB'), + ('.ch', 'whois.nic.ch', None), + ('.ci', 'whois.nic.ci', None), + ('.ck', 'NONE', None), + ('.cl', 'whois.nic.cl', None), + ('.cm', 'whois.netcom.cm', None), + ('.edu.cn', 'whois.edu.cn', None), + ('.cn', 'whois.cnnic.cn', None), + ('.uk.co', 'whois.uk.co', None), + ('.co', 'whois.nic.co', None), + ('.cr', 'http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do', 'WEB'), + ('.cu', 'http://www.nic.cu/', 'WEB'), + ('.cv', 'http://www.dns.cv/', 'WEB'), + ('.cw', '', 'NONE'), + ('.cx', 'whois.nic.cx', None), + ('.cy', 'http://www.nic.cy/nslookup/online_database.php', 'WEB'), + ('.cz', 'whois.nic.cz', None), + ('.de', 'whois.denic.de', None), + ('.dj', 'http://www.nic.dj/whois.php', 'WEB'), + ('.dk', 'whois.dk-hostmaster.dk', None), + ('.dm', 'whois.nic.dm', None), + ('.do', 'http://www.nic.do/whois-h.php3', 'WEB'), + ('.dz', 'whois.nic.dz', None), + ('.ec', 'whois.nic.ec', None), + ('.ee', 'whois.tld.ee', None), + ('.eg', '', 'NONE'), + ('.er', '', 'NONE'), + ('.es', 'https://www.nic.es/', 'WEB'), + ('.et', '', 'NONE'), + ('.eu', 'whois.eu', None), + ('.fi', 'whois.fi', None), + ('.fj', 'whois.usp.ac.fj', None), + ('.fk', '', 'NONE'), + ('.fm', 'http://dot.fm/whois.html', 'WEB'), + ('.fo', 'whois.nic.fo', None), + ('.fr', 'whois.nic.fr', None), + ('.ga', '', 'whois.dot.ga'), + ('.gb', 'NONE', None), + ('.gd', 'whois.nic.gd', None), + ('.ge', 'http://www.registration.ge/', 'WEB'), + ('.gf', 'https://www.dom-enic.com/whois.html', 'WEB'), + ('.gg', 'whois.gg', None), + ('.gh', 'http://www.nic.gh/customer/search_c.htm', 'WEB'), + ('.gi', 'AFILIAS', None), + ('.gl', 'whois.nic.gl', None), + ('.gm', 'http://www.nic.gm/htmlpages/whois.htm', 'WEB'), + ('.gn', '', 'NONE'), + ('.gp', 'https://www.dom-enic.com/whois.html', 'WEB'), + ('.gq', 'whois.dominio.gq', None), + ('.gr', 'https://grweb.ics.forth.gr/Whois?lang=en', 'WEB'), + ('.gs', 'whois.nic.gs', None), + ('.gt', 'http://www.gt/who_is.html', 'WEB'), + ('.gu', 'http://gadao.gov.gu/domainsearch.htm', 'WEB'), + ('.gw', '', 'NONE'), + ('.gy', 'whois.registry.gy', None), + ('.hk', 'whois.hkirc.hk', None), + ('.hm', 'whois.registry.hm', None), + ('.hn', 'whois.nic.hn', None), + ('.hr', 'whois.dns.hr', None), + ('.ht', 'whois.nic.ht', None), + ('.hu', 'whois.nic.hu', None), + ('.id', 'whois.pandi.or.id', None), + ('.ie', 'whois.domainregistry.ie', None), + ('.il', 'whois.isoc.org.il', None), + ('.im', 'whois.nic.im', None), + ('.in', '', 'whois.inregistry.net'), + ('.io', 'whois.nic.io', None), + ('.iq', '', 'whois.cmc.iq'), + ('.ir', 'whois.nic.ir', None), + ('.is', 'whois.isnic.is', None), + ('.it', 'whois.nic.it', None), + ('.je', 'whois.je', None), + ('.jm', '', 'NONE'), + ('.jo', 'http://www.dns.jo/Whois.aspx', 'WEB'), + ('.jp', 'whois.jprs.jp', None), + ('.ke', 'whois.kenic.or.ke', None), + ('.kg', 'whois.domain.kg', None), + ('.kh', '', 'NONE'), + ('.ki', 'whois.nic.mu', None), + ('.km', '', 'NONE'), + ('.kn', 'http://www.nic.kn/', 'WEB'), + ('.kp', '', 'NONE'), + ('.kr', 'whois.kr', None), + ('.kw', 'http://www.kw/', 'WEB'), + ('.ky', 'http://kynseweb.messagesecure.com/kywebadmin/', 'WEB'), + ('.kz', 'whois.nic.kz', None), + ('.la', 'whois.nic.la', None), + ('.lb', 'http://www.aub.edu.lb/lbdr/', 'WEB'), + ('.lc', 'AFILIAS', None), + ('.li', 'whois.nic.li', None), + ('.lk', 'whois.nic.lk', None), + ('.lr', '', 'NONE'), + ('.ls', 'http://www.co.ls/co.asp', 'WEB'), + ('.lt', 'whois.domreg.lt', None), + ('.lu', 'whois.dns.lu', None), + ('.lv', 'whois.nic.lv', None), + ('.ly', 'whois.nic.ly', None), + ('.ma', '', 'whois.iam.net.ma'), + ('.mc', '', 'NONE'), + ('.md', 'http://www.dns.md/wh1.php', 'WEB'), + ('.me', 'whois.nic.me', None), + ('.mg', 'whois.nic.mg', None), + ('.mh', '', 'NONE'), + ('.mk', 'whois.marnet.mk', None), + ('.ml', '', 'whois.dot.ml'), + ('.mm', '', 'NONE'), + ('.mn', 'whois.nic.mn', None), + ('.mo', 'http://www.monic.net.mo/', 'WEB'), + ('.mp', '', 'NONE'), + ('.mq', 'https://www.dom-enic.com/whois.html', 'WEB'), + ('.mr', '', 'NONE'), + ('.ms', 'whois.nic.ms', None), + ('.mt', 'https://www.nic.org.mt/dotmt/', 'WEB'), + ('.mu', 'whois.nic.mu', None), + ('.mv', '', 'NONE'), + ('.mw', 'http://www.registrar.mw/', 'WEB'), + ('.mx', 'whois.mx', None), + ('.my', 'whois.mynic.my', None), + ('.mz', 'whois.nic.mz', None), + ('.na', 'whois.na-nic.com.na', None), + ('.nc', 'whois.nc', None), + ('.ne', '', 'NONE'), + ('.nf', 'whois.nic.nf', None), + ('.ng', 'whois.nic.net.ng', None), + ('.ni', 'http://www.nic.ni/', 'WEB'), + ('.nl', 'whois.domain-registry.nl', None), + ('.no', 'whois.norid.no', None), + ('.np', 'http://register.mos.com.np/userSearchInc.asp', 'WEB'), + ('.nr', 'http://www.cenpac.net.nr/dns/whois.html', 'WEB'), + ('.nu', 'whois.iis.nu', None), + ('.nz', 'whois.srs.net.nz', None), + ('.om', 'whois.registry.om', None), + ('.pa', 'http://www.nic.pa/', 'WEB'), + ('.pe', 'kero.yachay.pe', None), + ('.pf', 'whois.registry.pf', None), + ('.pg', '', 'NONE'), + ('.ph', 'http://www.dot.ph/whois', 'WEB'), + ('.pk', 'http://www.pknic.net.pk/', 'WEB'), + ('.co.pl', '', 'whois.co.pl'), + ('.pl', 'whois.dns.pl', None), + ('.pm', 'whois.nic.pm', None), + ('.pn', 'http://www.pitcairn.pn/PnRegistry/', 'WEB'), + ('.pr', 'whois.nic.pr', None), + ('.ps', 'whois.pnina.ps', None), + ('.pt', 'whois.dns.pt', None), + ('.pw', 'whois.nic.pw', None), + ('.py', 'http://www.nic.py/consultas.html', 'WEB'), + ('.qa', 'whois.registry.qa', None), + ('.re', 'whois.nic.re', None), + ('.ro', 'whois.rotld.ro', None), + ('.rs', 'whois.rnids.rs', None), + ('.edu.ru', 'whois.informika.ru', None), + ('.ru', 'whois.tcinet.ru', None), + ('.rw', '', 'whois.ricta.org.rw'), + ('.sa', 'whois.nic.net.sa', None), + ('.sb', 'whois.nic.sb', None), + ('.sc', '', 'AFILIAS'), + ('.sd', '', 'NONE'), + ('.se', 'whois.iis.se', None), + ('.sg', 'whois.sgnic.sg', None), + ('.sh', 'whois.nic.sh', None), + ('.si', 'whois.arnes.si', None), + ('.sj', '', 'NONE'), + ('.sk', 'whois.sk-nic.sk', None), + ('.sl', 'whois.nic.sl', None), + ('.sm', 'whois.nic.sm', None), + ('.sn', 'whois.nic.sn', None), + ('.so', 'whois.nic.so', None), + ('.sr', '', 'NONE'), + ('.st', 'whois.nic.st', None), + ('.su', 'whois.tcinet.ru', None), + ('.sv', 'http://www.svnet.org.sv/', 'WEB'), + ('.sx', 'whois.sx', None), + ('.sy', 'whois.tld.sy', None), + ('.sz', '', 'NONE'), + ('.tc', 'whois.meridiantld.net', None), + ('.td', 'http://www.nic.td/', 'WEB'), + ('.tf', 'whois.nic.tf', None), + ('.tg', 'http://www.nic.tg/', 'WEB'), + ('.th', 'whois.thnic.co.th', None), + ('.tj', 'http://www.nic.tj/whois.html', 'WEB'), + ('.tk', 'whois.dot.tk', None), + ('.tl', 'whois.nic.tl', None), + ('.tm', 'whois.nic.tm', None), + ('.tn', 'whois.ati.tn', None), + ('.to', 'whois.tonic.to', None), + ('.tp', '', 'NONE'), + ('.tr', 'whois.nic.tr', None), + ('.tt', 'http://www.nic.tt/cgi-bin/search.pl', 'WEB'), + ('.tv', 'tvwhois.verisign-grs.com', 'VERISIGN'), + ('.tw', 'whois.twnic.net.tw', None), + ('.tz', 'whois.tznic.or.tz', None), + ('.biz.ua', 'whois.biz.ua', None), + ('.co.ua', 'whois.co.ua', None), + ('.pp.ua', 'whois.pp.ua', None), + ('.ua', 'whois.ua', None), + ('.ug', 'whois.co.ug', None), + ('.ac.uk', 'whois.ja.net', None), + ('.bl.uk', 'NONE', None), + ('.british-library.uk', 'NONE', None), + ('.gov.uk', 'whois.ja.net', None), + ('.icnet.uk', 'NONE', None), + ('.jet.uk', 'NONE', None), + ('.mod.uk', 'NONE', None), + ('.nhs.uk', 'NONE', None), + ('.nls.uk', 'NONE', None), + ('.parliament.uk', 'NONE', None), + ('.police.uk', 'NONE', None), + ('.uk', 'whois.nic.uk', None), + ('.fed.us', 'whois.nic.gov', None), + ('.us', 'whois.nic.us', None), + ('.com.uy', 'https://nic.anteldata.com.uy/dns/consultaWhois/whois.action', 'WEB'), + ('.uy', 'whois.nic.org.uy', None), + ('.uz', 'whois.cctld.uz', None), + ('.va', 'NONE', None), + ('.vc', 'AFILIAS', None), + ('.ve', 'whois.nic.ve', None), + ('.vg', 'whois.adamsnames.tc', None), + ('.vi', 'http://www.nic.vi/whoisform.htm', 'WEB'), + ('.vn', 'http://www.vnnic.vn/en/domain', 'WEB'), + ('.vu', 'vunic.vu', None), + ('.wf', 'whois.nic.wf', None), + ('.ws', 'whois.website.ws', None), + ('.ye', '', 'NONE'), + ('.yt', 'whois.nic.yt', None), + ('.ac.za', 'whois.ac.za', None), + ('.alt.za', 'whois.alt.za', None), + ('.co.za', 'whois.registry.net.za', None), + ('.gov.za', 'whois.gov.za', None), + ('.net.za', 'whois.net.za', None), + ('.org.za', 'http://www.org.za/', 'WEB'), + ('.web.za', 'whois.web.za', None), + ('.za', '', 'NONE'), + ('.zm', 'whois.nic.zm', None), + ('.zw', '', 'NONE'), + ('.xn--3e0b707e', '', 'whois.kr'), + ('.xn--45brj9c', '', 'whois.inregistry.net'), + ('.xn--80ao21a', '', 'whois.nic.kz'), + ('.xn--90a3ac', '', 'whois.rnids.rs'), + ('.xn--clchc0ea0b2g2a9gcd', '', 'whois.sgnic.sg'), + ('.xn--d1alf', '', 'whois.marnet.mk'), + ('.xn--fiqs8s', '', 'cwhois.cnnic.cn'), + ('.xn--fiqz9s', '', 'cwhois.cnnic.cn'), + ('.xn--fpcrj9c3d', '', 'whois.inregistry.net'), + ('.xn--fzc2c9e2c', '', 'whois.nic.lk'), + ('.xn--gecrj9c', '', 'whois.inregistry.net'), + ('.xn--h2brj9c', '', 'whois.inregistry.net'), + ('.xn--j1amh', '', 'whois.dotukr.com'), + ('.xn--j6w193g', '', 'whois.hkirc.hk'), + ('.xn--kprw13d', '', 'whois.twnic.net.tw'), + ('.xn--kpry57d', '', 'whois.twnic.net.tw'), + ('.xn--l1acc', '', 'whois.nic.mn'), + ('.xn--lgbbat1ad8j', '', 'whois.nic.dz'), + ('.xn--mgb9awbf', '', 'whois.registry.om'), + ('.xn--mgba3a4f16a', '', 'whois.nic.ir'), + ('.xn--mgbaam7a8h', '', 'whois.aeda.net.ae'), + ('.xn--mgbayh7gpa', 'http://idn.jo/whois_a.aspx', 'WEB'), + ('.xn--mgbbh1a71e', '', 'whois.inregistry.net'), + ('.xn--mgbc0a9azcg', '', 'NONE'), + ('.xn--mgberp4a5d4ar', '', 'whois.nic.net.sa'), + ('.xn--mgbx4cd0ab', '', 'whois.mynic.my'), + ('.xn--node', '', 'whois.itdc.ge'), + ('.xn--o3cw4h', '', 'whois.thnic.co.th'), + ('.xn--ogbpf8fl', '', 'whois.tld.sy'), + ('.xn--p1ai', '', 'whois.tcinet.ru'), + ('.xn--pgbs0dh', '', 'NONE'), + ('.xn--s9brj9c', '', 'whois.inregistry.net'), + ('.xn--wgbh1c', '', 'whois.dotmasr.eg'), + ('.xn--wgbl6a', '', 'whois.registry.qa'), + ('.xn--xkc2al3hye2a', '', 'whois.nic.lk'), + ('.xn--xkc2dl3a5ee0h', '', 'whois.inregistry.net'), + ('.xn--yfro4i67o', '', 'whois.sgnic.sg'), + ('.xn--ygbi2ammx', '', 'whois.pnina.ps'), + ('.abogado', 'whois.abogado', None), + ('.academy', 'whois.academy', None), + ('.accountants', 'whois.accountants', None), + ('.active', 'whois.active', None), + ('.actor', 'whois.actor', None), + ('.agency', 'whois.agency', None), + ('.airforce', 'whois.airforce', None), + ('.allfinanz', 'whois.allfinanz', None), + ('.alsace', 'whois.alsace', None), + ('.archi', 'whois.archi', None), + ('.army', 'whois.army', None), + ('.associates', 'whois.associates', None), + ('.attorney', 'whois.attorney', None), + ('.auction', 'whois.auction', None), + ('.audio', 'whois.audio', None), + ('.autos', 'whois.autos', None), + ('.axa', 'whois.axa', None), + ('.band', 'whois.band', None), + ('.bar', 'whois.bar', None), + ('.bargains', 'whois.bargains', None), + ('.bayern', 'whois.bayern', None), + ('.beer', 'whois.beer', None), + ('.berlin', 'whois.berlin', None), + ('.best', 'whois.best', None), + ('.bid', 'whois.bid', None), + ('.bike', 'whois.bike', None), + ('.bio', 'whois.bio', None), + ('.black', 'whois.black', None), + ('.blackfriday', 'whois.blackfriday', None), + ('.bloomberg', 'whois.bloomberg', None), + ('.blue', 'whois.blue', None), + ('.bmw', 'whois.bmw', None), + ('.bnpparibas', 'whois.bnpparibas', None), + ('.boo', 'whois.boo', None), + ('.boutique', 'whois.boutique', None), + ('.brussels', 'whois.brussels', None), + ('.budapest', 'whois.budapest', None), + ('.build', 'whois.build', None), + ('.builders', 'whois.builders', None), + ('.business', 'whois.business', None), + ('.buzz', 'whois.buzz', None), + ('.bzh', 'whois.bzh', None), + ('.cab', 'whois.cab', None), + ('.cal', 'whois.cal', None), + ('.camera', 'whois.camera', None), + ('.camp', 'whois.camp', None), + ('.cancerresearch', 'whois.cancerresearch', None), + ('.capetown', 'whois.capetown', None), + ('.capital', 'whois.capital', None), + ('.caravan', 'whois.caravan', None), + ('.cards', 'whois.cards', None), + ('.care', 'whois.care', None), + ('.career', 'whois.career', None), + ('.careers', 'whois.careers', None), + ('.casa', 'whois.casa', None), + ('.cash', 'whois.cash', None), + ('.catering', 'whois.catering', None), + ('.center', 'whois.center', None), + ('.ceo', 'whois.ceo', None), + ('.cern', 'whois.cern', None), + ('.channel', 'whois.channel', None), + ('.cheap', 'whois.cheap', None), + ('.christmas', 'whois.christmas', None), + ('.chrome', 'whois.chrome', None), + ('.church', 'whois.church', None), + ('.citic', 'whois.citic', None), + ('.city', 'whois.city', None), + ('.claims', 'whois.claims', None), + ('.cleaning', 'whois.cleaning', None), + ('.click', 'whois.click', None), + ('.clinic', 'whois.clinic', None), + ('.clothing', 'whois.clothing', None), + ('.club', 'whois.club', None), + ('.codes', 'whois.codes', None), + ('.coffee', 'whois.coffee', None), + ('.college', 'whois.college', None), + ('.cologne', 'whois.cologne', None), + ('.com', 'whois.com', None), + ('.community', 'whois.community', None), + ('.company', 'whois.company', None), + ('.computer', 'whois.computer', None), + ('.condos', 'whois.condos', None), + ('.construction', 'whois.construction', None), + ('.consulting', 'whois.consulting', None), + ('.contractors', 'whois.contractors', None), + ('.cooking', 'whois.cooking', None), + ('.cool', 'whois.cool', None), + ('.country', 'whois.country', None), + ('.credit', 'whois.credit', None), + ('.creditcard', 'whois.creditcard', None), + ('.crs', 'whois.crs', None), + ('.cruises', 'whois.cruises', None), + ('.cuisinella', 'whois.cuisinella', None), + ('.cymru', 'whois.cymru', None), + ('.dad', 'whois.dad', None), + ('.dance', 'whois.dance', None), + ('.dating', 'whois.dating', None), + ('.day', 'whois.day', None), + ('.deals', 'whois.deals', None), + ('.degree', 'whois.degree', None), + ('.delivery', 'whois.delivery', None), + ('.democrat', 'whois.democrat', None), + ('.dental', 'whois.dental', None), + ('.dentist', 'whois.dentist', None), + ('.desi', 'whois.desi', None), + ('.diamonds', 'whois.diamonds', None), + ('.diet', 'whois.diet', None), + ('.digital', 'whois.digital', None), + ('.direct', 'whois.direct', None), + ('.directory', 'whois.directory', None), + ('.discount', 'whois.discount', None), + ('.dnp', 'whois.dnp', None), + ('.domains', 'whois.domains', None), + ('.durban', 'whois.durban', None), + ('.dvag', 'whois.dvag', None), + ('.eat', 'whois.eat', None), + ('.education', 'whois.education', None), + ('.email', 'whois.email', None), + ('.emerck', 'whois.emerck', None), + ('.energy', 'whois.energy', None), + ('.engineer', 'whois.engineer', None), + ('.engineering', 'whois.engineering', None), + ('.enterprises', 'whois.enterprises', None), + ('.equipment', 'whois.equipment', None), + ('.esq', 'whois.esq', None), + ('.estate', 'whois.estate', None), + ('.eus', 'whois.eus', None), + ('.events', 'whois.events', None), + ('.exchange', 'whois.exchange', None), + ('.expert', 'whois.expert', None), + ('.exposed', 'whois.exposed', None), + ('.fail', 'whois.fail', None), + ('.farm', 'whois.farm', None), + ('.feedback', 'whois.feedback', None), + ('.finance', 'whois.finance', None), + ('.financial', 'whois.financial', None), + ('.fish', 'whois.fish', None), + ('.fishing', 'whois.fishing', None), + ('.fitness', 'whois.fitness', None), + ('.flights', 'whois.flights', None), + ('.florist', 'whois.florist', None), + ('.flsmidth', 'whois.flsmidth', None), + ('.fly', 'whois.fly', None), + ('.foo', 'whois.foo', None), + ('.forsale', 'whois.forsale', None), + ('.foundation', 'whois.foundation', None), + ('.frl', 'whois.frl', None), + ('.frogans', 'whois.frogans', None), + ('.fund', 'whois.fund', None), + ('.furniture', 'whois.furniture', None), + ('.futbol', 'whois.futbol', None), + ('.gal', 'whois.gal', None), + ('.gallery', 'whois.gallery', None), + ('.gbiz', 'whois.gbiz', None), + ('.gent', 'whois.gent', None), + ('.gift', 'whois.gift', None), + ('.gifts', 'whois.gifts', None), + ('.gives', 'whois.gives', None), + ('.glass', 'whois.glass', None), + ('.gle', 'whois.gle', None), + ('.global', 'whois.global', None), + ('.globo', 'whois.globo', None), + ('.gmail', 'whois.gmail', None), + ('.gmo', 'whois.gmo', None), + ('.gmx', 'whois.gmx', None), + ('.google', 'whois.google', None), + ('.gop', 'whois.gop', None), + ('.graphics', 'whois.graphics', None), + ('.gratis', 'whois.gratis', None), + ('.green', 'whois.green', None), + ('.gripe', 'whois.gripe', None), + ('.guide', 'whois.guide', None), + ('.guitars', 'whois.guitars', None), + ('.guru', 'whois.guru', None), + ('.hamburg', 'whois.hamburg', None), + ('.haus', 'whois.haus', None), + ('.healthcare', 'whois.healthcare', None), + ('.help', 'whois.help', None), + ('.here', 'whois.here', None), + ('.hiphop', 'whois.hiphop', None), + ('.hiv', 'whois.hiv', None), + ('.holdings', 'whois.holdings', None), + ('.holiday', 'whois.holiday', None), + ('.homes', 'whois.homes', None), + ('.horse', 'whois.horse', None), + ('.host', 'whois.host', None), + ('.hosting', 'whois.hosting', None), + ('.house', 'whois.house', None), + ('.how', 'whois.how', None), + ('.ibm', 'whois.ibm', None), + ('.immo', 'whois.immo', None), + ('.immobilien', 'whois.immobilien', None), + ('.industries', 'whois.industries', None), + ('.info', 'whois.info', None), + ('.ing', 'whois.ing', None), + ('.ink', 'whois.ink', None), + ('.institute', 'whois.institute', None), + ('.insure', 'whois.insure', None), + ('.international', 'whois.international', None), + ('.investments', 'whois.investments', None), + ('.jetzt', 'whois.jetzt', None), + ('.joburg', 'whois.joburg', None), + ('.juegos', 'whois.juegos', None), + ('.kaufen', 'whois.kaufen', None), + ('.kim', 'whois.kim', None), + ('.kitchen', 'whois.kitchen', None), + ('.kiwi', 'whois.kiwi', None), + ('.koeln', 'whois.koeln', None), + ('.krd', 'whois.krd', None), + ('.kred', 'whois.kred', None), + ('.lacaixa', 'whois.lacaixa', None), + ('.land', 'whois.land', None), + ('.lawyer', 'whois.lawyer', None), + ('.lease', 'whois.lease', None), + ('.lgbt', 'whois.lgbt', None), + ('.life', 'whois.life', None), + ('.lighting', 'whois.lighting', None), + ('.limited', 'whois.limited', None), + ('.limo', 'whois.limo', None), + ('.link', 'whois.link', None), + ('.loans', 'whois.loans', None), + ('.london', 'whois.london', None), + ('.lotto', 'whois.lotto', None), + ('.ltda', 'whois.ltda', None), + ('.luxe', 'whois.luxe', None), + ('.luxury', 'whois.luxury', None), + ('.maison', 'whois.maison', None), + ('.management', 'whois.management', None), + ('.mango', 'whois.mango', None), + ('.market', 'whois.market', None), + ('.marketing', 'whois.marketing', None), + ('.media', 'whois.media', None), + ('.meet', 'whois.meet', None), + ('.melbourne', 'whois.melbourne', None), + ('.meme', 'whois.meme', None), + ('.menu', 'whois.menu', None), + ('.miami', 'whois.miami', None), + ('.mini', 'whois.mini', None), + ('.moda', 'whois.moda', None), + ('.moe', 'whois.moe', None), + ('.monash', 'whois.monash', None), + ('.mortgage', 'whois.mortgage', None), + ('.moscow', 'whois.moscow', None), + ('.motorcycles', 'whois.motorcycles', None), + ('.mov', 'whois.mov', None), + ('.nagoya', 'whois.nagoya', None), + ('.navy', 'whois.navy', None), + ('.net', 'whois.net', None), + ('.network', 'whois.network', None), + ('.neustar', 'whois.neustar', None), + ('.new', 'whois.new', None), + ('.nexus', 'whois.nexus', None), + ('.ngo', 'whois.ngo', None), + ('.nhk', 'whois.nhk', None), + ('.ninja', 'whois.ninja', None), + ('.nra', 'whois.nra', None), + ('.nrw', 'whois.nrw', None), + ('.nyc', 'whois.nyc', None), + ('.okinawa', 'whois.okinawa', None), + ('.ong', 'whois.ong', None), + ('.onl', 'whois.onl', None), + ('.ooo', 'whois.ooo', None), + ('.org', 'whois.org', None), + ('.organic', 'whois.organic', None), + ('.otsuka', 'whois.otsuka', None), + ('.ovh', 'whois.ovh', None), + ('.paris', 'whois.paris', None), + ('.partners', 'whois.partners', None), + ('.parts', 'whois.parts', None), + ('.pharmacy', 'whois.pharmacy', None), + ('.photo', 'whois.photo', None), + ('.photography', 'whois.photography', None), + ('.photos', 'whois.photos', None), + ('.physio', 'whois.physio', None), + ('.pics', 'whois.pics', None), + ('.pictures', 'whois.pictures', None), + ('.pink', 'whois.pink', None), + ('.pizza', 'whois.pizza', None), + ('.place', 'whois.place', None), + ('.plumbing', 'whois.plumbing', None), + ('.pohl', 'whois.pohl', None), + ('.poker', 'whois.poker', None), + ('.praxi', 'whois.praxi', None), + ('.press', 'whois.press', None), + ('.prod', 'whois.prod', None), + ('.productions', 'whois.productions', None), + ('.prof', 'whois.prof', None), + ('.properties', 'whois.properties', None), + ('.property', 'whois.property', None), + ('.pub', 'whois.pub', None), + ('.qpon', 'whois.qpon', None), + ('.quebec', 'whois.quebec', None), + ('.realtor', 'whois.realtor', None), + ('.recipes', 'whois.recipes', None), + ('.red', 'whois.red', None), + ('.rehab', 'whois.rehab', None), + ('.reise', 'whois.reise', None), + ('.reisen', 'whois.reisen', None), + ('.ren', 'whois.ren', None), + ('.rentals', 'whois.rentals', None), + ('.repair', 'whois.repair', None), + ('.report', 'whois.report', None), + ('.republican', 'whois.republican', None), + ('.rest', 'whois.rest', None), + ('.restaurant', 'whois.restaurant', None), + ('.reviews', 'whois.reviews', None), + ('.rich', 'whois.rich', None), + ('.rio', 'whois.rio', None), + ('.rip', 'whois.rip', None), + ('.rocks', 'whois.rocks', None), + ('.rodeo', 'whois.rodeo', None), + ('.rsvp', 'whois.rsvp', None), + ('.ruhr', 'whois.ruhr', None), + ('.ryukyu', 'whois.ryukyu', None), + ('.saarland', 'whois.saarland', None), + ('.sarl', 'whois.sarl', None), + ('.sca', 'whois.sca', None), + ('.scb', 'whois.scb', None), + ('.schmidt', 'whois.schmidt', None), + ('.schule', 'whois.schule', None), + ('.scot', 'whois.scot', None), + ('.services', 'whois.services', None), + ('.sexy', 'whois.sexy', None), + ('.shiksha', 'whois.shiksha', None), + ('.shoes', 'whois.shoes', None), + ('.singles', 'whois.singles', None), + ('.social', 'whois.social', None), + ('.software', 'whois.software', None), + ('.sohu', 'whois.sohu', None), + ('.solar', 'whois.solar', None), + ('.solutions', 'whois.solutions', None), + ('.soy', 'whois.soy', None), + ('.space', 'whois.space', None), + ('.spiegel', 'whois.spiegel', None), + ('.supplies', 'whois.supplies', None), + ('.supply', 'whois.supply', None), + ('.support', 'whois.support', None), + ('.surf', 'whois.surf', None), + ('.surgery', 'whois.surgery', None), + ('.suzuki', 'whois.suzuki', None), + ('.sydney', 'whois.sydney', None), + ('.systems', 'whois.systems', None), + ('.taipei', 'whois.taipei', None), + ('.tatar', 'whois.tatar', None), + ('.tattoo', 'whois.tattoo', None), + ('.tax', 'whois.tax', None), + ('.technology', 'whois.technology', None), + ('.tienda', 'whois.tienda', None), + ('.tips', 'whois.tips', None), + ('.tirol', 'whois.tirol', None), + ('.today', 'whois.today', None), + ('.tokyo', 'whois.tokyo', None), + ('.tools', 'whois.tools', None), + ('.top', 'whois.top', None), + ('.town', 'whois.town', None), + ('.toys', 'whois.toys', None), + ('.trade', 'whois.trade', None), + ('.training', 'whois.training', None), + ('.tui', 'whois.tui', None), + ('.university', 'whois.university', None), + ('.uno', 'whois.uno', None), + ('.uol', 'whois.uol', None), + ('.vacations', 'whois.vacations', None), + ('.vegas', 'whois.vegas', None), + ('.ventures', 'whois.ventures', None), + ('.versicherung', 'whois.versicherung', None), + ('.vet', 'whois.vet', None), + ('.viajes', 'whois.viajes', None), + ('.villas', 'whois.villas', None), + ('.vision', 'whois.vision', None), + ('.vlaanderen', 'whois.vlaanderen', None), + ('.vodka', 'whois.vodka', None), + ('.vote', 'whois.vote', None), + ('.voting', 'whois.voting', None), + ('.voto', 'whois.voto', None), + ('.voyage', 'whois.voyage', None), + ('.wales', 'whois.wales', None), + ('.wang', 'whois.wang', None), + ('.watch', 'whois.watch', None), + ('.webcam', 'whois.webcam', None), + ('.website', 'whois.website', None), + ('.wed', 'whois.wed', None), + ('.wedding', 'whois.wedding', None), + ('.whoswho', 'whois.whoswho', None), + ('.wien', 'whois.wien', None), + ('.wiki', 'whois.wiki', None), + ('.williamhill', 'whois.williamhill', None), + ('.wme', 'whois.wme', None), + ('.work', 'whois.work', None), + ('.works', 'whois.works', None), + ('.world', 'whois.world', None), + ('.wtc', 'whois.wtc', None), + ('.wtf', 'whois.wtf', None), + ('.xyz', 'whois.xyz', None), + ('.yachts', 'whois.yachts', None), + ('.yandex', 'whois.yandex', None), + ('.yoga', 'whois.yoga', None), + ('.yokohama', 'whois.yokohama', None), + ('.youtube', 'whois.youtube', None), + ('.zip', 'whois.zip', None), + ('.zone', 'whois.zone', None), +] + +def whois_request(domain, server, port=43): + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.connect((server, port)) + sock.send(("%s\r\n" % domain).encode("utf-8")) + buff = b"" + while True: + data = sock.recv(1024) + if len(data) == 0: + break + buff += data + return buff.decode("utf-8") + +#print whois_request("baidu.com","whois.verisign-grs.com") +def whois(domain): + r = domain.rindex(".") + houz = domain[r:] + for data in TLDS: + if data[0] == houz: + return whois_request(domain,data[1]) + return "" + From 414918e6ad9ddaaccabbad7f7a5033dfb7f9ce8d Mon Sep 17 00:00:00 2001 From: boyhack <34109680@qq.com> Date: Tue, 25 Oct 2016 12:11:01 +0800 Subject: [PATCH 2/8] update readme.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 85be403..8520cd6 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,11 @@ web框架是flask 前端框架是amazeUI 需要支持 flask + pip install flask +pip install requests 输入 python myweb.py 就可以运行了 +10.25更新 加入了社会工程学密码生成和whois查询 10.21更新 加入了CMS在线识别 -需要pip install requests \ No newline at end of file From 636310c7ec3c9830b0da300db56d832d45fccfb4 Mon Sep 17 00:00:00 2001 From: boyhack <34109680@qq.com> Date: Mon, 7 Nov 2016 12:23:19 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E4=BA=86=E7=A4=BE?= =?UTF-8?q?=E5=B7=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- myweb.py | 12 ++++++++++ skg.py | 33 ++++++++++++++++++++++++++ templates/base.html | 1 + templates/skg.html | 58 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 104 insertions(+) create mode 100644 skg.py create mode 100644 templates/skg.html diff --git a/myweb.py b/myweb.py index 5fecd63..192c92b 100644 --- a/myweb.py +++ b/myweb.py @@ -8,6 +8,8 @@ import cms import sys import whois +import skg + reload(sys) sys.setdefaultencoding('utf-8') @@ -76,5 +78,15 @@ def whoisa(): else: return render_template('whois.html',title="Whois查询") +#调用外部社工库进行查询 +@app.route('/pass',methods=["get","post"]) +def findpass(): + if request.method == 'POST': + info = request.form.get("search") + data = skg.findpass(info) + return render_template('skg.html',data=data,title="社工库查询") + else: + return render_template('skg.html',title="社工库查询") + if __name__ == '__main__': app.run(debug=True) diff --git a/skg.py b/skg.py new file mode 100644 index 0000000..b33013a --- /dev/null +++ b/skg.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python +# coding=utf-8 + +""" +社工库调用 +""" + +import requests +import json + +def findpass(username): + payload = {'q':username} + headers = {"Accept":"application/json, text/javascript, */*; q=0.01", + "User-Agent":"Mozilla/5.0 (Windows NT 9.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36", + "Referer":"http://www.fangzhuangku.com/pwd"} + r = requests.post("http://www.fangzhuangku.com/function/pwdsearch.php",data = payload,headers=headers) + s = json.loads(r.text) + sdata = s["data"] + dict = list() + if len(sdata): + for key in sdata: + for key1 in sdata[key]: + ls_data = {'u':'','p':'','e':'','s':key} + if 'u' in key1.keys(): + ls_data["u"] = key1["u"] + if 'p' in key1.keys(): + ls_data["p"] = key1["p"] + if 'e' in key1.keys(): + ls_data["e"] = key1["e"] + dict.append(ls_data) + return dict +if __name__ == '__main__': + pass \ No newline at end of file diff --git a/templates/base.html b/templates/base.html index e9248b7..c741660 100644 --- a/templates/base.html +++ b/templates/base.html @@ -167,6 +167,7 @@

  • CMS识别
  • 密码生成
  • whois查询
  • +
  • 社工库
  • 开启全屏
  • diff --git a/templates/skg.html b/templates/skg.html new file mode 100644 index 0000000..aae89e2 --- /dev/null +++ b/templates/skg.html @@ -0,0 +1,58 @@ +{% extends "base.html" %} +{% block content %} +
    +
    +
    +

    社工库在线查询

    +
    +
    +
    +
    + +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    + {% if data %} + + + + + + + + + + + {%for pass in data %} + + + + + + + {%endfor%} + +
    用户名密码邮箱来源
    {{pass.u}}{{pass.p}}{{pass.e}}{{pass.s}}
    + {% endif %} + + +
    +
    +
    +
    +
    + +
    +{% endblock %} From a5914295a1ecbba58fec161494758889b71b64a7 Mon Sep 17 00:00:00 2001 From: boyhack <34109680@qq.com> Date: Mon, 7 Nov 2016 12:31:42 +0800 Subject: [PATCH 4/8] update md --- README.md | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 8520cd6..1e52ee5 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,25 @@ # pythonwebhack -用python 2.7实现的web框架建立的在线渗透平台 -web框架是flask 前端框架是amazeUI -需要支持 flask +> 用python 2.7实现的web框架建立的在线渗透平台 +> web框架是flask 前端框架是amazeUI +## 安装 pip install flask pip install requests +[usage]: python `myweb.py ` -输入 python myweb.py 就可以运行了 +## 更新 -10.25更新 加入了社会工程学密码生成和whois查询 -10.21更新 加入了CMS在线识别 +- 11.7 更新 加入了在线社工库 调用的接口~ +- 10.25 更新 加入了社会工程学密码生成和whois查询 +- 10.21 更新 加入了CMS在线识别 + +## 学习教程 +每一步都记录了 [编写记录][1] + + + 用新浪云搭建了下 [http://systeminfo.applinzi.com/][2] + + + [1]: http://bbs.ichunqiu.com/forum.php?mod=collection&action=view&ctid=65 + [2]: http://systeminfo.applinzi.com/ From 8d54d77448d12b130684b2f5922a2d5f72c56773 Mon Sep 17 00:00:00 2001 From: boyhack <34109680@qq.com> Date: Mon, 7 Nov 2016 12:38:55 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E5=AF=86=E7=A0=81=E7=94=9F=E6=88=90?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E4=B8=8B=E8=BD=BD=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- myweb.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/myweb.py b/myweb.py index 192c92b..389846b 100644 --- a/myweb.py +++ b/myweb.py @@ -50,6 +50,7 @@ def webdna(): @app.route('/password',methods=["get","post"]) def password_build(): if request.method == 'POST': + from flask import make_response birthday = request.form.get("birthday","") fullname = request.form.get("fullname","") nickname = request.form.get("nickname","") @@ -64,7 +65,12 @@ def password_build(): keynumbers = request.form.get("keynumbers","") pwgen = PasswdGenerator(fullname=fullname,nickname=nickname,englishname=englishname,partnername=partnername,phone=phone,qq=qq,company=company,domain=domain,oldpasswd=oldpasswd,keywords=keywords,keynumbers=keynumbers,birthday=birthday) wordlist = pwgen.generate() - return render_template('password.html',data=wordlist,title="社工密码生成") + content = '\n'.join(wordlist) + #content = "long text" + response = make_response(content) + response.headers["Content-Disposition"] = "attachment; filename=pass.txt" + return response + #return render_template('password.html',data=wordlist,title="社工密码生成") else: return render_template('password.html',title="社工密码生成") From ab1fb88c7df389839716622518f7905655dafc9c Mon Sep 17 00:00:00 2001 From: boyhack <34109680@qq.com> Date: Tue, 22 Nov 2016 16:47:09 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E9=9B=86=E6=88=90=E4=BA=86=E4=B9=8C?= =?UTF-8?q?=E4=BA=91=E6=BC=8F=E6=B4=9E=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 ++++++-- myweb.py | 36 ++++++++++++++++++++++++++- templates/base.html | 1 + templates/wooyun.html | 58 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 templates/wooyun.html diff --git a/README.md b/README.md index 1e52ee5..0597e84 100644 --- a/README.md +++ b/README.md @@ -4,15 +4,20 @@ > web框架是flask 前端框架是amazeUI ## 安装 -pip install flask -pip install requests +`pip install flask` +`pip install requests` +`pip install MySQLdb ` + [usage]: python `myweb.py ` +乌云数据库文件安装 链接: http://pan.baidu.com/s/1hrKYy8W 密码: yrrr + ## 更新 - 11.7 更新 加入了在线社工库 调用的接口~ - 10.25 更新 加入了社会工程学密码生成和whois查询 - 10.21 更新 加入了CMS在线识别 +- 11.22 更新 集成了乌云漏洞查询 [搭建教程][3] ## 学习教程 每一步都记录了 [编写记录][1] @@ -23,3 +28,4 @@ pip install requests [1]: http://bbs.ichunqiu.com/forum.php?mod=collection&action=view&ctid=65 [2]: http://systeminfo.applinzi.com/ + [3]: http://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=15744&page=1&extra=#pid261144 diff --git a/myweb.py b/myweb.py index 389846b..0f9e168 100644 --- a/myweb.py +++ b/myweb.py @@ -10,12 +10,18 @@ import whois import skg +import MySQLdb +import sys reload(sys) sys.setdefaultencoding('utf-8') -app = Flask(__name__) +app = Flask(__name__) +#连接数据库操作 +db = MySQLdb.connect("127.0.0.1","root","","pyhack",charset='utf8' ) +cursor = db.cursor() + @app.route('/',methods=["get","post"]) def index(): return render_template('ip.html') @@ -94,5 +100,33 @@ def findpass(): else: return render_template('skg.html',title="社工库查询") +#集成wooyun漏洞平台 +@app.route('/wooyun',methods=["get","post"]) +def wooyun(): + searchword = request.args.get('key', '').strip() + log_id = request.args.get('id', '').strip() + data = {} + table = list() + if log_id: + # 使用execute方法执行SQL语句 + cursor.execute(MySQLdb.escape_string("SELECT * from emlog_blog where gid=%s"%log_id)) + # 使用 fetchone() 方法获取一条数据库。 + results = cursor.fetchone() + data["id"] = results[0] + data["text"] = results[2] + data["title"] = results[1] + if searchword: + sql = 'SELECT gid,title from emlog_blog where title like "%%%s%%"'%searchword + cursor.execute(sql) + #cursor.execute('SELECT * from emlog_blog limit 10') + results = cursor.fetchall() + + for rows in results: + tdata = {} + tdata["id"] = rows[0] + tdata["title"] = rows[1] + table.append(tdata) + return render_template("wooyun.html",title="乌云漏洞查询",data=data,table=table) + if __name__ == '__main__': app.run(debug=True) diff --git a/templates/base.html b/templates/base.html index c741660..46c037d 100644 --- a/templates/base.html +++ b/templates/base.html @@ -168,6 +168,7 @@

  • 密码生成
  • whois查询
  • 社工库
  • +
  • 漏洞查询
  • 开启全屏
  • diff --git a/templates/wooyun.html b/templates/wooyun.html new file mode 100644 index 0000000..6df5a15 --- /dev/null +++ b/templates/wooyun.html @@ -0,0 +1,58 @@ +{% extends "base.html" %} +{% block content %} +
    +
    +
    +

    WooYun漏洞查询

    +
    +
    +
    +
    + +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    + {% if table %} + + + + + + + + + + {% for foo in table %} + + + + + + {% endfor %} + +
    id标题查看
    {{foo.id}}{{foo.title}}查看
    + {% endif %} + {% if data %} +

    {{data.title}}

    + {{data.text|safe}} + {% endif %} +
    +
    +
    +
    +
    + +
    +{% endblock %} \ No newline at end of file From 82cb5eca3458d3fdbac142d464a6ef37a27253ee Mon Sep 17 00:00:00 2001 From: boyhack <34109680@qq.com> Date: Tue, 22 Nov 2016 16:48:34 +0800 Subject: [PATCH 7/8] readme.me --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0597e84..81bece2 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,12 @@ > web框架是flask 前端框架是amazeUI ## 安装 -`pip install flask` -`pip install requests` -`pip install MySQLdb ` +`pip install flask` + +`pip install requests` + +`pip install MySQLdb ` + [usage]: python `myweb.py ` From b3caca973425c44e59dd439a34a3a52cf95b704d Mon Sep 17 00:00:00 2001 From: boyhack <34109680@qq.com> Date: Wed, 7 Dec 2016 22:33:42 +0800 Subject: [PATCH 8/8] =?UTF-8?q?update=20wooyun=E5=BF=BD=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +++- myweb.py | 25 +++++++++++++++++++++++-- templates/base.html | 10 +++++++++- templates/wooyun.html | 8 +++++++- 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 81bece2..7b84718 100644 --- a/README.md +++ b/README.md @@ -17,10 +17,12 @@ ## 更新 +- 12.7 更新 加入乌云漏洞库忽略漏洞查询 +- 11.22 更新 集成了乌云漏洞查询 [搭建教程][3] - 11.7 更新 加入了在线社工库 调用的接口~ - 10.25 更新 加入了社会工程学密码生成和whois查询 - 10.21 更新 加入了CMS在线识别 -- 11.22 更新 集成了乌云漏洞查询 [搭建教程][3] + ## 学习教程 每一步都记录了 [编写记录][1] diff --git a/myweb.py b/myweb.py index 0f9e168..6b4a0df 100644 --- a/myweb.py +++ b/myweb.py @@ -102,7 +102,8 @@ def findpass(): #集成wooyun漏洞平台 @app.route('/wooyun',methods=["get","post"]) -def wooyun(): +@app.route('/wooyun/',methods=["get","post"]) +def wooyun(pages = 0): searchword = request.args.get('key', '').strip() log_id = request.args.get('id', '').strip() data = {} @@ -116,7 +117,7 @@ def wooyun(): data["text"] = results[2] data["title"] = results[1] if searchword: - sql = 'SELECT gid,title from emlog_blog where title like "%%%s%%"'%searchword + sql = 'SELECT gid,title from emlog_blog where title like "%%%s%%"'%(searchword) cursor.execute(sql) #cursor.execute('SELECT * from emlog_blog limit 10') results = cursor.fetchall() @@ -128,5 +129,25 @@ def wooyun(): table.append(tdata) return render_template("wooyun.html",title="乌云漏洞查询",data=data,table=table) +#集成wooyun漏洞平台 -被忽略的漏洞 +@app.route('/wooyun1',methods=["get","post"]) +@app.route('/wooyun1/',methods=["get","post"]) +def wooyun1(pages=0): + if pages is None: + pages = 0 + if pages < 0: + pages = 0 + sql = 'SELECT gid,title from emlog_blog where content like "%%%s%%" limit %d,%d'%("无影响厂商忽略",pages*20,20) + print sql + cursor.execute(sql) + results = cursor.fetchall() + table = list() + for rows in results: + tdata = {} + tdata["id"] = rows[0] + tdata["title"] = rows[1] + table.append(tdata) + return render_template("wooyun.html",title="乌云忽略漏洞查询",table=table,next=pages+1,prev=pages-1) + if __name__ == '__main__': app.run(debug=True) diff --git a/templates/base.html b/templates/base.html index 46c037d..f770704 100644 --- a/templates/base.html +++ b/templates/base.html @@ -168,7 +168,15 @@

  • 密码生成
  • whois查询
  • 社工库
  • -
  • 漏洞查询
  • +
  • + + 漏洞bugs + + +
  • 开启全屏
  • diff --git a/templates/wooyun.html b/templates/wooyun.html index 6df5a15..76ce071 100644 --- a/templates/wooyun.html +++ b/templates/wooyun.html @@ -38,11 +38,17 @@

    WooYun漏洞查询

    {{foo.id}} {{foo.title}} - 查看 + 查看 {% endfor %} + {% if next %} + + {% endif %} {% endif %} {% if data %}

    {{data.title}}