Il problema
Gli strumenti esistenti erano o troppo lenti o troppo rumorosi. Serviva uno strumento leggero che unisse brute-force e fonti passive in un unico output ordinato.
Dettagli implementativi
Il cuore è un pool di task asincroni che risolvono i nomi con un limite di concorrenza configurabile, per non saturare il resolver DNS.
resolver.pypython
1 2 3 4 5 6 7 8 9
import asyncio
async def resolve(name, sem, resolver):
async with sem: # limita la concorrenza
try:
answer = await resolver.query(name, "A")
return name, [r.host for r in answer]
except Exception:
return name, NoneSecurity considerations
Da usare solo su asset autorizzati. Wordlist e target sono validati per evitare injection: nessun comando shell viene eseguito con input non sanitizzato.