-
Notifications
You must be signed in to change notification settings - Fork 174
/
Copy pathscan.py
36 lines (33 loc) · 1.39 KB
/
scan.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from finding import Finding
import logging
async def scan_domain(domain, signatures, findings, output_handler):
if domain.should_fetch_std_records:
await domain.fetch_std_records()
else:
await domain.fetch_external_records()
for signature in signatures:
logging.debug(
f"Testing domain '{domain.domain}' with signature '{signature.__name__}'"
)
if signature.test.potential(domain=domain):
logging.debug(
f"Potential takeover found on DOMAIN '{domain}' using signature '{signature.__name__}'"
)
if await signature.test.check(domain=domain):
status = signature.test.CONFIDENCE.value
logging.info(
f"Takeover {status} on {domain} using signature '{signature.__name__}'"
)
finding = Finding(
domain=domain,
signature=signature.__name__,
info=signature.test.INFO,
confidence=signature.test.CONFIDENCE,
more_info_url=signature.test.more_info_url,
)
findings.append(finding)
output_handler.write(finding)
else:
logging.debug(
f"Takeover not possible on DOMAIN '{domain}' using signature '{signature.__name__}'"
)