feat: add DNS query/response layer with miekg/dns #3
@@ -0,0 +1,27 @@
|
|||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main, master]
|
||||||
|
pull_request:
|
||||||
|
branches: [main, master]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: '1.24'
|
||||||
|
cache: true
|
||||||
|
|
||||||
|
- name: Vet
|
||||||
|
run: go vet ./...
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: go test -v -race -coverprofile=coverage.out ./...
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: go build -v ./...
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
BINARY_NAME=exploredns
|
||||||
|
BUILD_DIR=bin
|
||||||
|
GO=go
|
||||||
|
GOFLAGS=-v
|
||||||
|
|
||||||
|
.PHONY: build test lint clean
|
||||||
|
|
||||||
|
build:
|
||||||
|
$(GO) build $(GOFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME) ./cmd/exploredns
|
||||||
|
|
||||||
|
test:
|
||||||
|
$(GO) test -v -race -coverprofile=coverage.out ./...
|
||||||
|
|
||||||
|
lint:
|
||||||
|
$(GO) vet ./...
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf $(BUILD_DIR)
|
||||||
|
rm -f coverage.out
|
||||||
@@ -1,2 +1,44 @@
|
|||||||
# ExploreDNS
|
# ExploreDNS
|
||||||
|
|
||||||
|
DNS reconnaissance and exploration tool.
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
```sh
|
||||||
|
go build -o bin/exploredns ./cmd/exploredns
|
||||||
|
```
|
||||||
|
|
||||||
|
Or use the Makefile:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make build
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./bin/exploredns <domain>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make test # run tests
|
||||||
|
make lint # run go vet
|
||||||
|
make clean # remove build artifacts
|
||||||
|
```
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
cmd/exploredns/ CLI entry point
|
||||||
|
internal/dns/ DNS query operations
|
||||||
|
internal/traverse/ DNS tree traversal
|
||||||
|
internal/fingerprint/ DNS server fingerprinting
|
||||||
|
internal/output/ Result formatting and output
|
||||||
|
internal/config/ Configuration management
|
||||||
|
```
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
flag.Usage = func() {
|
||||||
|
fmt.Fprintf(os.Stderr, "ExploreDNS - DNS reconnaissance and exploration tool\n\n")
|
||||||
|
fmt.Fprintf(os.Stderr, "Usage:\n")
|
||||||
|
fmt.Fprintf(os.Stderr, " exploredns [flags] <domain>\n\n")
|
||||||
|
fmt.Fprintf(os.Stderr, "Flags:\n")
|
||||||
|
flag.PrintDefaults()
|
||||||
|
}
|
||||||
|
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
if flag.NArg() == 0 {
|
||||||
|
flag.Usage()
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("ExploreDNS - exploring: %s\n", flag.Arg(0))
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
package config
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
package dns
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
package fingerprint
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
package output
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
package traverse
|
||||||
Reference in New Issue
Block a user