Skip to content

Commit 58a6c70

Browse files
authored
Merge pull request #139 from projectdiscovery/dev
v1.0.8 Release
2 parents a4b50eb + 9636fdc commit 58a6c70

14 files changed

+141
-75
lines changed

.github/workflows/build-test.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515

1616
- uses: actions/setup-go@v3
1717
with:
18-
go-version: 1.17
18+
go-version: 1.18
1919

2020
- name: Test
2121
run: go test ./...

.github/workflows/codeql-analysis.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ jobs:
2727

2828
# Initializes the CodeQL tools for scanning.
2929
- name: Initialize CodeQL
30-
uses: github/codeql-action/init@v1
30+
uses: github/codeql-action/init@v2
3131
with:
3232
languages: ${{ matrix.language }}
3333

3434
- name: Autobuild
35-
uses: github/codeql-action/autobuild@v1
35+
uses: github/codeql-action/autobuild@v2
3636

3737
- name: Perform CodeQL Analysis
38-
uses: github/codeql-action/analyze@v1
38+
uses: github/codeql-action/analyze@v2

.github/workflows/dockerhub-push.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,19 @@ jobs:
2020
echo "::set-output name=tag::$(curl --silent "https://api.github.com/repos/projectdiscovery/shuffledns/releases/latest" | jq -r .tag_name)"
2121
2222
- name: Set up QEMU
23-
uses: docker/setup-qemu-action@v1
23+
uses: docker/setup-qemu-action@v2
2424

2525
- name: Set up Docker Buildx
26-
uses: docker/setup-buildx-action@v1
26+
uses: docker/setup-buildx-action@v2
2727

2828
- name: Login to DockerHub
29-
uses: docker/login-action@v1
29+
uses: docker/login-action@v2
3030
with:
3131
username: ${{ secrets.DOCKER_USERNAME }}
3232
password: ${{ secrets.DOCKER_TOKEN }}
3333

3434
- name: Build and push
35-
uses: docker/build-push-action@v2
35+
uses: docker/build-push-action@v3
3636
with:
3737
context: .
3838
platforms: linux/amd64,linux/arm64,linux/arm

.github/workflows/lint-test.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ jobs:
1212
- name: Set up Go
1313
uses: actions/setup-go@v3
1414
with:
15-
go-version: 1.17
15+
go-version: 1.18
1616

1717
- name: Checkout code
1818
uses: actions/checkout@v3
1919

2020
- name: Run golangci-lint
21-
uses: golangci/golangci-lint-action@v3.1.0
21+
uses: golangci/golangci-lint-action@v3.2.0
2222
with:
2323
version: latest
2424
args: --timeout 5m

.github/workflows/release-binary.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
- uses: actions/checkout@v3
1414
- uses: actions/setup-go@v3
1515
with:
16-
go-version: 1.17
16+
go-version: 1.18
1717
- uses: goreleaser/goreleaser-action@v2
1818
with:
1919
args: "release --rm-dist"

Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
FROM golang:1.18.0-alpine as build-env
1+
FROM golang:1.18.4-alpine as build-env
22
RUN apk --no-cache add git
33
RUN go install -v github.com/projectdiscovery/shuffledns/cmd/shuffledns@latest
44

5-
FROM alpine:3.15.4
5+
FROM alpine:3.16.0
66
RUN apk --update --no-cache add ldns \
77
&& apk --no-cache --virtual .deps add ldns-dev \
88
git \

README.md

+46-31
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<h1 align="center">
2-
<img src="static/shuffledns-logo.png" alt="shuffledns" width="200px"></a>
2+
<img src="static/shuffledns-logo.png" alt="shuffledns" width="200px">
33
<br>
44
</h1>
55

@@ -26,14 +26,14 @@
2626
---
2727

2828

29-
shuffleDNS is a wrapper around massdns written in go that allows you to enumerate valid subdomains using active bruteforce as well as resolve subdomains with wildcard handling and easy input-output support.
29+
`shuffleDNS` is a wrapper around `massdns`, written in go, that allows you to enumerate valid subdomains using active bruteforce, as well as resolve subdomains with wildcard handling and easy input-output support.
3030

3131
Based on the work on `massdns` project by [@blechschmidt](https://github.com/blechschmidt).
3232

3333
# Features
3434

3535
<h1 align="left">
36-
<img src="static/shuffledns-run.png" alt="shuffledns" width="700px"></a>
36+
<img src="static/shuffledns-run.png" alt="shuffledns" width="700px">
3737
<br>
3838
</h1>
3939

@@ -50,31 +50,46 @@ shuffledns -h
5050
```
5151
This will display help for the tool. Here are all the switches it supports.
5252

53-
| Flag | Description | Example |
54-
|---------------|---------------------------------------------------------|--------------------------------------|
55-
| d | Domain to find or resolve subdomains for | shuffledns -d hackerone.com |
56-
| directory | Temporary directory for enumeration | shuffledns -directory /hdd |
57-
| r | File containing resolvers for enumeration | shuffledns -r resolvers.txt |
58-
| nC | Don't Use colors in output | shuffledns -nC |
59-
| o | File to save output result (optional) | shuffledns -o hackerone.txt |
60-
| list | List of subdomains to process for | shuffledns -list bugcrowd.txt |
61-
| massdns | Massdns binary path | shuffledns -massdns /usr/bin/massdns |
62-
| retries | Number of retries for dns enumeration (default 5) | shuffledns -retries 1 |
63-
| silent | Show only subdomains in output | shuffledns -silent |
64-
| t | Number of concurrent massdns resolves (default 10000) | shuffledns -t 100 |
65-
| v | Show Verbose output | shuffledns -v |
66-
| version | Show version of shuffledns | shuffledns -version |
67-
| w | File containing words to bruteforce for domain | shuffledns -w words.txt |
68-
| wt | Number of concurrent wildcard checks (default 25) | shuffledns -wt 100 |
69-
| raw-input | File containing existing massdns output | shuffledns -massdns-file output.txt |
53+
```yaml
54+
INPUT:
55+
-d, -domain string Domain to find or resolve subdomains for
56+
-l, -list string File containing list of subdomains to resolve
57+
-w, -wordlist string File containing words to bruteforce for domain
58+
-r, -resolver string File containing list of resolvers for enumeration
59+
-ri, -raw-input string Validate raw full massdns output
60+
61+
RATE-LIMIT:
62+
-t int Number of concurrent massdns resolves (default 10000)
63+
64+
OUTPUT:
65+
-o, -output string File to write output to (optional)
66+
-j, -json Make output format as ndjson
67+
-wo, -wildcard-output string Dump wildcard ips to output file
68+
69+
CONFIGURATIONS:
70+
-m, -massdns string Path to the massdns binary
71+
-mcmd, -massdns-cmd string Optional massdns commands to run (example '-q -i 10')
72+
-directory string Temporary directory for enumeration
73+
74+
OPTIMIZATIONS:
75+
-retries int Number of retries for dns enumeration (default 5)
76+
-sw, -strict-wildcard Perform wildcard check on all found subdomains
77+
-wt int Number of concurrent wildcard checks (default 25)
78+
79+
DEBUG:
80+
-silent Show only subdomains in output
81+
-version Show version of shuffledns
82+
-v Show Verbose output
83+
-nc, -no-color Don't Use colors in output
84+
```
7085

7186
<table>
7287
<tr>
7388
<td>
7489

7590
## Prerequisite
7691

77-
shuffledns requires massdns to be installed in order to perform its operations. You can see the install instructions at [massdns project](https://github.com/blechschmidt/massdns#compilation). If you place the binary in `/usr/bin/massdns` or `/usr/local/bin/massdns`, the tool will auto-detect the presence of the binary and use it. On windows, you need to supply the path to the binary for the tool to work.
92+
`shuffledns` requires `massdns` to be installed in order to perform its operations. You can see the installation instructions at [massdns project](https://github.com/blechschmidt/massdns#compilation). If you place the binary in `/usr/bin/massdns` or `/usr/local/bin/massdns`, the tool will auto-detect the presence of the binary and use it. On Windows, you need to supply the path to the binary for the tool to work.
7893

7994
The tool also needs a list of valid resolvers. The [dnsvalidator](https://github.com/vortexau/dnsvalidator) project can be used to generate these lists. You also need to provide wordlist, you can use a custom wordlist or use the [commonspeak2-wordlist](https://s3.amazonaws.com/assetnote-wordlists/data/manual/best-dns-wordlist.txt).
8095

@@ -84,19 +99,19 @@ The tool also needs a list of valid resolvers. The [dnsvalidator](https://github
8499

85100
## Installation Instructions
86101

87-
shuffledns requires `go1.17+` to install successfully. Run the following command to get the repo -
102+
`shuffledns` requires `go1.17+` to install successfully. Run the following command to install the latest version:
88103

89104
```bash
90105
go install -v github.com/projectdiscovery/shuffledns/cmd/shuffledns@latest
91106
```
92107

93108
## Running shuffledns
94109

95-
**shuffledns** supports two types of operations.
110+
`shuffledns` supports two types of operations:
96111

97-
<ins>**Subdomain resolving** </ins>
112+
<ins>**Subdomain resolving**</ins>
98113

99-
To resolve a list of subdomains, you can pass the list of subdomains via the `list` option.
114+
To resolve a list of subdomains, you can pass the list of subdomains via the `-list` option.
100115

101116
```bash
102117
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
@@ -110,11 +125,11 @@ You can also pass the list of subdomains at standard input (STDIN). This allows
110125
subfinder -d example.com | shuffledns -d example.com -r resolvers.txt
111126
```
112127

113-
This uses the subdomains found passively by `subfinder` and resolves them with shuffledns returning only the unique and valid subdomains.
128+
This uses the subdomains found passively by `subfinder` and resolves them with `shuffledns` returning only the unique and valid subdomains.
114129

115-
<ins>**Subdomain Bruteforcing** </ins>
130+
<ins>**Subdomain Bruteforcing**</ins>
116131

117-
shuffledns also supports bruteforce of a target with a given wordlist. You can use the `w` flag to pass a wordlist which will be used to generate permutations that will be resolved using massdns.
132+
`shuffledns` also supports bruteforce of a target with a given wordlist. You can use the `w` flag to pass a wordlist which will be used to generate permutations that will be resolved using massdns.
118133

119134
```bash
120135
shuffledns -d hackerone.com -w wordlist.txt -r resolvers.txt
@@ -134,17 +149,17 @@ echo hackerone.com | shuffledns -w wordlist.txt -r resolvers.txt
134149

135150
## Handling Wildcards
136151

137-
A special feature of shuffleDNS is its ability to handle multi-level DNS based wildcards and do it so with very less number of DNS requests. Sometimes all the subdomains will resolve which will lead to lots of garbage in the results. The way shuffleDNS handles this is it will keep track of how many subdomains point to an IP and if the count of the Subdomains increase beyond a certain small threshold, it will check for wildcard on all the levels of the hosts for that IP iteratively.
152+
A special feature of `shuffleDNS` is its ability to handle multi-level DNS based wildcards, and do it so with a very reduced number of DNS requests. Sometimes all the subdomains would resolve, leading to lots of garbage in the results. The way `shuffleDNS` handles this is by keeping track of how many subdomains point to an IP, and if the number of subdomains increase beyond a certain small threshold, it checks for wildcard on all the levels of the hosts for that IP iteratively.
138153

139154
</td>
140155
</tr>
141156
</table>
142157

143158
### Notes
144159

145-
- Wildcard filter feature works with domain (-d) input only.
160+
- Wildcard filter feature works with domain (`-d`) input only.
146161
- Resolving or Brute-forcing only one operation can be done at a time.
147162

148163
### License
149164

150-
shuffledns is distributed under [MIT License](https://github.com/projectdiscovery/shuffledns/blob/master/LICENSE.md)
165+
`shuffledns` is distributed under [GPL v3 License](https://github.com/projectdiscovery/shuffledns/blob/master/LICENSE.md)

go.mod

+7-3
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,19 @@ module github.com/projectdiscovery/shuffledns
33
go 1.17
44

55
require (
6-
github.com/miekg/dns v1.1.48
6+
github.com/miekg/dns v1.1.50
77
github.com/projectdiscovery/fileutil v0.0.0-20220215113056-ba188a0c8abc
8+
github.com/projectdiscovery/goflags v0.0.7
89
github.com/projectdiscovery/gologger v1.1.4
910
github.com/projectdiscovery/roundrobin v0.0.0-20220414090253-f09184199ebd
1011
github.com/remeh/sizedwaitgroup v1.0.0
1112
github.com/rs/xid v1.4.0
12-
github.com/stretchr/testify v1.7.1
13+
github.com/stretchr/testify v1.8.0
1314
)
1415

1516
require (
1617
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect
18+
github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08 // indirect
1719
github.com/davecgh/go-spew v1.1.1 // indirect
1820
github.com/json-iterator/go v1.1.10 // indirect
1921
github.com/karrick/godirwalk v1.16.1 // indirect
@@ -22,10 +24,12 @@ require (
2224
github.com/modern-go/reflect2 v1.0.1 // indirect
2325
github.com/pkg/errors v0.9.1 // indirect
2426
github.com/pmezard/go-difflib v1.0.0 // indirect
27+
github.com/projectdiscovery/stringsutil v0.0.0-20210804142656-fd3c28dbaafe // indirect
2528
golang.org/x/mod v0.4.2 // indirect
2629
golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985 // indirect
2730
golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365 // indirect
2831
golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2 // indirect
2932
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
30-
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
33+
gopkg.in/yaml.v2 v2.4.0 // indirect
34+
gopkg.in/yaml.v3 v3.0.1 // indirect
3135
)

go.sum

+15-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ=
22
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
3+
github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08 h1:ox2F0PSMlrAAiAdknSRMDrAr8mfxPCfSZolH+/qQnyQ=
4+
github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08/go.mod h1:pCxVEbcm3AMg7ejXyorUXi6HQCzOIBf7zEDVPtw0/U4=
35
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
46
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
57
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@@ -17,8 +19,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
1719
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
1820
github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8=
1921
github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
20-
github.com/miekg/dns v1.1.48 h1:Ucfr7IIVyMBz4lRE8qmGUuZ4Wt3/ZGu9hmcMT3Uu4tQ=
21-
github.com/miekg/dns v1.1.48/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME=
22+
github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA=
23+
github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME=
2224
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
2325
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
2426
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -31,19 +33,25 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
3133
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
3234
github.com/projectdiscovery/fileutil v0.0.0-20220215113056-ba188a0c8abc h1:dbDgsj26PW06L3zMo7AT08IbEqMd2u8QQ1BvlfMAY2w=
3335
github.com/projectdiscovery/fileutil v0.0.0-20220215113056-ba188a0c8abc/go.mod h1:Pm0f+MWgDFMSSI9NBedNh48LyYPs8gD3Jd8DXGmp4aQ=
36+
github.com/projectdiscovery/goflags v0.0.7 h1:aykmRkrOgDyRwcvGrK3qp+9aqcjGfAMs/+LtRmtyxwk=
37+
github.com/projectdiscovery/goflags v0.0.7/go.mod h1:Jjwsf4eEBPXDSQI2Y+6fd3dBumJv/J1U0nmpM+hy2YY=
3438
github.com/projectdiscovery/gologger v1.1.4 h1:qWxGUq7ukHWT849uGPkagPKF3yBPYAsTtMKunQ8O2VI=
3539
github.com/projectdiscovery/gologger v1.1.4/go.mod h1:Bhb6Bdx2PV1nMaFLoXNBmHIU85iROS9y1tBuv7T5pMY=
3640
github.com/projectdiscovery/roundrobin v0.0.0-20220414090253-f09184199ebd h1:AbJyHR3mMEaO3TxR9dC8PMvWB8h9uYhbIAZYsvwlaUU=
3741
github.com/projectdiscovery/roundrobin v0.0.0-20220414090253-f09184199ebd/go.mod h1:nfHR2GUULFHe1bWZaA2y1m9CCvg8MdgJ8xI6a+wMUvU=
42+
github.com/projectdiscovery/stringsutil v0.0.0-20210804142656-fd3c28dbaafe h1:tQTgf5XLBgZbkJDPtnV3SfdP9tzz5ZWeDBwv8WhnH9Q=
43+
github.com/projectdiscovery/stringsutil v0.0.0-20210804142656-fd3c28dbaafe/go.mod h1:oTRc18WBv9t6BpaN9XBY+QmG28PUpsyDzRht56Qf49I=
3844
github.com/remeh/sizedwaitgroup v1.0.0 h1:VNGGFwNo/R5+MJBf6yrsr110p0m4/OX4S3DCy7Kyl5E=
3945
github.com/remeh/sizedwaitgroup v1.0.0/go.mod h1:3j2R4OIe/SeS6YDhICBy22RWjJC5eNCJ1V+9+NVNYlo=
4046
github.com/rs/xid v1.4.0 h1:qd7wPTDkN6KQx2VmMBLrpHkiyQwgFXRnkOLacUiaSNY=
4147
github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
4248
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
49+
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
4350
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
4451
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
45-
github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
4652
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
53+
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
54+
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
4755
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
4856
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
4957
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
@@ -81,6 +89,9 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T
8189
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
8290
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
8391
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
92+
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
93+
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
8494
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
85-
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
8695
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
96+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
97+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

pkg/massdns/massdns.go

+2
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ type Config struct {
4444
StrictWildcard bool
4545
// WildcardOutputFile is the file where the list of wildcards is dumped
4646
WildcardOutputFile string
47+
// MassDnsCmd supports massdns flags
48+
MassDnsCmd string
4749
}
4850

4951
// excellentResolvers contains some resolvers used in dns verification step

pkg/massdns/process.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,11 @@ func (c *Client) runMassDNS(output string, store *store.Store) error {
9090
}
9191
now := time.Now()
9292
// Run the command on a temp file and wait for the output
93-
cmd := exec.Command(c.config.MassdnsPath, []string{"-r", c.config.ResolversFile, "-o", "Snl", "-t", "A", c.config.InputFile, "-w", output, "-s", strconv.Itoa(c.config.Threads)}...)
93+
args := []string{"-r", c.config.ResolversFile, "-o", "Snl", "-t", "A", c.config.InputFile, "-w", output, "-s", strconv.Itoa(c.config.Threads)}
94+
if c.config.MassDnsCmd != "" {
95+
args = append(args, strings.Split(c.config.MassDnsCmd, " ")...)
96+
}
97+
cmd := exec.Command(c.config.MassdnsPath, args...)
9498
var stderr bytes.Buffer
9599
cmd.Stderr = &stderr
96100
err := cmd.Run()

pkg/runner/banners.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ const banner = `
66
__ ________ __
77
___ / / __ __/ _/ _/ /__ ___/ /__ ___
88
(_-</ _ \/ // / _/ _/ / -_)/ _ / _ \(_-<
9-
/___/_//_/\_,_/_//_//_/\__/ \_,_/_//_/___/ v1.0.7
9+
/___/_//_/\_,_/_//_//_/\__/ \_,_/_//_/___/ v1.0.8
1010
`
1111

1212
// Version is the current version of naabu
13-
const Version = `v1.0.7`
13+
const Version = `v1.0.8`
1414

1515
// showBanner is used to show the banner to the user
1616
func showBanner() {

0 commit comments

Comments
 (0)