This commit is contained in:
Jing Ling
2020-08-01 17:41:33 +08:00
parent f5e88e0b05
commit 365a2ec7f7
52 changed files with 53 additions and 62 deletions
+2 -2
View File
@@ -157,7 +157,7 @@ def query_domain_ns_a(ns_list):
def query_domain_ns(domain):
logger.log('INFOR', f'Querying NS records of {domain}')
domain = utils.get_maindomain(domain)
domain = utils.get_main_domain(domain)
resolver = utils.dns_resolver()
try:
answer = resolver.query(domain, 'NS')
@@ -508,7 +508,7 @@ class Brute(Module):
if self.place is None:
self.place = '*.' + domain
wordlist = self.wordlist
main_domain = self.get_maindomain(domain)
main_domain = utils.get_main_domain(domain)
if domain != main_domain:
wordlist = self.recursive_nextlist
if self.word:
-10
View File
@@ -213,16 +213,6 @@ class Module(object):
def match_subdomains(self, html, distinct=True, fuzzy=True):
return utils.match_subdomains(self.domain, html, distinct, fuzzy)
@staticmethod
def get_maindomain(domain):
"""
Get main domain
:param str domain: domain
:return: main domain
"""
return Domain(domain).registered()
def save_json(self):
"""
Save the results of each module as a json file
+1 -1
View File
@@ -622,7 +622,7 @@ def check_version(local):
logger.log('INFOR', f'The current version {local} is already the latest version')
def get_maindomain(domain):
def get_main_domain(domain):
return Domain(domain).registered()
+1 -1
View File
@@ -6,7 +6,7 @@ from config.log import logger
class CensysAPI(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Certificate'
self.source = "CensysAPIQuery"
self.addr = 'https://www.censys.io/api/v1/search/certificates'
+1 -1
View File
@@ -4,7 +4,7 @@ from common.query import Query
class Crtsh(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Certificate'
self.source = 'CrtshQuery'
self.addr = 'https://crt.sh/'
+1 -1
View File
@@ -4,7 +4,7 @@ from common.query import Query
class Google(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Certificate'
self.source = 'GoogleQuery'
self.addr = 'https://transparencyreport.google.com/' \
+1 -1
View File
@@ -22,7 +22,7 @@ class CheckAXFR(Module):
def __init__(self, domain: str):
Module.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Check'
self.source = 'AXFRCheck'
self.results = []
+1 -1
View File
@@ -11,7 +11,7 @@ class CheckCDX(Module):
"""
def __init__(self, domain: str):
Module.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Check'
self.source = "CrossDomainXml"
+1 -1
View File
@@ -13,7 +13,7 @@ from config.log import logger
class CheckCert(Module):
def __init__(self, domain):
Module.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.port = 443 # ssl port
self.module = 'Check'
self.source = 'CertInfo'
+1 -1
View File
@@ -13,7 +13,7 @@ class CheckCSP(Module):
"""
def __init__(self, domain, header):
Module.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Check'
self.source = 'ContentSecurityPolicy'
self.csp_header = header
+1 -1
View File
@@ -8,7 +8,7 @@ from common import utils
class CheckNSEC(Module):
def __init__(self, domain):
Module.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'check'
self.source = "CheckNSEC"
+1 -1
View File
@@ -10,7 +10,7 @@ class CheckRobots(Module):
"""
def __init__(self, domain):
Module.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Check'
self.source = 'Robots'
+1 -1
View File
@@ -10,7 +10,7 @@ class CheckRobots(Module):
"""
def __init__(self, domain):
Module.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Check'
self.source = 'Sitemap'
+2 -1
View File
@@ -5,6 +5,7 @@ import importlib
import dbexport
from config.log import logger
from config import setting
from common import utils
class Collect(object):
@@ -13,7 +14,7 @@ class Collect(object):
"""
def __init__(self, domain, export=True):
self.domain = domain
self.domain = utils.get_main_domain(domain)
self.elapse = 0.0
self.modules = []
self.collect_funcs = []
+1 -1
View File
@@ -5,7 +5,7 @@ from common.query import Query
class BinaryEdgeAPI(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'BinaryEdgeAPIQuery'
self.addr = 'https://api.binaryedge.io/v2/query/domains/subdomain/'
+1 -1
View File
@@ -6,7 +6,7 @@ from config.log import logger
class BufferOver(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'BufferOverQuery'
self.addr = 'https://dns.bufferover.run/dns?q='
+1 -1
View File
@@ -4,7 +4,7 @@ from common.query import Query
class CeBaidu(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'CeBaiduQuery'
self.addr = 'https://ce.baidu.com/index/getRelatedSites'
+1 -1
View File
@@ -4,7 +4,7 @@ from common.query import Query
class Chinaz(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'ChinazQuery'
self.addr = 'https://alexa.chinaz.com/'
+1 -1
View File
@@ -5,7 +5,7 @@ from common.query import Query
class ChinazAPI(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'ChinazAPIQuery'
self.addr = 'https://apidata.chinaz.com/CallAPI/Alexa'
+1 -1
View File
@@ -5,7 +5,7 @@ from common.query import Query
class CirclAPI(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'CirclAPIQuery'
self.addr = 'https://www.circl.lu/pdns/query/'
+1 -1
View File
@@ -5,7 +5,7 @@ from common.query import Query
class DNSdbAPI(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'DNSdbAPIQuery'
self.addr = 'https://api.dnsdb.info/lookup/rrset/name/'
+1 -1
View File
@@ -4,7 +4,7 @@ from common.query import Query
class DNSdumpster(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = "DNSdumpsterQuery"
self.addr = 'https://dnsdumpster.com/'
+1 -1
View File
@@ -4,7 +4,7 @@ from common.query import Query
class HackerTarget(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = "HackerTargetQuery"
self.addr = 'https://api.hackertarget.com/hostsearch/'
+1 -1
View File
@@ -4,7 +4,7 @@ from common.query import Query
class IP138(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'IP138Query'
self.addr = 'https://site.ip138.com/{domain}/domain.htm'
+1 -1
View File
@@ -6,7 +6,7 @@ from config.log import logger
class IPv4InfoAPI(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'IPv4InfoAPIQuery'
self.addr = ' http://ipv4info.com/api_v1/'
+1 -1
View File
@@ -9,7 +9,7 @@ from common.query import Query
class NetCraft(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'NetCraftQuery'
self.init = 'https://searchdns.netcraft.com/'
+1 -1
View File
@@ -5,7 +5,7 @@ from common.query import Query
class PassiveDnsAPI(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'PassiveDnsQuery'
self.addr = api.passivedns_api_addr or 'http://api.passivedns.cn'
+1 -1
View File
@@ -5,7 +5,7 @@ from common.query import Query
class PhoneBook(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'PhoneBookQuery'
+1 -1
View File
@@ -4,7 +4,7 @@ from common.query import Query
class RapidDNS(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'RapidDNSQuery'
+1 -1
View File
@@ -4,7 +4,7 @@ from common.query import Query
class Riddler(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'RiddlerQuery'
self.addr = 'https://riddler.io/search'
+1 -1
View File
@@ -7,7 +7,7 @@ from common.query import Query
class Robtex(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = "RobtexQuery"
self.addr = 'https://freeapi.robtex.com/pdns/'
+1 -1
View File
@@ -5,7 +5,7 @@ from common.query import Query
class SecurityTrailsAPI(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'SecurityTrailsAPIQuery'
self.addr = 'https://api.securitytrails.com/v1/domain/'
+1 -1
View File
@@ -5,7 +5,7 @@ from common.query import Query
class SiteDossier(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'SiteDossierQuery'
self.addr = 'http://www.sitedossier.com/parentdomain/'
+1 -1
View File
@@ -4,7 +4,7 @@ from common.query import Query
class Sublist3r(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'Sublist3rQuery'
+1 -1
View File
@@ -7,7 +7,7 @@ from config.log import logger
class ThreatCrowd(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'ThreatCrowdQuery'
self.addr = 'https://www.threatcrowd.org/searchApi' \
+1 -1
View File
@@ -6,7 +6,7 @@ from common.query import Query
class WZPCQuery(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'WZPCQuery'
+1 -1
View File
@@ -4,7 +4,7 @@ from common.query import Query
class Ximcx(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Dataset'
self.source = 'XimcxQuery'
self.addr = 'http://sbd.ximcx.cn/DomainServlet'
+1 -1
View File
@@ -4,7 +4,7 @@ from common.lookup import Lookup
class QueryMX(Lookup):
def __init__(self, domain):
Lookup.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'dnsquery'
self.source = "QueryMX"
self.type = 'MX' # 利用的DNS记录的MX记录收集子域
+1 -1
View File
@@ -4,7 +4,7 @@ from common.lookup import Lookup
class QueryNS(Lookup):
def __init__(self, domain):
Lookup.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'dnsquery'
self.source = "QueryNS"
self.type = 'NS' # 利用的DNS记录的NS记录收集子域
+1 -1
View File
@@ -4,7 +4,7 @@ from common.lookup import Lookup
class QuerySOA(Lookup):
def __init__(self, domain):
Lookup.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'dnsquery'
self.source = "QuerySOA"
self.type = 'SOA' # 利用的DNS记录的SOA记录收集子域
+1 -1
View File
@@ -4,7 +4,7 @@ from common.lookup import Lookup
class QuerySPF(Lookup):
def __init__(self, domain):
Lookup.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'dnsquery'
self.source = "QuerySPF"
self.type = 'SPF' # 利用的DNS记录的SPF记录收集子域
+1 -1
View File
@@ -14,7 +14,7 @@ from config.setting import data_storage_dir
class BruteSRV(Module):
def __init__(self, domain):
Module.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'dnsquery'
self.source = "BruteSRV"
self.type = 'SRV' # 利用的DNS记录的SRV记录查询子域
+1 -1
View File
@@ -4,7 +4,7 @@ from common.lookup import Lookup
class QueryTXT(Lookup):
def __init__(self, domain):
Lookup.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'dnsquery'
self.source = "QueryTXT"
self.type = 'TXT' # 利用的DNS记录的TXT记录收集子域
+1 -1
View File
@@ -4,7 +4,7 @@ from common.query import Query
class AlienVault(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Intelligence'
self.source = 'AlienVaultQuery'
+1 -1
View File
@@ -5,7 +5,7 @@ from common.query import Query
class RiskIQ(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Intelligence'
self.source = 'RiskIQAPIQuery'
self.addr = 'https://api.passivetotal.org/v2/enrichment/subdomains'
+1 -1
View File
@@ -5,7 +5,7 @@ from common.query import Query
class ThreatBookAPI(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Intelligence'
self.source = 'ThreatBookAPIQuery'
self.addr = 'https://api.threatbook.cn/v3/domain/sub_domains'
+1 -1
View File
@@ -4,7 +4,7 @@ from common.query import Query
class ThreatMiner(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Intelligence'
self.source = 'ThreatMinerQuery'
self.addr = 'https://www.threatminer.org/getData.php'
+1 -1
View File
@@ -11,7 +11,7 @@ class VirusTotal(Query):
self.source = 'VirusTotalQuery'
self.module = 'Intelligence'
self.addr = 'https://www.virustotal.com/ui/domains/{}/subdomains'
self.domain = self.get_maindomain(domain)
self.domain = domain
def query(self):
"""
+1 -1
View File
@@ -5,7 +5,7 @@ from common.query import Query
class VirusTotalAPI(Query):
def __init__(self, domain):
Query.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Intelligence'
self.source = 'VirusTotalAPIQuery'
self.addr = 'https://www.virustotal.com/vtapi/v2/domain/report'
+1 -1
View File
@@ -10,7 +10,7 @@ class Gitee(Search):
self.source = 'GiteeSearch'
self.module = 'Search'
self.addr = 'https://search.gitee.com/'
self.domain = self.get_maindomain(domain)
self.domain = domain
self.header = self.get_header()
def search(self, full_search=False):
+1 -1
View File
@@ -10,7 +10,7 @@ class GithubAPI(Search):
self.source = 'GithubAPISearch'
self.module = 'Search'
self.addr = 'https://api.github.com/search/code'
self.domain = self.get_maindomain(domain)
self.domain = domain
self.session = requests.Session()
self.auth_url = 'https://api.github.com'
self.token = api.github_api_token
+1 -1
View File
@@ -5,7 +5,7 @@ from common.search import Search
class ShodanAPI(Search):
def __init__(self, domain):
Search.__init__(self)
self.domain = self.get_maindomain(domain)
self.domain = domain
self.module = 'Search'
self.source = 'ShodanAPISearch'
self.addr = 'https://api.shodan.io/shodan/host/search'