A Python 3 Heroku-hostable web-application wrapping the excellent dnstwist.
In the author's words, dnstwist helps you "...find similar-looking domains that adversaries can use to attack you..."
This project, dnstwister, gives you access to the power of dnstwist via a convenient Heroku-deployable Python flask-based web interface and offers csv/json reports and a fully featured RESTful API.
This project uses a modified version of dnstwist, in dnstwister/dnstwist.
I have kept the original dnstwist README and LICENCE but I have applied an "Unlicense" to dnstwister.
Though the licences are different (dnstwist uses an Apache licence), this is an acceptable use of dnstwist in my project.
The SaaS offering dnstwister.report grew out of this repository, but as of October 2019 the core code that runs dnstwister.report was forked from this dnstwister repository into a private repository. This was done to:
-
Clearly separate the code required to run a web-scale SaaS offering from that required to host your own dnstwister instance - for instance email gateways and FaaS endpoints.
-
Allow for the introduction of my own IP beyond that of the core dnstwist module authored by elceef.
To ensure I am respecting the dnstwist licence the dnstwist module embedded in this repository will always match that used in dnstwister.report.
The current version of dnstwist used in this repository and in dnstwister.report is available here, including the original Apache LICENCE.
Pull requests against this repository may or may not be merged into this repository and/or the private repository, as appropriate.
- @elceef (dnstwist itself)
- @peterwallhead (mobile UI assistance)
- @prashant-shahi (docker configuration)
- @wesinator (file export improvements)
- @ninoseki (api improvements)
You need Python 3.9.
Once-off setup:
pip install pipenv
pipenv install --dev
Running:
pipenv run python local_server.py --reload
And browse via http://localhost:5000
If you don't have Docker installed, you can click here for Docker CE, and follow the installation steps.
# Cloning latest source code
git clone https://github.com/dnstwister/dnstwister
# Changing directory
cd dnstwister
# Building dnstwister image using Dockerfile
docker build -t dnstwister .
# Running the application inside a container
docker run -td -p 5000:5000 --name myapp dnstwister
Now, go to http://localhost:5000
using any browser to use dnstwister.
Alternatively, you can pull the pre-built image from DockerHub, and run locally. This way, you wouldn't have to wait for the build time.
docker pull dnstwister/dnstwister:2.9.3
docker run -td -p 5000:5000 --name myapp dnstwister/dnstwister:2.9.3
Now, go to http://localhost:5000
using any browser to use dnstwister.
Running:
pipenv run py.test
I'd love to hear your feedback so email me, fire off a tweet in my general direction! :)