{"id":13438457,"url":"https://github.com/blark/aiodnsbrute","last_synced_at":"2025-03-20T06:30:32.372Z","repository":{"id":41547126,"uuid":"94146057","full_name":"blark/aiodnsbrute","owner":"blark","description":"Python 3.5+ DNS asynchronous brute force utility","archived":false,"fork":false,"pushed_at":"2023-10-22T23:37:25.000Z","size":21273,"stargazers_count":653,"open_issues_count":4,"forks_count":114,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-03-02T14:42:31.002Z","etag":null,"topics":["async","brute-force","bruteforcing","dns","enumeration","osint","osint-resources","pentesting","python","recon","red-team","resolver","security","security-tools","subdomain","subdomain-takeover","subdomin-enumeration"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blark.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-06-12T22:26:33.000Z","updated_at":"2025-02-28T21:49:17.000Z","dependencies_parsed_at":"2024-06-21T14:28:48.332Z","dependency_job_id":null,"html_url":"https://github.com/blark/aiodnsbrute","commit_stats":{"total_commits":38,"total_committers":3,"mean_commits":"12.666666666666666","dds":0.07894736842105265,"last_synced_commit":"e773a4c790b7177cad212d24ee8d0787d04e5b39"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blark%2Faiodnsbrute","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blark%2Faiodnsbrute/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blark%2Faiodnsbrute/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blark%2Faiodnsbrute/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blark","download_url":"https://codeload.github.com/blark/aiodnsbrute/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244564828,"owners_count":20473140,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","brute-force","bruteforcing","dns","enumeration","osint","osint-resources","pentesting","python","recon","red-team","resolver","security","security-tools","subdomain","subdomain-takeover","subdomin-enumeration"],"created_at":"2024-07-31T03:01:05.682Z","updated_at":"2025-03-20T06:30:27.363Z","avatar_url":"https://github.com/blark.png","language":"Python","funding_links":[],"categories":["Asset Discovery","[↑](#contents)Domain / Subdomain Discovery","\u003ca id=\"de81f9dd79c219c876c1313cd97852ce\"\u003e\u003c/a\u003e破解\u0026\u0026Crack\u0026\u0026爆破\u0026\u0026BruteForce","Python (1887)","Python","扫描器、资产收集、子域名","\u003ca id=\"73c3c9225523cbb05333246f23342846\"\u003e\u003c/a\u003e工具"],"sub_categories":["Domain / Subdomain Discovery","\u003ca id=\"f2c76d99a0b1fda124d210bd1bbc8f3f\"\u003e\u003c/a\u003eWordlist生成","网络服务_其他","\u003ca id=\"53084c21ff85ffad3dd9ce445684978b\"\u003e\u003c/a\u003e未分类的"],"readme":"# Async DNS Brute\n\nA Python 3.5+ tool that uses asyncio to brute force domain names asynchronously.\n\n![aiodnsbrute screenshot](screenshot.png)\n\n## Speed\n\n*It's fast.* Benchmarks on small VPS hosts put around 100k DNS resoultions at 1.5-2mins. An amazon M3 box was used to make 1 mil requests in just over 3 minutes. Your mileage may vary. It's probably best to avoid using Google's resolvers if you're purely interested in speed.\n\n**DISCLAIMER**\n- Your ISP's and home router's DNS servers probably _suck_. Stick to a VPS with fast resolvers (or set up your own) if you're after speed.\n- **WARNING** This tool is capable of sending LARGE amounts of DNS traffic. I am not repsonsible if you DoS someone's DNS servers.\n\n# Installation\n\n    $ pip install aiodnsbrute\n\nNote: using a [virtualenv](https://virtualenv.pypa.io/en/latest/userguide/#usage) is highly recommended.\n\n## Alternate install\n\nAlternately you can install the usual way:\n\n\n    $ git clone https://github.com/blark/aiodnsbrute.git\n    $ cd aiodnsbrute\n    $ python setup.py install .\n\n## Usage\n\nGet help:\n\n    $ aiodnsbrute --help\n\n    Usage: cli.py [OPTIONS] DOMAIN\n\n      aiodnsbrute is a command line tool for brute forcing domain names\n      utilizing Python's asyncio module.\n\n      credit: blark (@markbaseggio)\n\n    Options:\n      -w, --wordlist TEXT           Wordlist to use for brute force.\n      -t, --max-tasks INTEGER       Maximum number of tasks to run asynchronosly.\n      -r, --resolver-file FILENAME  A text file containing a list of DNS resolvers\n                                    to use, one per line, comments start with #.\n                                    Default: use system resolvers\n      -v, --verbosity               Increase output verbosity\n      -o, --output [csv|json|off]   Output results to DOMAIN.csv/json (extension\n                                    automatically appended when not using -f).\n      -f, --outfile FILENAME        Output filename. Use '-f -' to send file\n                                    output to stdout overriding normal output.\n      --query / --gethostbyname     DNS lookup type to use query (default) should\n                                    be faster, but won't return CNAME information.\n      --wildcard / --no-wildcard    Wildcard detection, enabled by default\n      --verify / --no-verify        Verify domain name is sane before beginning,\n                                    enabled by default\n      --version                     Show the version and exit.\n      --help                        Show this message and exit.\n\n### Examples\n\nRun a brute force with some custom options:\n\n    $ aiodnsbrute -w wordlist.txt -vv -t 1024 domain.com\n\nRun a brute force, supppess normal output and send only JSON to stdout:\n\n    $ aiodnbrute -f - -o json domain.com\n\n...for an advanced pattern, use custom resovers and pipe output into the awesome [jq](https://stedolan.github.io/jq/):\n\n    $ aiodnsbrute -r resolvers.txt -f - -o json google.com | jq '.[] | select(.ip[] | startswith(\"172.\"))'\n\nWildcard detection enabled by default (--no-wildcard turns it off):\n\n    $ aiodnsbrute foo.com\n\n    [*] Brute forcing foo.com with a maximum of 512 concurrent tasks...\n    [*] Using recursive DNS with the following servers: ['50.116.53.5', '50.116.58.5', '50.116.61.5']\n    [!] Wildcard response detected, ignoring answers containing ['23.23.86.44']\n    [*] Wordlist loaded, proceeding with 1000 DNS requests\n    [+] www.foo.com                         52.73.176.251, 52.4.225.20\n    100%|██████████████████████████████████████████████████████████████████████████████| 1000/1000 [00:05\u003c00:00, 140.18records/s]\n    [*] Completed, 1 subdomains found\n\n**NEW** use gethostbyname (detects CNAMEs which can be handy for potential subdomain takeover detection)\n\n    $ aiodnsbrute --gethostbyname domain.com\n\nSupply a list of resolvers from file (ignoring blank lines and starting with #), specify `-r -` to read list from stdin.\n\n    $ aiodnsbrute -r resolvers.txt domain.com\n\n## Thanks\n\n- Wordlists are from [bitquark's](https://github.com/bitquark) [dnspop](https://github.com/bitquark/dnspop) repo (except the 10 mil entry one which I created using his tool).\n  - Creds to [Sublist3r](https://github.com/aboul3la/Sublist3r) for pointing me there.\n- [Click](https://click.palletsprojects.com/en/7.x/) for making CLI apps so easy.\n- [tqdm](https://github.com/tqdm/tqdm) powers the pretty progress bar!\n- [aiodns](https://github.com/saghul/aiodns) for providing the Python async interface to pycares which makes this all possible!\n\n## Notes\n\n- You might want to do a `ulimit -n` to see how many open files are allowed. You can also increase that number using the same command, i.e. `ulimit -n \u003c2048\u003e`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblark%2Faiodnsbrute","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblark%2Faiodnsbrute","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblark%2Faiodnsbrute/lists"}