├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── auto_assign.yml
├── dependabot.yml
├── release.yml
└── workflows
│ ├── check-duplicates.yml
│ ├── codeql-analysis.yml
│ ├── go.yml
│ ├── golangci-lint.yml
│ ├── release-binary.yml
│ └── release-test.yml
├── .gitignore
├── .golangci.yml
├── .goreleaser.yaml
├── LICENSE
├── Makefile
├── README.md
├── cmd
└── favirecon
│ └── favirecon.go
├── go.mod
├── go.sum
├── pkg
├── favirecon
│ ├── db.go
│ ├── db.json
│ ├── favirecon.go
│ ├── favirecon_test.go
│ ├── html.go
│ ├── http.go
│ ├── ratelimit.go
│ ├── url.go
│ └── utils.go
├── input
│ ├── check.go
│ └── flags.go
└── output
│ ├── banner.go
│ └── output.go
├── scripts
├── check-dups.sh
├── check-favicon-ok.sh
├── favicon-to-add.txt
└── nuclei-templates-favicon.py
└── snapcraft.yaml
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: edoardottt
2 | liberapay: edoardottt
3 | patreon: edoardottt
4 | ko_fi: edoardottt
5 | open_collective: edoardottt
6 | custom: "https://www.paypal.me/edoardottt"
7 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. iOS]
28 | - Browser [e.g. chrome, safari]
29 | - Version [e.g. 22]
30 |
31 | **Smartphone (please complete the following information):**
32 | - Device: [e.g. iPhone6]
33 | - OS: [e.g. iOS8.1]
34 | - Browser [e.g. stock browser, safari]
35 | - Version [e.g. 22]
36 |
37 | **Additional context**
38 | Add any other context about the problem here.
39 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/auto_assign.yml:
--------------------------------------------------------------------------------
1 | # Set to true to add reviewers to pull requests
2 | addReviewers: true
3 |
4 | # A list of reviewers to be added to pull requests (GitHub user name)
5 | reviewers:
6 | - edoardottt
7 |
8 | # A list of keywords to be skipped the process that add reviewers if pull requests include it
9 | skipKeywords:
10 | - wip
11 |
12 | # A number of reviewers added to the pull request
13 | # Set 0 to add all the reviewers (default: 0)
14 | numberOfReviewers: 0
15 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 |
4 | # Maintain dependencies for go modules
5 | - package-ecosystem: "gomod"
6 | directory: "/"
7 | schedule:
8 | interval: "weekly"
9 | target-branch: "devel"
10 | commit-message:
11 | prefix: "chore"
12 | include: "scope"
13 | labels:
14 | - "Maintenance"
15 |
--------------------------------------------------------------------------------
/.github/release.yml:
--------------------------------------------------------------------------------
1 | changelog:
2 | exclude:
3 | authors:
4 | - dependabot
5 | categories:
6 | - title: 🎉 New Features
7 | labels:
8 | - "Type: Enhancement"
9 | - title: 🐞 Bug Fixes
10 | labels:
11 | - "Type: Bug"
12 | - title: 🔨 Maintenance
13 | labels:
14 | - "Type: Maintenance"
15 | - title: Other Changes
16 | labels:
17 | - "*"
--------------------------------------------------------------------------------
/.github/workflows/check-duplicates.yml:
--------------------------------------------------------------------------------
1 | name: Check Duplicates
2 |
3 | on:
4 | push:
5 | branches: [ "main","devel"]
6 | pull_request:
7 | branches: [ "main","devel"]
8 |
9 | jobs:
10 | check-duplicates:
11 | runs-on: ubuntu-latest
12 | steps:
13 | - name: Check Out Code
14 | uses: actions/checkout@v2
15 |
16 | - name: Run Check Duplicates Script
17 | run: |
18 | chmod +x scripts/check-dups.sh
19 | ./scripts/check-dups.sh
20 | working-directory: ${{ github.workspace }}
--------------------------------------------------------------------------------
/.github/workflows/codeql-analysis.yml:
--------------------------------------------------------------------------------
1 | name: "CodeQL"
2 |
3 | on:
4 | push:
5 | branches: [main]
6 | pull_request:
7 | # The branches below must be a subset of the branches above
8 | branches: [main]
9 | schedule:
10 | - cron: '0 0 * * 6'
11 |
12 | jobs:
13 | analyze:
14 | name: Analyze
15 | runs-on: ubuntu-latest
16 |
17 | strategy:
18 | fail-fast: false
19 | matrix:
20 | # Override automatic language detection by changing the below list
21 | # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
22 | language: ['go']
23 | # Learn more...
24 | # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
25 |
26 | steps:
27 | - name: Checkout repository
28 | uses: actions/checkout@v2
29 | with:
30 | # We must fetch at least the immediate parents so that if this is
31 | # a pull request then we can checkout the head.
32 | fetch-depth: 2
33 |
34 | # If this run was triggered by a pull request event, then checkout
35 | # the head of the pull request instead of the merge commit.
36 | - run: git checkout HEAD^2
37 | if: ${{ github.event_name == 'pull_request' }}
38 |
39 | # Initializes the CodeQL tools for scanning.
40 | - name: Initialize CodeQL
41 | uses: github/codeql-action/init@v2
42 | with:
43 | languages: ${{ matrix.language }}
44 | # If you wish to specify custom queries, you can do so here or in a config file.
45 | # By default, queries listed here will override any specified in a config file.
46 | # Prefix the list here with "+" to use these queries and those in the config file.
47 | # queries: ./path/to/local/query, your-org/your-repo/queries@main
48 |
49 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
50 | # If this step fails, then you should remove it and run the build manually (see below)
51 | - name: Autobuild
52 | uses: github/codeql-action/autobuild@v2
53 |
54 | # ℹ️ Command-line programs to run using the OS shell.
55 | # 📚 https://git.io/JvXDl
56 |
57 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
58 | # and modify them (or add more) to build your code if your project
59 | # uses a compiled language
60 |
61 | #- run: |
62 | # make bootstrap
63 | # make release
64 |
65 | - name: Perform CodeQL Analysis
66 | uses: github/codeql-action/analyze@v2
67 |
--------------------------------------------------------------------------------
/.github/workflows/go.yml:
--------------------------------------------------------------------------------
1 | # This workflow will build a golang project
2 | # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go
3 |
4 | name: Go
5 |
6 | on:
7 | push:
8 | branches: [ "main","devel"]
9 | pull_request:
10 | branches: [ "main","devel"]
11 |
12 | jobs:
13 |
14 | build:
15 | runs-on: ubuntu-latest
16 | steps:
17 | - uses: actions/checkout@v3
18 |
19 | - name: Set up Go
20 | uses: actions/setup-go@v3
21 | with:
22 | go-version: 1.21
23 |
24 | - name: Build
25 | run: go build -v ./...
26 |
27 | - name: Test
28 | run: go test -v ./...
29 |
--------------------------------------------------------------------------------
/.github/workflows/golangci-lint.yml:
--------------------------------------------------------------------------------
1 | name: golangci-lint
2 | on:
3 | push:
4 | tags:
5 | - v*
6 | branches:
7 | - devel
8 | - main
9 | pull_request:
10 | permissions:
11 | contents: read
12 | # Optional: allow read access to pull request. Use with `only-new-issues` option.
13 | # pull-requests: read
14 | jobs:
15 | golangci:
16 | name: lint
17 | runs-on: ubuntu-latest
18 | steps:
19 | - uses: actions/setup-go@v3
20 | with:
21 | go-version: 1.23
22 | - uses: actions/checkout@v3
23 | - name: golangci-lint
24 | uses: golangci/golangci-lint-action@v3
25 | with:
26 | # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version
27 | version: v1.61.0
28 |
29 | # Optional: working directory, useful for monorepos
30 | # working-directory: somedir
31 |
32 | # Optional: golangci-lint command line arguments.
33 | # args: --issues-exit-code=0
34 |
35 | # Optional: show only new issues if it's a pull request. The default value is `false`.
36 | # only-new-issues: true
37 |
38 | # Optional: if set to true then the all caching functionality will be complete disabled,
39 | # takes precedence over all other caching options.
40 | # skip-cache: true
41 |
42 | # Optional: if set to true then the action don't cache or restore ~/go/pkg.
43 | # skip-pkg-cache: true
44 |
45 | # Optional: if set to true then the action don't cache or restore ~/.cache/go-build.
46 | # skip-build-cache: true
47 |
--------------------------------------------------------------------------------
/.github/workflows/release-binary.yml:
--------------------------------------------------------------------------------
1 | name: 🎉 Release Binary
2 |
3 | on:
4 | push:
5 | tags:
6 | - '*'
7 | workflow_dispatch:
8 |
9 | jobs:
10 | release:
11 | runs-on: ubuntu-latest
12 | steps:
13 | - name: "Check out code"
14 | uses: actions/checkout@v3
15 | with:
16 | fetch-depth: 0
17 |
18 | - name: "Set up Go"
19 | uses: actions/setup-go@v4
20 | with:
21 | go-version: 1.21.x
22 |
23 | - name: "Create release on GitHub"
24 | timeout-minutes: 10
25 | uses: goreleaser/goreleaser-action@v4
26 | with:
27 | args: "release --clean"
28 | version: latest
29 | workdir: .
30 | env:
31 | GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
--------------------------------------------------------------------------------
/.github/workflows/release-test.yml:
--------------------------------------------------------------------------------
1 | name: 🔨 Release Test
2 |
3 | on:
4 | pull_request:
5 | paths:
6 | - '**.go'
7 | - '**.mod'
8 | workflow_dispatch:
9 |
10 | jobs:
11 | release-test:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - name: "Check out code"
15 | uses: actions/checkout@v3
16 | with:
17 | fetch-depth: 0
18 |
19 | - name: Set up Go
20 | uses: actions/setup-go@v4
21 | with:
22 | go-version: 1.21.x
23 |
24 | - name: release test
25 | uses: goreleaser/goreleaser-action@v4
26 | with:
27 | args: "release --clean --snapshot"
28 | version: latest
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .vscode/
2 | scripts/check-present.sh
3 | scripts/compute-murmur3.go
4 | scripts/fav-google.py
5 | scripts/mm3.py
6 | /favirecon
7 | *.snap
8 |
9 | # Binaries for programs and plugins
10 | *.exe
11 | *.exe~
12 | *.dll
13 | *.so
14 | *.dylib
15 |
16 | # Test binary, built with `go test -c`
17 | *.test
18 | *.cfg
19 |
20 | # Test input files
21 | *.in
22 |
23 | # Output of the go coverage tool, specifically when used with LiteIDE
24 | *.out
25 |
26 | # Dependency directories (remove the comment below to include it)
27 | # vendor/
28 |
--------------------------------------------------------------------------------
/.golangci.yml:
--------------------------------------------------------------------------------
1 | linters:
2 | # Enable all available linters.
3 | # Default: false
4 | disable-all: true
5 | enable:
6 | - asciicheck
7 | - bodyclose
8 | - copyloopvar
9 | - dogsled
10 | - dupl
11 | - err113
12 | - errcheck
13 | - exhaustive
14 | - gochecknoglobals
15 | - goconst
16 | - gocritic
17 | - godot
18 | - godox
19 | - goheader
20 | - gomodguard
21 | - goprintffuncname
22 | - gosimple
23 | - govet
24 | - ineffassign
25 | - misspell
26 | - mnd
27 | - nakedret
28 | - nolintlint
29 | - prealloc
30 | - rowserrcheck
31 | - sqlclosecheck
32 | - staticcheck
33 | - stylecheck
34 | - testpackage
35 | - typecheck
36 | - unconvert
37 | - unparam
38 | - unused
39 | - whitespace
40 | - wsl
41 |
42 | linters-settings:
43 | wsl:
44 | strict-append: false
45 | enforce-err-cuddling: true
46 |
47 | mnd:
48 | # Values always ignored: "1", "1.0", "0" and "0.0"
49 | # Default: []
50 | ignored-numbers:
51 | - '2'
52 | - '0644'
53 |
54 | issues:
55 | exclude-rules:
56 | - path: pkg/favirecon/db.go
57 | text: "should be written without leading space as `//nolint: gochecknoglobals`"
58 | - path: pkg/output/banner.go
59 | text: "should be written without leading space as `//nolint: gochecknoglobals`"
--------------------------------------------------------------------------------
/.goreleaser.yaml:
--------------------------------------------------------------------------------
1 | release:
2 | header: |
3 | ## favirecon {{ .Tag }} 🥳
4 | *Use favicons to improve your target recon phase. Quickly detect technologies, WAF, exposed panels, known services.*
5 |
6 | footer: |
7 | If you encounter a problem, just open an [issue](https://github.com/edoardottt/favirecon/issues)
8 |
9 | before:
10 | hooks:
11 | - go mod tidy
12 |
13 | builds:
14 | - env:
15 | - CGO_ENABLED=0
16 | goos:
17 | - linux
18 | - windows
19 | - darwin
20 | goarch:
21 | - amd64
22 | - 386
23 | - arm
24 | - arm64
25 | ignore:
26 | - goos: darwin
27 | goarch: '386'
28 | - goos: windows
29 | goarch: 'arm'
30 | - goos: windows
31 | goarch: 'arm64'
32 | binary: '{{ .ProjectName }}'
33 | main: ./cmd/favirecon/
34 |
35 | archives:
36 | - format: zip
37 | name_template: '{{ .ProjectName }}_{{ .Version }}_{{ if eq .Os "darwin" }}macOS{{ else }}{{ .Os }}{{ end }}_{{ .Arch }}'
38 |
39 | checksum:
40 | algorithm: sha256
41 |
42 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 vrenzolaverace
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | REPO=github.com/edoardottt/favirecon
2 |
3 | remod:
4 | @rm -rf go.*
5 | @go mod init ${REPO}
6 | @go get ./...
7 | @go mod tidy -v
8 | @echo "Done."
9 |
10 | update:
11 | @go get -u ./...
12 | @go mod tidy -v
13 | @echo "Done."
14 |
15 | lint:
16 | @golangci-lint run
17 |
18 | build:
19 | @go build ./cmd/favirecon/
20 | @sudo mv favirecon /usr/local/bin/
21 | @echo "Done."
22 |
23 | clean:
24 | @sudo rm -rf /usr/local/bin/favirecon
25 | @echo "Done."
26 |
27 | test:
28 | @go test -race ./...
29 | @echo "Done."
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | favirecon
3 |
4 |
5 |
6 | Use favicons to improve your target recon phase
7 |
8 | Coded with 💙 by edoardottt
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | Share on Twitter!
23 |
24 |
25 |
26 |
27 | Install •
28 | Get Started •
29 | Examples •
30 | Changelog •
31 | Contributing •
32 | License
33 |
34 |
35 |
36 |
37 |
38 |
39 | > **Note**
40 | > This tool heavily relies on its favicon hash database. If you think you have a new favicon hash that's worth adding or you think there is a wrong hash-service association please open an issue.
41 |
42 | Install 📡
43 | ----------
44 |
45 | ### Homebrew
46 |
47 | ```console
48 | brew install favirecon
49 | ```
50 |
51 | ### Snap
52 |
53 | ```console
54 | sudo snap install favirecon
55 | ```
56 |
57 | ### Go
58 |
59 | ```console
60 | go install github.com/edoardottt/favirecon/cmd/favirecon@latest
61 | ```
62 |
63 | Get Started 🎉
64 | ----------
65 |
66 | ```console
67 | Usage:
68 | favirecon [flags]
69 |
70 | Flags:
71 | INPUT:
72 | -u, -url string Input domain
73 | -l, -list string File containing input domains
74 | -cidr Interpret input as CIDR
75 |
76 | CONFIGURATIONS:
77 | -hash string[] Filter results having these favicon hashes (comma separated)
78 | -c, -concurrency int Concurrency level (default 50)
79 | -t, -timeout int Connection timeout in seconds (default 10)
80 | -rl, -rate-limit int Set a rate limit (per second)
81 | -px, -proxy string Set a proxy server (URL)
82 |
83 | OUTPUT:
84 | -o, -output string File to write output results
85 | -v, -verbose Verbose output
86 | -s, -silent Silent output. Print only results
87 | -j, -json JSON output
88 | ```
89 |
90 | Examples 💡
91 | ----------
92 |
93 | Identify a single domain
94 |
95 | ```console
96 | favirecon -u https://www.github.com
97 | ```
98 |
99 | ```console
100 | echo https://www.github.com | favirecon
101 | ```
102 |
103 | Grab all possible results from a list of domains (protocols needed!)
104 |
105 | ```console
106 | favirecon -l targets.txt
107 | ```
108 |
109 | ```console
110 | cat targets.txt | favirecon
111 | ```
112 |
113 | Grab all possible results belonging to a specific target(s) (protocols needed!)
114 |
115 | ```console
116 | cat targets.txt | favirecon -hash 708578229
117 | ```
118 |
119 | Grab all possible results from single CIDR
120 |
121 | ```console
122 | favirecon -u 192.168.1.0/24 -cidr
123 | ```
124 |
125 | Use a Proxy
126 |
127 | ```console
128 | favirecon -u https://www.github.com -px http://127.0.0.1:8080
129 | ```
130 |
131 | JSON Output
132 |
133 | ```console
134 | favirecon -u https://www.github.com -j
135 | ```
136 |
137 | Changelog 📌
138 | -------
139 |
140 | Detailed changes for each release are documented in the [release notes](https://github.com/edoardottt/favirecon/releases).
141 |
142 | Contributing 🛠
143 | -------
144 |
145 | Just open an [issue](https://github.com/edoardottt/favirecon/issues) / [pull request](https://github.com/edoardottt/favirecon/pulls).
146 |
147 | Before opening a pull request, download [golangci-lint](https://golangci-lint.run/usage/install/) and run
148 |
149 | ```console
150 | golangci-lint run
151 | ```
152 |
153 | If there aren't errors, go ahead :)
154 |
155 | In the news 📰
156 | -------
157 |
158 | - [Hive Five Newsletter by Securibee](https://securib.ee/newsletter/)
159 |
160 | License 📝
161 | -------
162 |
163 | This repository is under [MIT License](https://github.com/edoardottt/favirecon/blob/main/LICENSE).
164 | [edoardottt.com](https://edoardottt.com/) to contact me.
165 |
--------------------------------------------------------------------------------
/cmd/favirecon/favirecon.go:
--------------------------------------------------------------------------------
1 | /*
2 | favirecon - Use favicon.ico to improve your target recon phase. Quickly detect technologies, WAF, exposed panels, known services.
3 |
4 | This repository is under MIT License https://github.com/edoardottt/favirecon/blob/main/LICENSE
5 | */
6 |
7 | package main
8 |
9 | import (
10 | "github.com/edoardottt/favirecon/pkg/favirecon"
11 | "github.com/edoardottt/favirecon/pkg/input"
12 | )
13 |
14 | func main() {
15 | options := input.ParseOptions()
16 | runner := favirecon.New(options)
17 | runner.Run()
18 | }
19 |
--------------------------------------------------------------------------------
/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/edoardottt/favirecon
2 |
3 | go 1.23.0
4 |
5 | require (
6 | github.com/PuerkitoBio/goquery v1.10.3
7 | github.com/edoardottt/golazy v0.1.4
8 | github.com/projectdiscovery/goflags v0.1.74
9 | github.com/projectdiscovery/gologger v1.1.54
10 | github.com/projectdiscovery/mapcidr v1.1.34
11 | github.com/projectdiscovery/utils v0.4.19
12 | github.com/stretchr/testify v1.10.0
13 | github.com/twmb/murmur3 v1.1.8
14 | go.uber.org/ratelimit v0.3.1
15 | )
16 |
17 | require (
18 | github.com/STARRY-S/zip v0.2.3 // indirect
19 | github.com/andybalholm/brotli v1.1.1 // indirect
20 | github.com/andybalholm/cascadia v1.3.3 // indirect
21 | github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
22 | github.com/aymerick/douceur v0.2.0 // indirect
23 | github.com/benbjohnson/clock v1.3.5 // indirect
24 | github.com/bodgit/plumbing v1.3.0 // indirect
25 | github.com/bodgit/sevenzip v1.6.1 // indirect
26 | github.com/bodgit/windows v1.0.1 // indirect
27 | github.com/cnf/structhash v0.0.0-20250313080605-df4c6cc74a9a // indirect
28 | github.com/davecgh/go-spew v1.1.1 // indirect
29 | github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect
30 | github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
31 | github.com/gorilla/css v1.0.1 // indirect
32 | github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
33 | github.com/json-iterator/go v1.1.12 // indirect
34 | github.com/klauspost/compress v1.18.0 // indirect
35 | github.com/klauspost/pgzip v1.2.6 // indirect
36 | github.com/logrusorgru/aurora v2.0.3+incompatible // indirect
37 | github.com/mattn/go-isatty v0.0.20 // indirect
38 | github.com/mholt/archives v0.1.1 // indirect
39 | github.com/microcosm-cc/bluemonday v1.0.27 // indirect
40 | github.com/miekg/dns v1.1.65 // indirect
41 | github.com/minio/minlz v1.0.0 // indirect
42 | github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
43 | github.com/modern-go/reflect2 v1.0.2 // indirect
44 | github.com/nwaples/rardecode/v2 v2.1.1 // indirect
45 | github.com/pierrec/lz4/v4 v4.1.22 // indirect
46 | github.com/pkg/errors v0.9.1 // indirect
47 | github.com/pmezard/go-difflib v1.0.0 // indirect
48 | github.com/projectdiscovery/blackrock v0.0.1 // indirect
49 | github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d // indirect
50 | github.com/sorairolake/lzip-go v0.3.7 // indirect
51 | github.com/spf13/afero v1.14.0 // indirect
52 | github.com/therootcompany/xz v1.0.1 // indirect
53 | github.com/tidwall/gjson v1.18.0 // indirect
54 | github.com/tidwall/match v1.1.1 // indirect
55 | github.com/tidwall/pretty v1.2.1 // indirect
56 | github.com/ulikunitz/xz v0.5.12 // indirect
57 | go4.org v0.0.0-20230225012048-214862532bf5 // indirect
58 | golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 // indirect
59 | golang.org/x/mod v0.24.0 // indirect
60 | golang.org/x/net v0.39.0 // indirect
61 | golang.org/x/sync v0.13.0 // indirect
62 | golang.org/x/sys v0.32.0 // indirect
63 | golang.org/x/text v0.24.0 // indirect
64 | golang.org/x/tools v0.32.0 // indirect
65 | gopkg.in/djherbis/times.v1 v1.3.0 // indirect
66 | gopkg.in/yaml.v3 v3.0.1 // indirect
67 | )
68 |
--------------------------------------------------------------------------------
/go.sum:
--------------------------------------------------------------------------------
1 | cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
2 | cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
3 | cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
4 | cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
5 | cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
6 | cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
7 | cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
8 | cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
9 | cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
10 | cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
11 | cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
12 | cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
13 | cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
14 | cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
15 | cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
16 | cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
17 | dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
18 | github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
19 | github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
20 | github.com/PuerkitoBio/goquery v1.10.3 h1:pFYcNSqHxBD06Fpj/KsbStFRsgRATgnf3LeXiUkhzPo=
21 | github.com/PuerkitoBio/goquery v1.10.3/go.mod h1:tMUX0zDMHXYlAQk6p35XxQMqMweEKB7iK7iLNd4RH4Y=
22 | github.com/STARRY-S/zip v0.2.3 h1:luE4dMvRPDOWQdeDdUxUoZkzUIpTccdKdhHHsQJ1fm4=
23 | github.com/STARRY-S/zip v0.2.3/go.mod h1:lqJ9JdeRipyOQJrYSOtpNAiaesFO6zVDsE8GIGFaoSk=
24 | github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA=
25 | github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA=
26 | github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kktS1LM=
27 | github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA=
28 | github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
29 | github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
30 | github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
31 | github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
32 | github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o=
33 | github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
34 | github.com/bodgit/plumbing v1.3.0 h1:pf9Itz1JOQgn7vEOE7v7nlEfBykYqvUYioC61TwWCFU=
35 | github.com/bodgit/plumbing v1.3.0/go.mod h1:JOTb4XiRu5xfnmdnDJo6GmSbSbtSyufrsyZFByMtKEs=
36 | github.com/bodgit/sevenzip v1.6.1 h1:kikg2pUMYC9ljU7W9SaqHXhym5HyKm8/M/jd31fYan4=
37 | github.com/bodgit/sevenzip v1.6.1/go.mod h1:GVoYQbEVbOGT8n2pfqCIMRUaRjQ8F9oSqoBEqZh5fQ8=
38 | github.com/bodgit/windows v1.0.1 h1:tF7K6KOluPYygXa3Z2594zxlkbKPAOvqr97etrGNIz4=
39 | github.com/bodgit/windows v1.0.1/go.mod h1:a6JLwrB4KrTR5hBpp8FI9/9W9jJfeQ2h4XDXU74ZCdM=
40 | github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
41 | github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
42 | github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
43 | github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
44 | github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
45 | github.com/cnf/structhash v0.0.0-20250313080605-df4c6cc74a9a h1:Ohw57yVY2dBTt+gsC6aZdteyxwlxfbtgkFEMTEkwgSw=
46 | github.com/cnf/structhash v0.0.0-20250313080605-df4c6cc74a9a/go.mod h1:pCxVEbcm3AMg7ejXyorUXi6HQCzOIBf7zEDVPtw0/U4=
47 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
48 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
49 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
50 | github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4=
51 | github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=
52 | github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=
53 | github.com/edoardottt/golazy v0.1.4 h1:TsRFfTpOabiyTyiB2Dm/aR4id5r+ILOxNjYOSkeq8ec=
54 | github.com/edoardottt/golazy v0.1.4/go.mod h1:uZRa3TRYvQSxmbAc7O9+3RelkMu+ACbKiUoy+uPsGVM=
55 | github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
56 | github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
57 | github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
58 | github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
59 | github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
60 | github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
61 | github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
62 | github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
63 | github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
64 | github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
65 | github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
66 | github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
67 | github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
68 | github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
69 | github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
70 | github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
71 | github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
72 | github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
73 | github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
74 | github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
75 | github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
76 | github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
77 | github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
78 | github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
79 | github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
80 | github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
81 | github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
82 | github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
83 | github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
84 | github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
85 | github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
86 | github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
87 | github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
88 | github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
89 | github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
90 | github.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8=
91 | github.com/gorilla/css v1.0.1/go.mod h1:BvnYkspnSzMmwRK+b8/xgNPLiIuNZr6vbZBTPQ2A3b0=
92 | github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
93 | github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
94 | github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
95 | github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
96 | github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
97 | github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
98 | github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
99 | github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
100 | github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
101 | github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
102 | github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
103 | github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
104 | github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
105 | github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
106 | github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=
107 | github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
108 | github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
109 | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
110 | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
111 | github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
112 | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
113 | github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8=
114 | github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
115 | github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
116 | github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
117 | github.com/mholt/archives v0.1.1 h1:c7J3qXN1FB54y0qiUXiq9Bxk4eCUc8pdXWwOhZdRzeY=
118 | github.com/mholt/archives v0.1.1/go.mod h1:FQVz01Q2uXKB/35CXeW/QFO23xT+hSCGZHVtha78U4I=
119 | github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk=
120 | github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA=
121 | github.com/miekg/dns v1.1.65 h1:0+tIPHzUW0GCge7IiK3guGP57VAw7hoPDfApjkMD1Fc=
122 | github.com/miekg/dns v1.1.65/go.mod h1:Dzw9769uoKVaLuODMDZz9M6ynFU6Em65csPuoi8G0ck=
123 | github.com/minio/minlz v1.0.0 h1:Kj7aJZ1//LlTP1DM8Jm7lNKvvJS2m74gyyXXn3+uJWQ=
124 | github.com/minio/minlz v1.0.0/go.mod h1:qT0aEB35q79LLornSzeDH75LBf3aH1MV+jB5w9Wasec=
125 | github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
126 | github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
127 | github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
128 | github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
129 | github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
130 | github.com/nwaples/rardecode/v2 v2.1.1 h1:OJaYalXdliBUXPmC8CZGQ7oZDxzX1/5mQmgn0/GASew=
131 | github.com/nwaples/rardecode/v2 v2.1.1/go.mod h1:7uz379lSxPe6j9nvzxUZ+n7mnJNgjsRNb6IbvGVHRmw=
132 | github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU=
133 | github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
134 | github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
135 | github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
136 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
137 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
138 | github.com/projectdiscovery/blackrock v0.0.1 h1:lHQqhaaEFjgf5WkuItbpeCZv2DUIE45k0VbGJyft6LQ=
139 | github.com/projectdiscovery/blackrock v0.0.1/go.mod h1:ANUtjDfaVrqB453bzToU+YB4cUbvBRpLvEwoWIwlTss=
140 | github.com/projectdiscovery/goflags v0.1.74 h1:n85uTRj5qMosm0PFBfsvOL24I7TdWRcWq/1GynhXS7c=
141 | github.com/projectdiscovery/goflags v0.1.74/go.mod h1:UMc9/7dFz2oln+10tv6cy+7WZKTHf9UGhaNkF95emh4=
142 | github.com/projectdiscovery/gologger v1.1.54 h1:WMzvJ8j/4gGfPKpCttSTaYCVDU1MWQSJnk3wU8/U6Ws=
143 | github.com/projectdiscovery/gologger v1.1.54/go.mod h1:vza/8pe2OKOt+ujFWncngknad1XWr8EnLKlbcejOyUE=
144 | github.com/projectdiscovery/mapcidr v1.1.34 h1:udr83vQ7oz3kEOwlsU6NC6o08leJzSDQtls1wmXN/kM=
145 | github.com/projectdiscovery/mapcidr v1.1.34/go.mod h1:1+1R6OkKSAKtWDXE9RvxXtXPoajXTYX0eiEdkqlhQqQ=
146 | github.com/projectdiscovery/utils v0.4.19 h1:rWOOTWUMQK9gvgH01rrw0qFi0hrh712hM1pCUzapCqA=
147 | github.com/projectdiscovery/utils v0.4.19/go.mod h1:y5gnpQn802iEWqf0djTRNskJlS62P5eqe1VS1+ah0tk=
148 | github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
149 | github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
150 | github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk=
151 | github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d h1:hrujxIzL1woJ7AwssoOcM/tq5JjjG2yYOc8odClEiXA=
152 | github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU=
153 | github.com/sorairolake/lzip-go v0.3.7 h1:vP2uiD/NoklLyzYMdgOWkZME0ulkSfVTTE4MNRKCwNs=
154 | github.com/sorairolake/lzip-go v0.3.7/go.mod h1:THOHr0FlNVCw2eOIEE9shFJAG1QxQg/pf2XUPAmNIqg=
155 | github.com/spf13/afero v1.14.0 h1:9tH6MapGnn/j0eb0yIXiLjERO8RB6xIVZRDCX7PtqWA=
156 | github.com/spf13/afero v1.14.0/go.mod h1:acJQ8t0ohCGuMN3O+Pv0V0hgMxNYDlvdk+VTfyZmbYo=
157 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
158 | github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
159 | github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
160 | github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
161 | github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
162 | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
163 | github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
164 | github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
165 | github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
166 | github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
167 | github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
168 | github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
169 | github.com/therootcompany/xz v1.0.1 h1:CmOtsn1CbtmyYiusbfmhmkpAAETj0wBIH6kCYaX+xzw=
170 | github.com/therootcompany/xz v1.0.1/go.mod h1:3K3UH1yCKgBneZYhuQUvJ9HPD19UEXEI0BWbMn8qNMY=
171 | github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
172 | github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
173 | github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
174 | github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
175 | github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
176 | github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
177 | github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
178 | github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg=
179 | github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ=
180 | github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
181 | github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
182 | github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
183 | github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
184 | github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
185 | github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
186 | go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
187 | go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
188 | go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
189 | go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
190 | go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
191 | go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
192 | go.uber.org/ratelimit v0.3.1 h1:K4qVE+byfv/B3tC+4nYWP7v/6SimcO7HzHekoMNBma0=
193 | go.uber.org/ratelimit v0.3.1/go.mod h1:6euWsTB6U/Nb3X++xEUXA8ciPJvr19Q/0h1+oDcJhRk=
194 | go4.org v0.0.0-20230225012048-214862532bf5 h1:nifaUDeh+rPaBCMPMQHZmvJf+QdpLFnuQPwx+LxVmtc=
195 | go4.org v0.0.0-20230225012048-214862532bf5/go.mod h1:F57wTi5Lrj6WLyswp5EYV1ncrEbFGHD4hhz6S1ZYeaU=
196 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
197 | golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
198 | golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
199 | golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
200 | golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
201 | golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
202 | golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
203 | golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
204 | golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
205 | golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
206 | golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
207 | golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
208 | golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
209 | golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
210 | golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
211 | golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
212 | golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
213 | golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM=
214 | golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8=
215 | golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
216 | golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
217 | golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
218 | golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
219 | golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
220 | golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
221 | golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
222 | golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
223 | golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
224 | golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
225 | golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
226 | golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
227 | golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
228 | golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
229 | golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
230 | golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
231 | golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
232 | golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
233 | golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
234 | golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
235 | golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
236 | golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
237 | golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU=
238 | golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
239 | golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
240 | golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
241 | golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
242 | golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
243 | golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
244 | golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
245 | golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
246 | golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
247 | golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
248 | golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
249 | golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
250 | golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
251 | golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
252 | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
253 | golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
254 | golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
255 | golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
256 | golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
257 | golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
258 | golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
259 | golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
260 | golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
261 | golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY=
262 | golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
263 | golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
264 | golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
265 | golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
266 | golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
267 | golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
268 | golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
269 | golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
270 | golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
271 | golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
272 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
273 | golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
274 | golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
275 | golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
276 | golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
277 | golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
278 | golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
279 | golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
280 | golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610=
281 | golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
282 | golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
283 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
284 | golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
285 | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
286 | golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
287 | golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
288 | golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
289 | golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
290 | golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
291 | golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
292 | golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
293 | golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
294 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
295 | golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
296 | golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
297 | golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
298 | golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
299 | golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
300 | golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
301 | golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
302 | golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
303 | golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
304 | golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
305 | golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
306 | golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
307 | golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
308 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
309 | golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
310 | golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
311 | golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
312 | golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
313 | golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
314 | golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
315 | golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
316 | golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
317 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
318 | golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
319 | golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
320 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
321 | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
322 | golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
323 | golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
324 | golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
325 | golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
326 | golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
327 | golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
328 | golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0=
329 | golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
330 | golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
331 | golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
332 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
333 | golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
334 | golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
335 | golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
336 | golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
337 | golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
338 | golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
339 | golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
340 | golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
341 | golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
342 | golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
343 | golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
344 | golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
345 | golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
346 | golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
347 | golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
348 | golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
349 | golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
350 | golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
351 | golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
352 | golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
353 | golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
354 | golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
355 | golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
356 | golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
357 | golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
358 | golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
359 | golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
360 | golang.org/x/tools v0.32.0 h1:Q7N1vhpkQv7ybVzLFtTjvQya2ewbwNDZzUgfXGqtMWU=
361 | golang.org/x/tools v0.32.0/go.mod h1:ZxrU41P/wAbZD8EDa6dDCa6XfpkhJ7HFMjHJXfBDu8s=
362 | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
363 | golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
364 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
365 | google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
366 | google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
367 | google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
368 | google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
369 | google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
370 | google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
371 | google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
372 | google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
373 | google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
374 | google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
375 | google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
376 | google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
377 | google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
378 | google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
379 | google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
380 | google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
381 | google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
382 | google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
383 | google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
384 | google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
385 | google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
386 | google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
387 | google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
388 | google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
389 | google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
390 | google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
391 | google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
392 | google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
393 | google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
394 | google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
395 | google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
396 | google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
397 | google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
398 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
399 | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
400 | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
401 | gopkg.in/djherbis/times.v1 v1.3.0 h1:uxMS4iMtH6Pwsxog094W0FYldiNnfY/xba00vq6C2+o=
402 | gopkg.in/djherbis/times.v1 v1.3.0/go.mod h1:AQlg6unIsrsCEdQYhTzERy542dz6SFdQFZFv6mUY0P8=
403 | gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
404 | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
405 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
406 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
407 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
408 | honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
409 | honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
410 | honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
411 | honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
412 | honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
413 | rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
414 | rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
415 | rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
416 |
--------------------------------------------------------------------------------
/pkg/favirecon/db.go:
--------------------------------------------------------------------------------
1 | /*
2 | favirecon - Use favicon.ico to improve your target recon phase. Quickly detect technologies, WAF, exposed panels, known services.
3 |
4 | This repository is under MIT License https://github.com/edoardottt/favirecon/blob/main/LICENSE
5 | */
6 |
7 | package favirecon
8 |
9 | import (
10 | "encoding/json"
11 | "errors"
12 | "fmt"
13 | "log"
14 |
15 | _ "embed"
16 |
17 | "github.com/projectdiscovery/goflags"
18 | )
19 |
20 | // nolint: gochecknoglobals
21 | var (
22 | //go:embed db.json
23 | dbJSON string
24 |
25 | db map[string]string
26 | ErrHashNotFound = errors.New("hash not found")
27 | ErrHashNotMatching = errors.New("hash not matching hash provided")
28 | )
29 |
30 | func init() {
31 | if err := json.Unmarshal([]byte(dbJSON), &db); err != nil {
32 | log.Fatal("error while unmarshaling db")
33 | }
34 | }
35 |
36 | // CheckFavicon checks if faviconHash is present in the database. If hash (slice) is not empty,
37 | // it checks also if that faviconHash is one of the inputted hashes.
38 | // If faviconHash is not found, an error is returned.
39 | func CheckFavicon(faviconHash string, hash goflags.StringSlice, url ...string) (string, error) {
40 | if k, ok := db[faviconHash]; ok {
41 | if len(hash) != 0 {
42 | if contains(hash, faviconHash) {
43 | return k, nil
44 | }
45 |
46 | return "", fmt.Errorf("[%s] %s %w", faviconHash, url, ErrHashNotMatching)
47 | }
48 |
49 | return k, nil
50 | }
51 |
52 | if len(url) == 0 {
53 | return "", fmt.Errorf("%w", ErrHashNotFound)
54 | }
55 |
56 | return "", fmt.Errorf("[%s] %s %w", faviconHash, url, ErrHashNotFound)
57 | }
58 |
--------------------------------------------------------------------------------
/pkg/favirecon/db.json:
--------------------------------------------------------------------------------
1 | {
2 | "-1000719429": "SpamSniper",
3 | "-1001050714": "GROWI - Team collaboration software",
4 | "-1003107038": "WordPress",
5 | "1004209915": "Contaware",
6 | "-1004700569": "TheHost",
7 | "-1010568750": "phpMyAdmin",
8 | "1011076161": "ASPECT Control Panel",
9 | "-1012744956": "Kaspersky Endpoint Security Cloud",
10 | "1012948051": "Opengear Management Console",
11 | "-1013024216": "Dashy",
12 | "1052926265": "File Browser",
13 | "1015545776": "pfSense",
14 | "-1015932800": "Ghost (CMS)",
15 | "1016158463": "Netonix",
16 | "-101718582": "GIAE Online",
17 | "-1017346469": "WeBWork",
18 | "1020814938": "Ubiquiti - AirOS",
19 | "1021528395": "Phicomm",
20 | "-1022206565": "CrushFTP",
21 | "-1022319330": "Belkin router",
22 | "1023869165": "Flood Web UI",
23 | "1027252292": "AnyDesk",
24 | "-1028703177": "TP Link",
25 | "1029363268": "QSolve Management System",
26 | "-103091179": "Halon Security",
27 | "1032553729": "Elastix",
28 | "-1036244016": "XWeb",
29 | "1037387972": "Dlink Router",
30 | "-103848262": "Makhost",
31 | "1038500535": "D-Link (router/network)",
32 | "-1038557304": "Webmin",
33 | "1039044672": "Apache",
34 | "-1041180225": "QNAP NAS Virtualization Station",
35 | "104189364": "Vigor Router",
36 | "-104250814": "idfuse",
37 | "-1043355641": "eBuilder",
38 | "1045696447": "Sophos User Portal/VPN Portal",
39 | "1046701084": "iCanteen",
40 | "-10469226": "3CX Web",
41 | "1047213685": "Netgear (Network)",
42 | "-1049382096": "BrbOS",
43 | "-1050377603": "ThingsPro Gateway",
44 | "-1050786453": "Plesk",
45 | "105083909": "FireEye",
46 | "-1051063062": "Apache Archiva",
47 | "-1051205943": "Siemens Simatic",
48 | "1051648103": "Securepoint",
49 | "1053515370": "OfficeSpace",
50 | "-1054477011": "Leica Geosystems",
51 | "1056758035": "Webmin",
52 | "-1057103077": "CPT",
53 | "-1057698644": "Issabel",
54 | "1059329877": "Tecvoz",
55 | "1059461494": "Ecessa WAN Optimizer",
56 | "-1059717365": "Ebay",
57 | "-1060318941": "WayOS",
58 | "-1062191521": "VOS",
59 | "1064742722": "RabbitMQ",
60 | "-106646451": "WISPR (Airlan)",
61 | "-1067420240": "GraphQL",
62 | "1068026086": "ComfortClick",
63 | "-1068237086": "Etherpad",
64 | "106844876": "Revive Adserver",
65 | "107061220": "T-Mobile",
66 | "-1071169404": "Deluge Web UI",
67 | "1073075415": "Jaspersoft",
68 | "-1074357885": "MyCloud NAS",
69 | "1075305934": "IBM Lotus Domino Web Access",
70 | "1076320928": "XOffice",
71 | "1076833462": "Mailu",
72 | "1081719753": "D-Link (Network)",
73 | "-1082845244": "RabbitMQ Management",
74 | "108362015": "IMuse",
75 | "108411803": "Deluge Web UI",
76 | "-108457676": "QMatic",
77 | "-1085284672": "Wordpress",
78 | "1088281959": "RF-301K",
79 | "-1088664572": "Microbit",
80 | "1090061843": "Webtitan Cloud",
81 | "-1093172228": "truVision (NVR)",
82 | "-1093314638": "IBM iNotes",
83 | "1095915848": "Airwatch",
84 | "-1096293925": "ECO World UI",
85 | "-10974981": "Shinobi (CCTV)",
86 | "1098596251": "Fedora Server Edition",
87 | "1099097618": "Squidex",
88 | "-1101206929": "Bluemax",
89 | "1101614703": "UPS",
90 | "1102047973": "KPMG",
91 | "1103599349": "Untangle",
92 | "-1104274084": "eRad",
93 | "1104879639": "MandeUmZap",
94 | "-1105083093": "KeyCloak",
95 | "110768013": "Sapido router",
96 | "-1108647419": "SmartFoxServer",
97 | "-1109801483": "Seafile",
98 | "-1111841537": "Platform For Science",
99 | "-111232642": "starbeacon CMS",
100 | "-1115903764": "Pydio",
101 | "1117165781": "SimpleHelp (Remote Support)",
102 | "-1117549627": "Fastvue Reporter for FortiGate",
103 | "-1118274094": "Communigate",
104 | "1118684072": "Baidu",
105 | "-1119613926": "Bluehost",
106 | "1122883478": "Codiad",
107 | "1124727888": "Powered by Leapfunder",
108 | "-1124868062": "Netport Software (DSL)",
109 | "112509862": "i.LON",
110 | "1125166869": "KEMP Login Screen",
111 | "-1125259127": "Avigilon Web Access",
112 | "-1126048407": "ParentSchool SIS",
113 | "1126652438": "Cypress Configuration and Management",
114 | "1126835021": "InstaCart",
115 | "-112697680": "PostGraphile",
116 | "-1127895693": "Zuul",
117 | "-1128128488": "VMWare Access Gateway",
118 | "-1130575070": "WISE TIGER router",
119 | "-1131046522": "Dolibarr",
120 | "-1131689409": "yTM",
121 | "-1132465110": "NiFi server",
122 | "1135165421": "Ricoh",
123 | "1135750934": "Infinite Campus",
124 | "1136074368": "SchoolNet",
125 | "-1138074337": "LUM",
126 | "-1139576724": "WorkForce Telestaff Login",
127 | "1139788073": "Metasploit",
128 | "1142227528": "Aruba (Virtual Controller)",
129 | "-1142667323": "Tenderland",
130 | "1143877728": "Dremio",
131 | "1144925962": "Dlink Webcam",
132 | "1147858285": "Dell",
133 | "-1148190371": "OPNsense",
134 | "-1148627124": "Nagios XI",
135 | "1149842582": "Improbable.io",
136 | "-1151246177": "Servatica",
137 | "-1151675028": "ISP Manager (Web Hosting Panel)",
138 | "115295460": "Strider",
139 | "-1153873472": "Airwatch",
140 | "-1153950306": "Dell",
141 | "-1155883524": "Homebridge",
142 | "1156815778": "JBoss EAP 6",
143 | "1157789622": "Ubiquiti UNMS",
144 | "-1160966609": "Gitea",
145 | "1162358134": "ALLNET",
146 | "-1162630024": "Jumpserver",
147 | "-1162730477": "Vanderbilt SPC",
148 | "116323821": "Spring boot",
149 | "1163764264": "CentreStack",
150 | "1165640109": "Mizuho Global e-Banking",
151 | "1165838194": "ThinkPHP",
152 | "1166865883": "Haivision Makito",
153 | "1167359424": "Samsung",
154 | "1169183049": "BoaServer",
155 | "-1169314298": "INSTAR IP Cameras",
156 | "1170430551": "React App",
157 | "-1170501093": "phpLDAPadmin",
158 | "-1171707951": "Accellion File Transfer",
159 | "-1172436532": "SecureLink Enterprise Access",
160 | "1174526129": "OLT Web management interface",
161 | "1174841451": "Drupal",
162 | "1175383902": "Real 2D/3D",
163 | "1176554158": "Sauter moduWeb",
164 | "-1176564322": "HWg-STE",
165 | "1176619560": "Intelbras",
166 | "1177920756": "AVS electronics",
167 | "1178471380": "Foldr",
168 | "1179099333": "Youtube",
169 | "11794165": "Apollo",
170 | "1180765435": "OrientDB",
171 | "1182206475": "VMWare Horizon",
172 | "-1182250791": "Kodi Web Interface",
173 | "-1183519486": "EMail Marketing Service",
174 | "-1184167764": "DEVA Broadcast",
175 | "118652228": "ZF2 App",
176 | "1188424430": "KT\u0026C",
177 | "1188645141": "Huweishen",
178 | "-1188918488": "Fujitsu NAS",
179 | "-1189292869": "FlatPress",
180 | "-1189561879": "Linear eMerge",
181 | "1192261743": "E2open",
182 | "-1193783166": "HOT Box",
183 | "1194900831": "boost ai",
184 | "119532476": "Mahara ePortfolio system",
185 | "-1196651128": "NetGear Login",
186 | "119741608": "Teltonika",
187 | "1197632109": "Video Conferencing server for Enterprise",
188 | "-1197966750": "Gemalto",
189 | "1198579728": "DbGate",
190 | "12003995": "Walmart",
191 | "-1200737715": "Kibana",
192 | "-1202103423": "TeamSystem",
193 | "-1203021870": "Kubeflow",
194 | "-1205024243": "lwIP (A Lightweight TCP/IP stack)",
195 | "1205288142": "OpenVidu",
196 | "-120854511": "CUPS",
197 | "1211608009": "Openfire Admin Console",
198 | "-1212471026": "PBX in a flash",
199 | "-1214233731": "Wightman",
200 | "1215779410": "ControlID",
201 | "-1217002480": "AppDynamics",
202 | "-121875991": "Xen Orchestra",
203 | "1221759509": "Dlink Webcam",
204 | "1224108256": "CrownPeak",
205 | "1224439683": "Barracuda Networks",
206 | "1224994964": "Vodafone",
207 | "-1225484776": "Endian Firewall",
208 | "-1226343463": "SnapGear Management Console",
209 | "1227004061": "Assurant",
210 | "1227052603": "Alibaba Cloud (Block Page)",
211 | "1227152965": "Killing Floor Web Admin",
212 | "1228349756": "h5ai",
213 | "-1231308448": "Atlassian Crowd",
214 | "-1231681737": "Ghost (CMS)",
215 | "1232159009": "Apple",
216 | "1232596212": "OpenStack",
217 | "1232683746": "Citigold",
218 | "1233473326": "AmicaWEB - Combivox",
219 | "1234311970": "Onera",
220 | "1235070469": "Synology VPN Plus",
221 | "-1235192469": "Metasploit",
222 | "-1237480336": "Vue",
223 | "123821839": "Sangfor",
224 | "-1238307632": "Devline",
225 | "-1238837624": "Liquid Pixels",
226 | "1239721344": "Micro Focus Vibe",
227 | "-1240222446": "Zhejiang Uniview Technologies Co.",
228 | "-1240387895": "Unqork",
229 | "1240573703": "Roche Global Corporate Website",
230 | "1240618871": "Oracle Hospitality - Reporting and Analytics",
231 | "1241049726": "iomega NAS",
232 | "1241305867": "Enlighted Manage",
233 | "-124234705": "VoIPmonitor",
234 | "-1243674871": "AppNext",
235 | "1244636413": "cPanel Login",
236 | "-1244757483": "Kaspersky",
237 | "1245897666": "xWiki",
238 | "1248917303": "JupyterHub",
239 | "1249285083": "Ubiquiti Aircube",
240 | "-1249852061": "Microsoft Outlook",
241 | "-1250210868": "bticino",
242 | "-1250474341": "VMware Workspace",
243 | "-1250820636": "CP Plus",
244 | "1251810433": "Cafe24 (Korea)",
245 | "-1252041730": "Vue.js",
246 | "1253536875": "ZNC Web Frontend",
247 | "-1253943670": "HUMAX",
248 | "-1255347784": "AngularJS",
249 | "-1255454840": "Mailwatch",
250 | "-1255992602": "VMware Horizon",
251 | "-1258058404": "TileServer GL",
252 | "-1259700605": "Forcepoint Access forbidden",
253 | "-1261322577": "Aqua Enterprise",
254 | "1262005940": "Jamf Login",
255 | "-1262113920": "Git",
256 | "1263391110": "Web Directory",
257 | "-1264095219": "OpenBullet2",
258 | "1266034062": "Mailing lists service",
259 | "-1267819858": "KeyHelp (Keyweb AG)",
260 | "-1268095485": "VZPP Plesk",
261 | "-12700016": "Seafile",
262 | "-1272756243": "Citrix Login",
263 | "1273982002": "Mautic (Open Source Marketing Automation)",
264 | "1274078387": "TP-LINK (Network Device)",
265 | "-1274798165": "Sophos Mobile",
266 | "-1275148624": "Accrisoft",
267 | "-1275226814": "XAMPP",
268 | "-1277814690": "LaCie",
269 | "1278323681": "Gitlab",
270 | "-127886975": "Metasploit",
271 | "1280124172": "VK Services",
272 | "1280461262": "Braze",
273 | "1280907310": "Webmin",
274 | "1281253102": "Dahua Storm (DVR)",
275 | "1288385475": "Livebox",
276 | "1292731542": "IP-Symcon WebFront",
277 | "129457226": "Liferay Portal",
278 | "-1298108480": "Yii PHP Framework",
279 | "1298613326": "NEXIOS",
280 | "1302486561": "NetData",
281 | "1303364595": "ErpNext",
282 | "1307188176": "UniFi NVR: Software Portal",
283 | "1307375944": "Octoprint (3D printer)",
284 | "-1308101551": "Pegasus",
285 | "130960039": "EnergyTeam",
286 | "1312262473": "MicroEngine",
287 | "-1312806261": "Confluence",
288 | "-1313140993": "vBulletin",
289 | "-131381065": "eve - Emulated Virtual Environment",
290 | "-1314102215": "Verdaccio",
291 | "-1314405728": "Alexandria",
292 | "-1314943136": "Apache HTTP Server",
293 | "-1316071138": "TalkingData",
294 | "-1316507119": "Tieline",
295 | "-1317621215": "D-View 8",
296 | "1318124267": "Avigilon",
297 | "-1319025408": "Netgear",
298 | "-1319399032": "ispbox",
299 | "1319699698": "Form.io",
300 | "1319780356": "Biotime",
301 | "1323738809": "Nexus Repository Manager",
302 | "1325605650": "Overleaf",
303 | "133039858": "Libraesva ESG",
304 | "1332183546": "Sun Java System Application Server",
305 | "-1332828203": "Network Storage Server",
306 | "1333537166": "Alfresco",
307 | "-1334408578": "Solar-Log",
308 | "1334507537": "BroadWave",
309 | "-1334617766": "Jitsi Meet",
310 | "-1335251146": "Totolink",
311 | "1335824931": "AVer",
312 | "1335852856": "RedCap",
313 | "-1336042616": "S2 Netbox Login",
314 | "-1338133217": "Riverbed",
315 | "-1343070146": "Intelbras SA",
316 | "-134375033": "Plesk",
317 | "-1343761772": "SAVPizzaDoor",
318 | "-134458680": "LifeSize UVC Video Center",
319 | "-1344736688": "Phicomm",
320 | "1346408936": "PowerController",
321 | "-1346447358": "TilginAB (HomeGateway)",
322 | "1347937389": "SAP Conversational AI",
323 | "-1348984223": "Jaeger UI",
324 | "1349199107": "BlueBean",
325 | "-1350437236": "WiFi Login",
326 | "-1350587650": "nxFilter",
327 | "1351214488": "Dead End",
328 | "-1351901211": "Luma Surveillance",
329 | "-1352019987": "Viprinet",
330 | "-1353325588": "Remote UI Portal",
331 | "-1354933624": "Dlink Webcam",
332 | "-1355675073": "RadiusManager",
333 | "1356662359": "Outlook Web Application",
334 | "1356900853": "Winmail Server",
335 | "135741046": "FG Forrest",
336 | "1358855492": "PrivateBin",
337 | "-1360098475": "WorkWave",
338 | "-1364880648": "InnoMedia",
339 | "1366863347": "Greenshift",
340 | "1367373012": "DolphinPHP",
341 | "1367958180": "litemall",
342 | "1370528867": "Yahoo",
343 | "1370990243": "Trend Micro Deep Security Manager",
344 | "-137295400": "NETGEAR ReadyNAS",
345 | "-1373888521": "ErpNext",
346 | "-1374555452": "Baidu",
347 | "1375401192": "VICIdial",
348 | "1375487984": "Web based Configurator",
349 | "-1375671634": "The Lounge",
350 | "-1376750468": "Greatek",
351 | "1376888327": "Ecole",
352 | "-1378182799": "Archivematica",
353 | "-1379982221": "Atlassian - Bamboo",
354 | "1380259394": "BBC",
355 | "1380908726": "jeecg-boot",
356 | "1381079566": "EVSE Web Interface",
357 | "-1381126564": "Global Management System",
358 | "1382324298": "Apple",
359 | "-1385513933": "WangShen",
360 | "-1387041300": "PINC Solutions",
361 | "-1387795012": "PayKeeper",
362 | "1390393078": "Optergy",
363 | "-1393435578": "Mediatrix",
364 | "1395038954": "Phenix",
365 | "-1395400951": "Huawei - ADSL/Router",
366 | "1398055326": "WSO2 Management Console",
367 | "1398098445": "ownCloud",
368 | "-1399433489": "Prometheus Server",
369 | "1403071546": "Pearson",
370 | "1405460984": "pfSense",
371 | "1407809463": "Dolibarr",
372 | "1410071322": "SmarterTrack",
373 | "1410610129": "Supermicro Intelligent Management (IPMI)",
374 | "-1413670889": "Ansible AWX",
375 | "-1414475558": "Microsoft IIS",
376 | "-1414548363": "ThinVNC",
377 | "-1416401235": "Gigapod",
378 | "1417992821": "Lynx System",
379 | "-1418620977": "Wekan",
380 | "142044466": "The Internet Archive",
381 | "1422770566": "Endian Firewall",
382 | "142313513": "Facebook",
383 | "1423291318": "Smart PABX",
384 | "1423930703": "lighttpd",
385 | "-1424036600": "Portainer",
386 | "1424295654": "Icecast Streaming Media Server",
387 | "-1424697070": "SmartAdServer",
388 | "1427774978": "Home motion by Somfy",
389 | "1427976651": "ZTE (Network)",
390 | "-1432009195": "Elastix",
391 | "1433417005": "Salesforce",
392 | "1435180442": "HOTSPLOTS Router",
393 | "-1435467015": "CoreLogic",
394 | "1436966696": "Barracuda",
395 | "-1437701105": "XAMPP",
396 | "-1439222863": "Ivanti",
397 | "-1441715561": "Vodafone",
398 | "-1441956789": "Tableau",
399 | "1442699674": "NET",
400 | "-1442789563": "Nuxt JS",
401 | "1443361300": "Poweradmin",
402 | "-1445519482": "Kaseya",
403 | "1446490141": "MetInfo",
404 | "1446754233": "Apache",
405 | "-1446794564": "Ubiquiti Login Portals",
406 | "-1450898105": "TELE2",
407 | "-1451027808": "Intelbras",
408 | "1451166122": "ExtremeXOS ScreenPlay",
409 | "-1451366515": "DuckDuckGo",
410 | "-1452159623": "Tecvoz",
411 | "145291791": "Bump50:50",
412 | "1453890729": "Webmin",
413 | "-1457536113": "CradlePoint",
414 | "-1457628171": "Postmark",
415 | "-1461493576": "tdssuite",
416 | "1462981117": "Cyberoam",
417 | "1464851260": "MCMS",
418 | "-1465226128": "Atriuum",
419 | "-1465479343": "DNN (CMS)",
420 | "-1465760059": "RaspAP",
421 | "-146638980": "SharePoint",
422 | "-1466785234": "Dahua",
423 | "1466912879": "CradlePoint Technology (Router)",
424 | "1467395679": "Ligowave (network)",
425 | "-1469020453": "Britecore",
426 | "1469328760": "PMB",
427 | "-1471633460": "YY",
428 | "1472757244": "gov.uk",
429 | "-1472951746": "MI router",
430 | "1473157813": "CyberHound Appliance",
431 | "1474516533": "MagicMail Server",
432 | "-1474875778": "GLPI",
433 | "-1475308062": "NEBERO Login",
434 | "-1476120239": "Dreamfactory",
435 | "1476335317": "FireEye",
436 | "-1476384993": "Adobe Connect Central",
437 | "-1477373218": "Rusonyx",
438 | "-1477563858": "Arris",
439 | "-1477694668": "emessage",
440 | "-147798235": "Vodafone",
441 | "-1478010471": "wiki.js",
442 | "1479202414": "Arcadyan o2 box (Network)",
443 | "1479449210": "UniFi Controller",
444 | "1482591128": "Plone",
445 | "1483097076": "SyncThru Web Service (Printers)",
446 | "1484947000": "GoAnywhere MFT",
447 | "1485257654": "SonarQube",
448 | "1486876794": "ip3sec",
449 | "1487164831": "Metabase",
450 | "1487209721": "Kerio Clientless SSL-VPN",
451 | "-1489194754": "FatPipe",
452 | "-1489682310": "ICON Time system",
453 | "1490343308": "MK-AUTH",
454 | "-1491070374": "iMM Control Center",
455 | "1491281975": "PragmaRX",
456 | "-1492653156": "Speco technologies",
457 | "-1492966240": "RADIX",
458 | "149371702": "Synology DiskStation",
459 | "149496700": "Wisenet",
460 | "-1495061773": "Metalink",
461 | "1495420903": "Arris",
462 | "1495853641": "RedHat",
463 | "1496254733": "JBoss",
464 | "1496849154": "Baidu",
465 | "-1498185948": "Apple",
466 | "-1499488123": "Tainy E/HMOD",
467 | "-1499940355": "Rukovoditel",
468 | "1500512504": "leanote",
469 | "1500747026": "Powerschool",
470 | "1501109148": "Silver Peak",
471 | "1502215759": "Mirth",
472 | "1502482995": "Indeed",
473 | "1502815117": "pgAdmin",
474 | "1503188865": "FuelPHP",
475 | "-1505158120": "Jedox",
476 | "-1507094812": "MLflow",
477 | "-1507567067": "Baidu (IP error page)",
478 | "-1507821392": "Mastodon server",
479 | "1510327675": "Zerto",
480 | "1510423261": "maxView Storage Manager",
481 | "151225607": "Webif^2",
482 | "-1516177449": "SAP",
483 | "1517005673": "Redmine",
484 | "-1517793453": "CentOS",
485 | "-1521640213": "HotelDruid",
486 | "-1522253755": "Indico",
487 | "1522616207": "CentOS",
488 | "1523210179": "Gigaset",
489 | "1523284537": "Yahoo!",
490 | "1526179599": "Foreman",
491 | "1526980381": "Intraweb",
492 | "1528355650": "Pinterest",
493 | "-1528414776": "Rumpus",
494 | "1529113957": "Milestone Web Client",
495 | "1529794015": "Manaba",
496 | "1530688358": "Argon Technologies",
497 | "-1532282299": "IP Camera",
498 | "1537743656": "DropBox",
499 | "1540037626": "VKontakte",
500 | "1540323611": "Zentyal",
501 | "-1540609146": "KeystoneJS",
502 | "1540720428": "SysAid",
503 | "1544230796": "cPanel Login",
504 | "1544596682": "TelevisGo",
505 | "-1544605732": "Amazon",
506 | "1545970007": "Magnolia",
507 | "-1546574541": "Sonatype Nexus Repository Manager",
508 | "-1547576879": "Saia Burgess Controls - PCD",
509 | "-1549154783": "Bank of America",
510 | "1552601947": "FlexNet",
511 | "1552860581": "Elastic (Database)",
512 | "1553502622": "A10 Networks",
513 | "1555083561": "Linux",
514 | "-155518807": "ilsonline",
515 | "-1561873722": "Nginx",
516 | "1561951501": "Zyxel",
517 | "156312019": "Technicolor / Thomson Speedtouch (Network / ADSL)",
518 | "1563218345": "Postfix Admin",
519 | "-1564279764": "SuperHub 2",
520 | "1565357565": "wallabag",
521 | "1565485509": "Amazon AWS",
522 | "-1566222852": "Nice CXone",
523 | "-1566499661": "NSFocus",
524 | "1566659252": "KBlue",
525 | "1568516651": "Acronis",
526 | "-1569190618": "TransIP",
527 | "-1571472432": "Sierra Wireless Ace Manager (Airlink)",
528 | "-157270335": "Barracuda Firewall",
529 | "1574384512": "Storybook",
530 | "-1576282848": "GoCD",
531 | "-1577363222": "AMP - Application Management Panel",
532 | "-1580354544": "MailStore Web Access",
533 | "-1581907337": "Atlassian - JIRA",
534 | "1582430156": "Superset",
535 | "15831193": "WatchGuard",
536 | "1583275852": "Spectranet",
537 | "-1584893473": "docker-swarm-visualizer",
538 | "1585145626": "netdata dashboard",
539 | "-1587809317": "Strapi app",
540 | "-1588746893": "CommuniGate",
541 | "-1589842876": "Deluge Web UI",
542 | "1591050260": "Aipo",
543 | "1591770950": "ValidMail",
544 | "-1592540846": "i-VU Router",
545 | "-1593402357": "AT\u0026T",
546 | "-1593651747": "Blackboard",
547 | "1594377337": "Technicolor",
548 | "1597827316": "PUSR device",
549 | "1601194732": "Sophos Cyberoam (appliance)",
550 | "1603223646": "Comcast Business",
551 | "1604149042": "Synology",
552 | "-160425702": "Medallia",
553 | "1604363273": "AeroHive Networks",
554 | "160541240": "Transparency Analysis Notification Solution",
555 | "-160596078": "RSSBUS",
556 | "-1606065523": "Cachet",
557 | "-1606103083": "T-Mobile",
558 | "160634455": "O2 easy setup",
559 | "-1607644090": "Bitnami",
560 | "-1608064257": "Dell",
561 | "-1608282972": "VMS Broadcast Server",
562 | "-1610980956": "Drupal",
563 | "1611729805": "Elastic (Database)",
564 | "-1612496354": "Teltonika",
565 | "-1614186944": "Kelley Blue Book",
566 | "-1615532813": "Tautulli",
567 | "-1616115760": "ownCloud",
568 | "-1616143106": "AXIS (network cameras)",
569 | "16202868": "Universal Devices (UD)",
570 | "-1620734764": "Velocix Asset Portal",
571 | "1620794131": "SocketCluster",
572 | "1623760745": "bee-queue/arena",
573 | "162418931": "Absorb",
574 | "1627330242": "Joomla",
575 | "-1629133697": "IIS Windows Server",
576 | "1629518721": "macOS Server (Apple)",
577 | "-1630354993": "Proofpoint",
578 | "1632680057": "LiveConfig",
579 | "1632780968": "Université Toulouse 1 Capitole",
580 | "1635147929": "Criteo Corp",
581 | "163538942": "ARC",
582 | "-1637180585": "Arlo",
583 | "-1637198354": "FileMaker",
584 | "-163806709": "AlphaNet",
585 | "-1638258999": "Restreamer",
586 | "163842882": "Cisco Meraki",
587 | "1638963529": "Observium",
588 | "-1640178715": "Reddit",
589 | "1640914316": "Araknis",
590 | "-1642012180": "MyOmBox",
591 | "-1642532491": "Atlassian - Confluence",
592 | "1642701741": "Vmware Secure File Transfer",
593 | "164535647": "Bipiemme Technology",
594 | "1648531157": "InfiNet Wireless | WANFleX (Network)",
595 | "-1649762785": "webflow",
596 | "-165021467": "Ambari",
597 | "-1654229048": "Vivotek (Camera)",
598 | "-1655234758": "WSO2",
599 | "-165631681": "Gibbon",
600 | "-1656662001": "iServer",
601 | "-1656695885": "iomega NAS",
602 | "165976831": "Vodafone (Technicolor)",
603 | "-1660707210": "Vinyl",
604 | "-1661331374": "Dedicated Micros",
605 | "-166151761": "Abilis (Network/Automation)",
606 | "-1661672841": "Fexa",
607 | "-1661746099": "netDocuments",
608 | "1662176488": "PV Webserver",
609 | "1663064917": "MyChart",
610 | "-1664635936": "Telnet",
611 | "-1666561833": "Wildfly",
612 | "-1667378049": "Chamilo",
613 | "1668183286": "Kibana",
614 | "1668385882": "Avigilon",
615 | "1668745903": "Piwik",
616 | "1668832054": "Adform",
617 | "1669535914": "SoftGuard Desktop Security Suite",
618 | "1670778556": "IPCop",
619 | "-1672096080": "Cargo Site Builder",
620 | "1673203892": "Oracle",
621 | "-1675031883": "PhalApi",
622 | "1675395218": "Controllr",
623 | "-167656799": "Drupal",
624 | "-167663731": "Bitwarden",
625 | "1676997917": "OpenEdx",
626 | "-1677255344": "UBNT Router UI",
627 | "1678170702": "Asustor",
628 | "-1678298769": "Kerio Connect WebMail",
629 | "-1679308822": "PostIt-Lite",
630 | "-1680052984": "Web2Py",
631 | "-1680106844": "Wix",
632 | "-1680741662": "MediaSpace",
633 | "-1684189219": "GrandStream Device",
634 | "1684500512": "Baidu",
635 | "1684574358": "InVid",
636 | "168613227": "SAP",
637 | "16866410": "SonicWall",
638 | "168728537": "Thinfinity",
639 | "-1687285536": "Zammad",
640 | "1687568805": "UniFi",
641 | "-1688698891": "SpamExperts",
642 | "1689753480": "Matomo",
643 | "-1692183672": "Veeva",
644 | "-1692862215": "Canon Remote UI",
645 | "1693580324": "EFAK",
646 | "1693977300": "ampps",
647 | "-1697334194": "Univention Portal",
648 | "-1702393021": "mofinetwork",
649 | "-1702769256": "Bosch Security Systems (Camera)",
650 | "-1702798999": "1A First Alternative",
651 | "1703788174": "D-Link (router/network)",
652 | "1708197458": "Nordex Portal",
653 | "1709607771": "Avycon",
654 | "-1710631084": "Askey Cable Modem",
655 | "-1711491868": "Domino",
656 | "1714492006": "BugZilla",
657 | "-1721140132": "MSNSwitch",
658 | "1722224755": "000webhost",
659 | "1722331405": "Simian",
660 | "-1722446604": "Nodeworx",
661 | "-1723752240": "Microhard Systems",
662 | "-1723806538": "Binom",
663 | "1726027799": "IBM Server",
664 | "-1727542795": "Honeywell",
665 | "1729596692": "CloudFlow",
666 | "-1730094997": "Yahoo!",
667 | "1732786188": "Apache",
668 | "-1734508635": "U-Mail",
669 | "-1734573358": "TC-Group",
670 | "1734609466": "JustHost",
671 | "1735248917": "Ansible",
672 | "1735289686": "Whatsapp",
673 | "-173691695": "Infinitum",
674 | "-1738184811": "cacaoweb",
675 | "-1738727418": "KeepItSafe Management Console",
676 | "1740006758": "LiveZilla",
677 | "-1740432731": "Cloud9",
678 | "-1743260071": "Ghost",
679 | "174377944": "PerlDancer",
680 | "1745085988": "Terraform",
681 | "-1745552996": "Arbor Networks",
682 | "1747323616": "Linux",
683 | "-1748763891": "INSTAR Full-HD IP-Camera",
684 | "1749354953": "Vantara Pentaho Business Analytics Server",
685 | "-175177211": "VMware vCenter Converter Standalone",
686 | "175178334": "Nas4free",
687 | "1752776796": "OpenAI",
688 | "-175283071": "Dell",
689 | "1756605828": "WebCTRL",
690 | "1757638479": "Bossgoo",
691 | "-1758263820": "Verizon",
692 | "1761743076": "Comtime Router",
693 | "-1763210479": "Redstor",
694 | "-1763285821": "Vadacom",
695 | "1763297019": "Debian",
696 | "176427349": "UniBox",
697 | "-1765447687": "WatchNet",
698 | "1766699363": "Apache ActiveMQ",
699 | "1768726119": "Outlook Web Application",
700 | "-1768736691": "Flat UI",
701 | "1770799630": "bintec elmeg",
702 | "1772087922": "ASP.net",
703 | "1772648560": "FileCloud",
704 | "-1774771662": "OpenEDX",
705 | "-1775553655": "Unified Management Console (Polycom)",
706 | "1776643422": "VASCO Data Security",
707 | "-1776962843": "SolarWinds",
708 | "1777351344": "SOYAL",
709 | "1778371611": "LimeSurvey",
710 | "-1779611449": "Alienvault",
711 | "1781653957": "LimeSurvey",
712 | "1782271534": "truVision NVR (interlogix)",
713 | "-1785167104": "AccessNetworks",
714 | "1786554776": "Jupyter",
715 | "1786752597": "wdCP cloud host management system",
716 | "-178685903": "Yasni",
717 | "-1788112745": "PowerMTA monitoring",
718 | "1789284724": "Jonas Club Software",
719 | "1792417660": "Oracle Database Cloud Service",
720 | "-1797138069": "Cacti",
721 | "-1799495374": "OpenHAB",
722 | "1802374283": "LiquidPixels",
723 | "-1802629932": "Securifi",
724 | "1804194887": "Winet Voicetec Solutions",
725 | "1807116994": "Algorab",
726 | "-1807411396": "Skype",
727 | "-1808902844": "FactoryTalk ViewPoint",
728 | "-1810847295": "Sangfor",
729 | "-1814564704": "Hyperledger Explorer",
730 | "-181463215": "FireBrick",
731 | "1814833573": "Sonarr",
732 | "-1814887000": "Docker",
733 | "-1815453503": "Hexnode",
734 | "-1817434995": "WeChat",
735 | "1818828262": "TP-Link",
736 | "1821549811": "(Blank) iSpy",
737 | "1821570264": "SaDPe Online",
738 | "1822002133": "AMH",
739 | "-1822098181": "Checkpoint (Gaia)",
740 | "-182423204": "netdata dashboard",
741 | "-1826044321": "DPTech",
742 | "-1828108081": "nanominer",
743 | "1828614783": "Dynatrace",
744 | "1828756398": "Go Anywhere Web Client",
745 | "-1829534120": "Hewlett Packard",
746 | "1830651843": "Reg.ru",
747 | "-1831547740": "Twitter",
748 | "-183163807": "Ace",
749 | "183198303": "NAKIVO Backup\u0026Replication",
750 | "-1834435530": "Ubuntu",
751 | "1835479497": "Technicolor Gateway",
752 | "1836828108": "OpenProject",
753 | "1838417872": "Freebox OS",
754 | "-1839807129": "Motorola",
755 | "1841044852": "WX",
756 | "1842351293": "TP-Link (Network Device)",
757 | "1843534472": "CC Online",
758 | "-1844173284": "Sohu",
759 | "-1844393179": "Nessus",
760 | "-1845730184": "ResWare",
761 | "-1847069521": "LILIN",
762 | "184809389": "Arvixe",
763 | "-1848649480": "OATI",
764 | "1848946384": "GitHub",
765 | "1849654430": "Teldat",
766 | "-1850681776": "Gargoyle Router Management Utility",
767 | "-1851491385": "Angular",
768 | "1853406396": "JUCI",
769 | "-1853769969": "MicroFocus Filr",
770 | "1858779064": "Amped Wireless",
771 | "1858943950": "ProcessMaker",
772 | "1859187867": "SMA Solar Technology",
773 | "1859950336": "GassAutomat",
774 | "1862132268": "Gargoyle Router Management Utility",
775 | "-1863663974": "Airwatch",
776 | "-1865603240": "HTML Sitemap",
777 | "1866559839": "Guardicore",
778 | "-1868605258": "IBM TRIRIGA",
779 | "-186961397": "Apache Kylin",
780 | "-1872029577": "Cardinal Health",
781 | "-1874556000": "Nuxt.js + Vue",
782 | "-1876148433": "ePages",
783 | "1876585825": "ALIBI NVR",
784 | "1877797890": "Eltex (Router)",
785 | "1878555718": "oVirt Engine",
786 | "-1878841207": "audiocodes",
787 | "-1883619133": "LoopBack",
788 | "-1884368121": "Konica Minolta",
789 | "1884840369": "Avaya",
790 | "-1886993228": "Zope",
791 | "-1889500183": "qBittorrent Web UI",
792 | "1891804387": "Nokia",
793 | "1895360511": "VMware Horizon",
794 | "1895809524": "Web Help Desk",
795 | "1896727737": "Endgame",
796 | "-1897829998": "D-Link (camera)",
797 | "-1898583197": "OpenVZ",
798 | "1901388980": "ZyXEL",
799 | "-1907337290": "Priority ERP",
800 | "1907525032": "Piwik",
801 | "1908194265": "Pakedge",
802 | "1910316737": "Apache HTTP Server Test Page",
803 | "1911253822": "UPC Ceska Republica (Network)",
804 | "-1911513273": "Dovado Router",
805 | "1912067085": "Vas Hosting",
806 | "-1912577989": "Hewlett Packard",
807 | "1913538826": "Material Dashboard",
808 | "1914658187": "CloudFlare",
809 | "191654058": "Wordpress Under Construction Icon",
810 | "1917028407": "Vue.js",
811 | "1917437143": "ClearSwift",
812 | "1922032523": "NEC WebPro",
813 | "-1922044295": "Mitel Networks (MiCollab End User Portal)",
814 | "1922730879": "UpSource",
815 | "-1923037106": "Looker",
816 | "1923124308": "Magento",
817 | "192500777": "rediff",
818 | "-1926484046": "Sangfor",
819 | "1926757774": "TRENDnet",
820 | "-1929384416": "FileCloud",
821 | "-1929912510": "NETASQ - Secure / Stormshield",
822 | "-1930062189": "GoFlex Home Home Server",
823 | "1931791000": "SpiderOak",
824 | "-1932631093": "Tasitech",
825 | "1932966618": "Parsoid",
826 | "1933407199": "Moodle",
827 | "-1933493443": "Residential Gateway",
828 | "1933971431": "Passbolt",
829 | "-1935525788": "SmarterMail",
830 | "-1936286083": "Manhattan Active",
831 | "-1936961900": "Spacewalk",
832 | "1937209448": "Docker",
833 | "1937353549": "MSP N-central Remote Monitoring",
834 | "1938350499": "Domotz",
835 | "-1939892142": "SABnzbd",
836 | "-1940372141": "Mitel Networks",
837 | "-1940628871": "X-point",
838 | "1940967059": "ClarkConnect Enterprise Edition",
839 | "1941381095": "openWRT Luci",
840 | "1941681276": "Amazon",
841 | "-1944119648": "TeamCity",
842 | "-194439630": "Avtech IP Surveillance (Camera)",
843 | "-1944920072": "Network Optix",
844 | "1947845994": "CTFd",
845 | "-194791768": "AfterLogic Webmail",
846 | "-1949588835": "gov.uk",
847 | "-1950415971": "Joomla",
848 | "1953726032": "Metabase",
849 | "1954075067": "Centaur",
850 | "1954835352": "Vesta Hosting Control Panel",
851 | "-195508437": "iPECS",
852 | "-1955111623": "Moodys Analytics",
853 | "-1955339917": "Workday",
854 | "1956710267": "ABUS",
855 | "-1961046099": "Dgraph Ratel",
856 | "-1961104913": "SOGo",
857 | "-1962284560": "Adobe Connect",
858 | "-1964089279": "BARIX",
859 | "-1964821744": "mdex.de",
860 | "1966075700": "Kayako",
861 | "1966198264": "OpenERP (now known as Odoo)",
862 | "-1966432092": "Nessus",
863 | "1968236071": "Medidata Rave",
864 | "1969934080": "ShowDoc",
865 | "1969970750": "Gitea",
866 | "-1970367401": "VidyoDesktop",
867 | "-1973343228": "ComAp",
868 | "1973665246": "Entrolink",
869 | "1973799754": "IONOS",
870 | "1975413433": "Sunny WebBox",
871 | "-1975779926": "Ombi",
872 | "-1976018368": "Barracuda SSL VPN",
873 | "1976912833": "DHIS2",
874 | "-1979589988": "Teradek Admin Console",
875 | "-198481018": "Device42",
876 | "1985721423": "WorldClient for Mdaemon",
877 | "-1986297913": "antMan",
878 | "-1987026093": "Mobotix webcam",
879 | "-1987515689": "Nuxt.js web Framework",
880 | "-1987532097": "MatrixCare EHR (electronic healthcare record)",
881 | "1987639534": "MerlinOne Digital Asset company",
882 | "1991136554": "Instagram",
883 | "1991562061": "Niagara Web Server / Tridium",
884 | "-1991844902": "NextGen.Net",
885 | "1993518473": "cPanel Login",
886 | "-1996576874": "IgniteNet",
887 | "199682422": "Thulium",
888 | "-1998633262": "infobox.ru",
889 | "1999746265": "ispCP Omega Virtual Hosting Control System",
890 | "2004732863": "Datto, Inc.",
891 | "2004848782": "Urchin 5",
892 | "-2006308185": "OTRS (Open Ticket Request System)",
893 | "2006716043": "Intelbras SA",
894 | "2006735094": "Axigen",
895 | "2007650109": "Gofrugal",
896 | "-2009722838": "React",
897 | "-2010570651": "Giam sat",
898 | "-2012355198": "SonicWALL",
899 | "-2013156129": "Debian",
900 | "2016727121": "Huginn web agents console",
901 | "2017541283": "Proxmox Login Page",
902 | "-2017596142": "NocoDB",
903 | "2018290563": "SEX5性屋娱乐 Servers",
904 | "2019488876": "Dahua Storm (IP Camera)",
905 | "2021342287": "Futura Exchange",
906 | "-2023266783": "Matomo",
907 | "-2024949122": "Liferay",
908 | "2027028811": "Mantis",
909 | "2029529270": "Pentaho",
910 | "-2031183903": "D-Link (Network)",
911 | "-2032163853": "Jorani",
912 | "2032487957": "McMyAdmin",
913 | "-2032679519": "UserTesting Recorder",
914 | "2033037722": "AVIWEST - StreamHub",
915 | "203612613": "Request Tracker - Login",
916 | "2038454909": "Open Data Kit 2.0 Server",
917 | "-2039579287": "Oracle Secure Global Desktop",
918 | "2041528389": "CP Plus Orange",
919 | "-2042679530": "Alibaba",
920 | "-2042821498": "Player Analytics",
921 | "-2044079375": "Sun Java System Web Server",
922 | "2045611526": "Nuxt.js",
923 | "2047138954": "Hikvision Web Client",
924 | "2047156994": "Linksys",
925 | "-2048981507": "RStudio",
926 | "-2049046500": "SWF850 WEB",
927 | "2049082371": "LG Network Storage",
928 | "-2051649833": "Inmotion Hosting",
929 | "-2052468252": "FreeRDP WebConnect",
930 | "2053280074": "Open WebMail",
931 | "-2054889066": "Sentora",
932 | "2055322029": "Realtek",
933 | "2056442365": "Kanboard",
934 | "-2056503929": "iomega NAS",
935 | "2057414495": "Plex Export",
936 | "-2057558656": "Microsoft",
937 | "-2057590733": "TYPO3",
938 | "2058391758": "Debian/Ubuntu Portal",
939 | "2059618623": "HP iLO",
940 | "2059893391": "Green-Computing",
941 | "2061303838": "Xibo Digital Signage",
942 | "2061800448": "Mitel",
943 | "-2062525755": "CUPS",
944 | "-2062596654": "VeloCloud",
945 | "-2063036701": "Linksys Smart Wi-Fi",
946 | "2063428236": "Sentry",
947 | "-2065461083": "ZesleCP",
948 | "2065589381": "Virtualizor",
949 | "-2065594952": "Tuleap",
950 | "2066412882": "PingFederate",
951 | "2067267180": "OpenProject",
952 | "-2067519629": "TPlus",
953 | "2068154487": "Digium (Switchvox)",
954 | "2068657956": "OutSystems",
955 | "2068826621": "PostgreSQL",
956 | "-2069014068": "IBM Security Access manager for Web",
957 | "-2069844696": "Ruckus Wireless",
958 | "2071993228": "Nomadix Access Gateway",
959 | "2072198544": "Ferozo Panel",
960 | "-2076244488": "Vigor Login",
961 | "-2083667632": "RAP",
962 | "-2084578694": "FatPipe",
963 | "-2084151106": "PHPIPAM",
964 | "2086228042": "MobileIron",
965 | "2086820847": "MailPlug",
966 | "2087256469": "IPCAM",
967 | "-2088877437": "IMail Web Client",
968 | "2091258163": "Microsoft Lync",
969 | "2096818813": "Ghost CMS",
970 | "-2098066288": "GenieACS",
971 | "2098602123": "tn4 Gateway",
972 | "2099342476": "PKP (OpenJournalSystems) Public Knowledge Project",
973 | "2109473187": "Huawei - Claro",
974 | "2113497004": "WiJungle",
975 | "-2116540786": "bet365",
976 | "-2117390767": "Spiceworks (panel)",
977 | "2119159060": "GMail",
978 | "2121539357": "FireEye",
979 | "2124459909": "HFS (HTTP File Server)",
980 | "-2125083197": "Windows Azure",
981 | "2127152956": "MailWizz",
982 | "2128230701": "Chainpoint",
983 | "213144638": "Proxmox Virtual Environment",
984 | "-2133341160": "WordPress Org",
985 | "2134367771": "TimeKeeper",
986 | "-2138018199": "Secure Data Transfer by Maytech",
987 | "-2138771289": "Technicolor",
988 | "-2140379067": "RoundCube Webmail",
989 | "2141724739": "Juniper Device Manager",
990 | "-2144363468": "HP Printer / Server",
991 | "2144485375": "IceWarp",
992 | "-2145085239": "Tenda Web Master",
993 | "2146763496": "Mailcow",
994 | "-219752612": "FRITZ!Box",
995 | "-222497010": "JoyRun",
996 | "224536051": "Shenzhen coship electronics co.",
997 | "225632504": "Rocket Chat",
998 | "-22659015": "HP Device Status",
999 | "229300816": "ArcGIS",
1000 | "-231109625": "DVWA - Damn Vulnerable Web Application",
1001 | "-232968088": "Azure Devops Server",
1002 | "234963778": "Match Networks",
1003 | "-235701012": "Cnservers LLC",
1004 | "239966418": "Microsoft Outlook",
1005 | "240136437": "Seagate Technology (NAS)",
1006 | "240606739": "FireEye",
1007 | "-244067125": "CONTEC",
1008 | "245977566": "POLYEDRO",
1009 | "246145559": "Parse",
1010 | "248673607": "Concentrator",
1011 | "250294225": "IPCorder",
1012 | "250762888": "BigBlueButton",
1013 | "251106693": "GPON Home Gateway",
1014 | "252728887": "DD WRT (DD-WRT milli_httpd)",
1015 | "253035985": "infor",
1016 | "-25418041": "Milestone XProtect Web Client",
1017 | "-254193850": "React",
1018 | "255892555": "wdCP cloud host management system",
1019 | "-25625631": "Nasuni Filer",
1020 | "-256828986": "iDirect Canada (Network Management)",
1021 | "260894120": "Webmail",
1022 | "-262766611": "LS2 PAC",
1023 | "264161619": "Vitek",
1024 | "-266008933": "SAP Netweaver",
1025 | "-267431135": "Kibana",
1026 | "-268676052": "CAE",
1027 | "270320124": "Lyris ListManager",
1028 | "-271448102": "iKuai Networks",
1029 | "-271968289": "TP-Link",
1030 | "-273775086": "Prancer",
1031 | "27529899": "ThecusOS",
1032 | "-276311150": "CerberusFTP",
1033 | "-276759139": "Chef Automate",
1034 | "-277464596": "AEM Screens",
1035 | "-278788671": "tilgin",
1036 | "281559989": "Huawei",
1037 | "283740897": "Intelbras SA",
1038 | "-286018424": "TitanHQ",
1039 | "-288432578": "LingFeng",
1040 | "-288432582": "Node-RED",
1041 | "29056450": "Geneko",
1042 | "-291579889": "WS server test page",
1043 | "296518274": "Ecolane",
1044 | "-297069493": "Apache Tomcat",
1045 | "-297076130": "AudioCodes",
1046 | "-297780858": "Plunet BusinessManager",
1047 | "298891748": "Parallels Conflixx",
1048 | "-299287097": "Cisco Router",
1049 | "-299324825": "Lupus Electronics XT",
1050 | "-299342343": "Organizr V2",
1051 | "304392005": "Vodien Internet Solutions",
1052 | "-305179312": "Atlassian - Confluence",
1053 | "305412257": "Eventum",
1054 | "-305424081": "Graylog",
1055 | "-305613147": "ABB Optimax",
1056 | "309020573": "PayPal",
1057 | "314969666": "Amazon AWS",
1058 | "-318947884": "Palo Alto Networks",
1059 | "-318968846": "ngX-Rocket",
1060 | "31972968": "Dlink Webcam",
1061 | "321591353": "Node-RED",
1062 | "321909464": "Airwatch",
1063 | "322531336": "iomega NAS",
1064 | "-325082670": "LANCOM Systems",
1065 | "-329747115": "C-Lodop",
1066 | "-329992939": "SmartServer 2.2",
1067 | "331870709": "iomega NAS",
1068 | "-332324409": "STARFACE VoIP Software",
1069 | "-333791179": "Adobe Campaign Classic",
1070 | "-335153896": "Traccar GPS tracking",
1071 | "-335242539": "F5 Big-IP",
1072 | "-336242473": "Siemens OZW772",
1073 | "-342262483": "Combivox",
1074 | "-35107086": "WorldClient for Mdaemon",
1075 | "-355305208": "D-Link (camera)",
1076 | "-359621743": "Intelbras Wireless",
1077 | "-360566773": "ARRIS (Network)",
1078 | "362091310": "MobileIron",
1079 | "363324987": "Dell SonicWALL",
1080 | "-365065924": "Milesight",
1081 | "366524387": "Joomla",
1082 | "-368490461": "Entronix Energy Management Platform",
1083 | "-373674173": "Digital Keystone (DK)",
1084 | "-374133142": "Flower",
1085 | "-374235895": "Ossia (Provision SR) | Webcam/IP Camera",
1086 | "-375623619": "bintec elmeg",
1087 | "381100274": "Moxapass ioLogik Remote Ethernet I/O Server",
1088 | "-38580010": "Magento",
1089 | "-386189083": "aaPanel",
1090 | "-38705358": "Reolink",
1091 | "-393788031": "Flussonic (Video Streaming)",
1092 | "396533629": "OpenVPN",
1093 | "-398568076": "Wikipedia",
1094 | "-399298961": "IBM Maximo",
1095 | "-401934945": "iomega NAS",
1096 | "40617830": "Frontier Communications",
1097 | "419828698": "Monstra CMS",
1098 | "420473080": "Exostar - Managed Access Gateway",
1099 | "-421986013": "Homegrown Website Hosting",
1100 | "-429287806": "Ebay",
1101 | "430582574": "SmartPing",
1102 | "-43161126": "Slack",
1103 | "432733105": "Pi Star",
1104 | "-434501501": "bit.ly",
1105 | "-435817905": "Cambium Networks",
1106 | "-438482901": "Moodle",
1107 | "440258421": "Dolibarr",
1108 | "-440644339": "Zyxel ZyWALL",
1109 | "442749392": "Microsoft OWA",
1110 | "443944613": "WAMPSERVER",
1111 | "-449283196": "Gogs",
1112 | "-450254253": "idera",
1113 | "-459291760": "Workday",
1114 | "459900502": "ZTE Corporation (Gateway/Appliance)",
1115 | "462223993": "Jeedom (home automation)",
1116 | "-466504476": "Kerio Control Firewall",
1117 | "475145467": "Zimbra",
1118 | "475379699": "Axcient Replibit Management Server",
1119 | "476213314": "Exacq",
1120 | "-476231906": "phpMyAdmin",
1121 | "-476299640": "Hestia",
1122 | "-47932290": "Craft CMS",
1123 | "479413330": "Webmin",
1124 | "483383992": "ISPConfig",
1125 | "-484708885": "Zyxel ZyWALL",
1126 | "489340156": "Smart/OS",
1127 | "494866796": "Aplikasi",
1128 | "-50306417": "Kyocera (Printer)",
1129 | "-505448917": "Discuz!",
1130 | "509789953": "Farming Simulator Dedicated Server",
1131 | "-510925599": "Windows (Microsoft Corp)",
1132 | "512590457": "Trendnet IP camera",
1133 | "516963061": "Gitlab",
1134 | "517158172": "D-Link (router/network)",
1135 | "-519765377": "Parallels Plesk Panel",
1136 | "-520888198": "Blue Iris (Webcam)",
1137 | "-525583313": "OpenAI",
1138 | "-532394952": "CX",
1139 | "538323054": "NethServer Enterprise",
1140 | "538585915": "Lenel",
1141 | "540706145": "Piwigo",
1142 | "541087742": "LiquidFiles",
1143 | "545827989": "MobileIron",
1144 | "-547019147": "Fedora Server",
1145 | "547025948": "Grafana",
1146 | "5471989": "Netcom Technology",
1147 | "547282364": "Keenetic",
1148 | "547474373": "TOTOLINK (network)",
1149 | "552592949": "ASUS AiCloud",
1150 | "552597979": "Sails",
1151 | "552727997": "Atlassian - JIRA",
1152 | "5542029": "NetComWireless (Network)",
1153 | "-560297467": "DVR (Korean)",
1154 | "56079838": "Okta",
1155 | "-560962771": "Facebook",
1156 | "-566516473": "Meriva Security",
1157 | "-569941107": "Fireware Watchguard",
1158 | "575613323": "Canvas LMS (Learning Management)",
1159 | "577446824": "Bluehost",
1160 | "579239725": "Metasploit",
1161 | "-582931176": "NexusPHP",
1162 | "586998417": "Nginx",
1163 | "-587741716": "ADB Broadband (Network)",
1164 | "-590892202": "Surfilter SSL VPN Portal",
1165 | "593396886": "StackOverflow",
1166 | "-594256627": "Netis (network devices)",
1167 | "-600508822": "iomega NAS",
1168 | "602431586": "Palo Alto Login Portal",
1169 | "603314": "Redmine",
1170 | "607846949": "Hitron Technologies",
1171 | "-609520537": "OpenGeo Suite",
1172 | "-613216179": "iomega NAS",
1173 | "-614457039": "Plesk",
1174 | "-617743584": "Odoo",
1175 | "-624805968": "Cloudinary",
1176 | "-625364318": "OkoFEN Pellematic",
1177 | "628535358": "Atlassian",
1178 | "-629047854": "Jetty 404",
1179 | "-630493013": "DokuWiki",
1180 | "-631002664": "Kerio Control Firewall",
1181 | "631108382": "SonicWALL",
1182 | "-632070065": "Apache Haus",
1183 | "-632583950": "Shoutcast Server",
1184 | "-644617577": "SmartLAN/G",
1185 | "648382619": "Drupal",
1186 | "-649378830": "WHM",
1187 | "-652508439": "Parallels Plesk Panel",
1188 | "-655683626": "PRTG Network Monitor",
1189 | "-656811182": "Jboss",
1190 | "656868270": "iomega NAS",
1191 | "657337228": "Harbor",
1192 | "661332347": "MOBOTIX Camera",
1193 | "669847331": "Unify",
1194 | "671221099": "innovaphone",
1195 | "674449329": "Adserver",
1196 | "-675839242": "openWRT Luci",
1197 | "-676077969": "Niagara Web Server",
1198 | "-677167908": "Kerio Connect (Webmail)",
1199 | "679065580": "Loxone Web Interface",
1200 | "-687783882": "ClaimTime (Ramsell Public Health \u0026 Safety)",
1201 | "688609340": "Cockpit Project",
1202 | "-689902428": "iomega NAS",
1203 | "-692947551": "Ruijie Networks (Login)",
1204 | "-693082538": "openmediavault (NAS)",
1205 | "693122507": "WordPress",
1206 | "-694426121": "Twonky",
1207 | "-696586294": "LinkedIn",
1208 | "-697231354": "Ubiquiti - AirOS",
1209 | "-697407367": "Console WPServeur",
1210 | "698624197": "Redash",
1211 | "-702384832": "TCN",
1212 | "705143395": "Atlassian",
1213 | "706602230": "VisualSVN Server",
1214 | "708578229": "Google",
1215 | "711742418": "Hitron Technologies Inc.",
1216 | "716989053": "Amazon AWS",
1217 | "72005642": "RemObjects SDK / Remoting SDK for .NET HTTP Server Microsoft",
1218 | "-723685921": "Oracle Cloud",
1219 | "726817668": "KeyHelp (Keyweb AG)",
1220 | "727253975": "Paradox IP Module",
1221 | "-727481036": "GigaHost",
1222 | "728788645": "IBM Notes",
1223 | "-72996541": "ONESOURCE",
1224 | "731374291": "HFS (HTTP File Server)",
1225 | "-732601837": "Linksys Smart Wi-Fi",
1226 | "-736276076": "MyASP",
1227 | "-740211187": "Bing",
1228 | "743365239": "Atlassian",
1229 | "74935566": "WindRiver-WebServer",
1230 | "75230260": "Kibana",
1231 | "758890177": "Tumblr",
1232 | "-759108386": "Tongda",
1233 | "-759754862": "Kibana",
1234 | "760540646": "Xtream UI",
1235 | "762074255": "qdPM",
1236 | "76658403": "TheTradeDesk",
1237 | "-766957661": "MDaemon Webmail",
1238 | "768231242": "JAWS Web Server (IP Camera)",
1239 | "768816037": "UniFi Video Controller (airVision)",
1240 | "77044418": "Polycom",
1241 | "-771764544": "Parallels Plesk Panel",
1242 | "774252049": "FastPanel Hosting",
1243 | "77699822": "pyLoad Interface web",
1244 | "-778412836": "BookStack",
1245 | "-778949486": "SugarCRM",
1246 | "780351152": "Microweber",
1247 | "-784265586": "FreeNAS",
1248 | "784872924": "Lucee!",
1249 | "786476039": "AppsFlyer",
1250 | "786533217": "OpenStack",
1251 | "788771792": "Airwatch",
1252 | "794809961": "CheckPoint",
1253 | "804949239": "Cisco Meraki Dashboard",
1254 | "807156787": "Gigapod",
1255 | "-808437027": "Nginx",
1256 | "812385209": "Solarwinds Serv-U FTP Server",
1257 | "81586312": "Jenkins",
1258 | "816588900": "Apache ShardingSphere",
1259 | "-816821232": "GitLab",
1260 | "829321644": "BOMGAR Support Portal",
1261 | "-831826827": "NOS Router",
1262 | "833190513": "Dahua Storm (IP Camera)",
1263 | "-835596734": "poste.io",
1264 | "-839455805": "HillStone Networks",
1265 | "-842192932": "FireEye",
1266 | "-848408438": "i-MSCP - Multi Server Control Panel",
1267 | "-850502287": "Buddy",
1268 | "855273746": "JIRA",
1269 | "-85666451": "DOX - Document Exchange Service",
1270 | "86919334": "ServiceNow",
1271 | "-873627015": "HeroSpeed Digital Technology Co. (NVR/IPC/XVR)",
1272 | "876876147": "Virtua Cobranca",
1273 | "878647854": "BIG-IP",
1274 | "-878891718": "Twonky Server (Media Streaming)",
1275 | "882208493": "Lantronix (Spider)",
1276 | "-882760066": "ZyXEL (Network)",
1277 | "-884776764": "Huawei (Network)",
1278 | "889579989": "Zultys",
1279 | "889652940": "Archibus",
1280 | "-890342445": "Kaco Web",
1281 | "-890810109": "BioTime",
1282 | "-890913700": "OneDoor",
1283 | "-892542227": "iMIS",
1284 | "892542951": "Zabbix",
1285 | "89321398": "Askey Cable Modem",
1286 | "-895890586": "PLEX Server",
1287 | "-895963602": "Jupyter Notebook",
1288 | "896082112": "Koha",
1289 | "896412703": "IW",
1290 | "899301681": "Splynx",
1291 | "899457975": "Cisco",
1292 | "90066852": "JAWS Web Server (IP Camera)",
1293 | "902521196": "Netflix",
1294 | "-902890504": "Universal Media Server",
1295 | "903086190": "Honeywell",
1296 | "904434662": "Loxone (Automation)",
1297 | "905744673": "HP Printer / Server",
1298 | "905796143": "Medallia",
1299 | "90680708": "Domoticz",
1300 | "-907924012": "Postian Email System",
1301 | "914622066": "ServiceNow",
1302 | "-915768386": "TwonkyMedia",
1303 | "916642917": "Multilaser",
1304 | "917966895": "Gogs",
1305 | "919189549": "Rundeck",
1306 | "-919788577": "Vault",
1307 | "920326019": "Roundcube Webmail",
1308 | "920338972": "Linode",
1309 | "-923088984": "OpenStack",
1310 | "-923693877": "motionEye (camera)",
1311 | "-926374507": "Rakuten",
1312 | "926501571": "Handle Proxy",
1313 | "929825723": "WAMPSERVER",
1314 | "932345713": "Promtail",
1315 | "936297245": "Twitch",
1316 | "937999361": "JBoss Application Server 7",
1317 | "938616453": "Mersive Solstice",
1318 | "943925975": "ZyXEL",
1319 | "944969688": "Deluge",
1320 | "945408572": "Fortinet - Forticlient",
1321 | "95271369": "FireEye",
1322 | "955369722": "Sitecore",
1323 | "-956471263": "Web Client Pro",
1324 | "966563415": "WordPress Org",
1325 | "967636089": "MobileIron",
1326 | "970132176": "3CX Phone System",
1327 | "-972810761": "HostMonster - Web hosting",
1328 | "97604680": "Tandberg",
1329 | "-976235259": "Roundcube Webmail",
1330 | "-978656757": "NETIASPOT (Network)",
1331 | "-979181278": "KeyTalk WEB",
1332 | "979634648": "StruxureWare (Schneider Electric)",
1333 | "980692677": "Cake PHP",
1334 | "-981606721": "Plesk",
1335 | "981867722": "Atlassian - JIRA",
1336 | "-982373272": "Nieznana domena",
1337 | "-982946776": "MT-Link",
1338 | "983734701": "Password Management Client",
1339 | "984358620": "Blynk Administration",
1340 | "-986201618": "Duo Security",
1341 | "-986328191": "NetWin",
1342 | "986596052": "SuccessMaker",
1343 | "-986678507": "ISP Manager",
1344 | "-986816620": "OpenRG",
1345 | "987967490": "Huawei (Network)",
1346 | "988422585": "CapRover",
1347 | "989289239": "MoveIT",
1348 | "-991123252": "VMware Horizon",
1349 | "99395752": "Slack",
1350 | "99432374": "MDaemon Remote Administration",
1351 | "-995224160": "Freenom",
1352 | "-996264874": "Elsys Cloud",
1353 | "-996836732": "openmediavault web",
1354 | "998138196": "iomega NAS",
1355 | "-998320869": "F-Secure Policy Manager Server",
1356 | "998588252": "Clirik",
1357 | "999357577": "Hikvision camera"
1358 | }
--------------------------------------------------------------------------------
/pkg/favirecon/favirecon.go:
--------------------------------------------------------------------------------
1 | /*
2 | favirecon - Use favicon.ico to improve your target recon phase. Quickly detect technologies, WAF, exposed panels, known services.
3 |
4 | This repository is under MIT License https://github.com/edoardottt/favirecon/blob/main/LICENSE
5 | */
6 |
7 | package favirecon
8 |
9 | import (
10 | "bufio"
11 | "errors"
12 | "fmt"
13 | "os"
14 | "sync"
15 |
16 | "github.com/edoardottt/favirecon/pkg/input"
17 | "github.com/edoardottt/favirecon/pkg/output"
18 | "github.com/edoardottt/golazy"
19 | "github.com/projectdiscovery/gologger"
20 | fileutil "github.com/projectdiscovery/utils/file"
21 | )
22 |
23 | type Runner struct {
24 | Input chan string
25 | Output chan output.Found
26 | Result output.Result
27 | UserAgent string
28 | InWg *sync.WaitGroup
29 | OutWg *sync.WaitGroup
30 | Options input.Options
31 | OutMutex *sync.Mutex
32 | }
33 |
34 | // New takes as input the options and returns
35 | // a new runner.
36 | func New(options *input.Options) Runner {
37 | if options.FileOutput != "" {
38 | _, err := os.Create(options.FileOutput)
39 | if err != nil {
40 | gologger.Error().Msgf("%s", err)
41 | }
42 | }
43 |
44 | return Runner{
45 | Input: make(chan string, options.Concurrency),
46 | Output: make(chan output.Found, options.Concurrency),
47 | Result: output.New(),
48 | UserAgent: golazy.GenerateRandomUserAgent(),
49 | InWg: &sync.WaitGroup{},
50 | OutWg: &sync.WaitGroup{},
51 | Options: *options,
52 | OutMutex: &sync.Mutex{},
53 | }
54 | }
55 |
56 | // Run takes the input and executes all the tasks
57 | // specified in the options.
58 | func (r *Runner) Run() {
59 | r.InWg.Add(1)
60 |
61 | go pushInput(r)
62 | r.InWg.Add(1)
63 |
64 | go execute(r)
65 | r.OutWg.Add(1)
66 |
67 | go pullOutput(r)
68 | r.InWg.Wait()
69 |
70 | close(r.Output)
71 | r.OutWg.Wait()
72 | }
73 |
74 | func pushInput(r *Runner) {
75 | defer r.InWg.Done()
76 |
77 | if fileutil.HasStdin() {
78 | scanner := bufio.NewScanner(os.Stdin)
79 | for scanner.Scan() {
80 | if r.Options.Cidr {
81 | ips, err := handleCidrInput(scanner.Text())
82 | if err != nil {
83 | gologger.Error().Msg(err.Error())
84 | } else {
85 | for _, ip := range ips {
86 | r.Input <- ip
87 | }
88 | }
89 | } else {
90 | r.Input <- scanner.Text()
91 | }
92 | }
93 | }
94 |
95 | if r.Options.FileInput != "" {
96 | for _, line := range golazy.RemoveDuplicateValues(golazy.ReadFileLineByLine(r.Options.FileInput)) {
97 | if r.Options.Cidr {
98 | ips, err := handleCidrInput(line)
99 | if err != nil {
100 | gologger.Error().Msg(err.Error())
101 | } else {
102 | for _, ip := range ips {
103 | r.Input <- ip
104 | }
105 | }
106 | } else {
107 | r.Input <- line
108 | }
109 | }
110 | }
111 |
112 | if r.Options.Input != "" {
113 | if r.Options.Cidr {
114 | ips, err := handleCidrInput(r.Options.Input)
115 | if err != nil {
116 | gologger.Error().Msg(err.Error())
117 | } else {
118 | for _, ip := range ips {
119 | r.Input <- ip
120 | }
121 | }
122 | } else {
123 | r.Input <- r.Options.Input
124 | }
125 | }
126 |
127 | close(r.Input)
128 | }
129 |
130 | /*
131 | Try /favicon.ico first. Most common and lightweight check.
132 | Accept it only if:
133 | - Status is 200.
134 | - Content-Type is an image.
135 | - Body length is > 0 (some sites return 200 but empty).
136 | If valid, hash and lookup. ✅ Done.
137 |
138 | Fallback to parsing in the HTML :
139 | - Fetch original input URL (not with /favicon.ico appended).
140 | - Parse the HTML.
141 | - Extract: rel=icon, rel=shortcut icon, rel=apple-touch-icon
142 | If href is:
143 | - A relative path → resolve against base URL.
144 | - A full URL → use as-is.
145 | - Data URL → decode and hash directly.
146 | */
147 | func execute(r *Runner) {
148 | defer r.InWg.Done()
149 |
150 | rl := rateLimiter(r)
151 |
152 | for i := 0; i < r.Options.Concurrency; i++ {
153 | r.InWg.Add(1)
154 |
155 | go func() {
156 | defer r.InWg.Done()
157 |
158 | client, err := customClient(&r.Options)
159 | if err != nil {
160 | gologger.Error().Msgf("%s", err)
161 |
162 | return
163 | }
164 |
165 | for value := range r.Input {
166 | faviconURL, err := PrepareURL(value)
167 | if err != nil {
168 | gologger.Error().Msgf("%s", err)
169 |
170 | continue
171 | }
172 |
173 | rl.Take()
174 |
175 | found, result, err := getFavicon(faviconURL, r.UserAgent, client)
176 | if err != nil {
177 | if errors.Is(err, ErrFaviconNotFound) {
178 | gologger.Debug().Msgf("%s for url %s", err.Error(), value)
179 | } else {
180 | gologger.Error().Msgf("%s", err)
181 | }
182 | }
183 |
184 | if !found {
185 | gologger.Debug().Msgf("Fallback to HTML parsing for %s", value)
186 |
187 | faviconURL, result, err = extractFaviconFromHTML(value, r.UserAgent, client)
188 | if err != nil {
189 | gologger.Debug().Msgf("Favicon not found for %s: %s", value, err)
190 | continue
191 | }
192 | }
193 |
194 | foundDB, err := CheckFavicon(result, r.Options.Hash, faviconURL)
195 | if err != nil {
196 | if r.Options.Verbose {
197 | gologger.Error().Msgf("%s", err)
198 | }
199 |
200 | continue
201 | }
202 |
203 | r.Output <- output.Found{URL: value, Name: foundDB, Hash: result}
204 | }
205 | }()
206 | }
207 | }
208 |
209 | func pullOutput(r *Runner) {
210 | defer r.OutWg.Done()
211 |
212 | for o := range r.Output {
213 | if !r.Result.Printed(o.URL) {
214 | r.OutWg.Add(1)
215 |
216 | go writeOutput(r.OutWg, r.OutMutex, &r.Options, o)
217 | }
218 | }
219 | }
220 |
221 | func writeOutput(wg *sync.WaitGroup, m *sync.Mutex, options *input.Options, o output.Found) {
222 | defer wg.Done()
223 |
224 | if options.FileOutput != "" && options.Output == nil {
225 | file, err := os.OpenFile(options.FileOutput, os.O_CREATE|os.O_RDWR|os.O_APPEND, 0644)
226 | if err != nil {
227 | gologger.Fatal().Msg(err.Error())
228 | }
229 |
230 | options.Output = file
231 | }
232 |
233 | m.Lock()
234 |
235 | out := o.Format()
236 |
237 | if options.JSON {
238 | outJSON, err := o.FormatJSON()
239 | if err != nil {
240 | gologger.Fatal().Msg(err.Error())
241 | }
242 |
243 | out = string(outJSON)
244 | }
245 |
246 | if options.Output != nil {
247 | if _, err := options.Output.Write([]byte(out + "\n")); err != nil && options.Verbose {
248 | gologger.Fatal().Msg(err.Error())
249 | }
250 | }
251 |
252 | m.Unlock()
253 |
254 | fmt.Println(out)
255 | }
256 |
--------------------------------------------------------------------------------
/pkg/favirecon/favirecon_test.go:
--------------------------------------------------------------------------------
1 | /*
2 | favirecon - Use favicon.ico to improve your target recon phase. Quickly detect technologies, WAF, exposed panels, known services.
3 |
4 | This repository is under MIT License https://github.com/edoardottt/favirecon/blob/main/LICENSE
5 | */
6 |
7 | package favirecon_test
8 |
9 | import (
10 | "testing"
11 |
12 | "github.com/edoardottt/favirecon/pkg/favirecon"
13 | "github.com/stretchr/testify/require"
14 | )
15 |
16 | func TestGetFaviconHash(t *testing.T) {
17 | tests := []struct {
18 | name string
19 | input []byte
20 | want string
21 | }{
22 | {
23 | name: "Test #1",
24 | input: []byte("test"),
25 | want: "-1541278541",
26 | },
27 | {
28 | name: "Test #2",
29 | input: []byte("wiytl8q2yvb58q2y58i34yv38l4yo853ybtv853y4vv38y4ov38y8oyv4348yoylo4"),
30 | want: "1897381022",
31 | },
32 | }
33 | for _, tt := range tests {
34 | t.Run(tt.name, func(t *testing.T) {
35 | got := favirecon.GetFaviconHash(tt.input)
36 | require.Equal(t, tt.want, got)
37 | })
38 | }
39 | }
40 |
41 | func TestPrepareURL(t *testing.T) {
42 | tests := []struct {
43 | name string
44 | input string
45 | want string
46 | err error
47 | }{
48 | {
49 | name: "empty input",
50 | input: "",
51 | want: "",
52 | err: favirecon.ErrMalformedURL,
53 | },
54 | {
55 | name: "too short input URL",
56 | input: "a.b",
57 | want: "",
58 | err: favirecon.ErrMalformedURL,
59 | },
60 | {
61 | name: "URL without protocol without path",
62 | input: "edoardottt.com",
63 | want: "http://edoardottt.com/favicon.ico",
64 | err: nil,
65 | },
66 | {
67 | name: "URL without protocol with path",
68 | input: "edoardottt.com/",
69 | want: "http://edoardottt.com/favicon.ico",
70 | err: nil,
71 | },
72 | {
73 | name: "URL with protocol without path",
74 | input: "http://edoardottt.com",
75 | want: "http://edoardottt.com/favicon.ico",
76 | err: nil,
77 | },
78 | {
79 | name: "URL with protocol and path (no final slash)",
80 | input: "http://edoardottt.com/test",
81 | want: "http://edoardottt.com/test/favicon.ico",
82 | err: nil,
83 | },
84 | {
85 | name: "URL with protocol and path (final slash)",
86 | input: "http://edoardottt.com/test/",
87 | want: "http://edoardottt.com/test/favicon.ico",
88 | err: nil,
89 | },
90 | {
91 | name: "URL without protocol and path (final slash) with icon",
92 | input: "edoardottt.com/test/favicon.ico",
93 | want: "http://edoardottt.com/test/favicon.ico",
94 | err: nil,
95 | },
96 | {
97 | name: "URL with protocol and path (final slash) with icon",
98 | input: "http://edoardottt.com/test/favicon.ico",
99 | want: "http://edoardottt.com/test/favicon.ico",
100 | err: nil,
101 | },
102 | }
103 | for _, tt := range tests {
104 | t.Run(tt.name, func(t *testing.T) {
105 | got, err := favirecon.PrepareURL(tt.input)
106 | require.Equal(t, tt.err, err)
107 | require.Equal(t, tt.want, got)
108 | })
109 | }
110 | }
111 |
--------------------------------------------------------------------------------
/pkg/favirecon/html.go:
--------------------------------------------------------------------------------
1 | /*
2 | favirecon - Use favicon.ico to improve your target recon phase. Quickly detect technologies, WAF, exposed panels, known services.
3 |
4 | This repository is under MIT License https://github.com/edoardottt/favirecon/blob/main/LICENSE
5 | */
6 |
7 | package favirecon
8 |
9 | import (
10 | "encoding/base64"
11 | "errors"
12 | "net/http"
13 | "strings"
14 |
15 | "github.com/PuerkitoBio/goquery"
16 | )
17 |
18 | var (
19 | ErrFaviconNotFound = errors.New("favicon not found")
20 | ErrFaviconLinkTagNotFound = errors.New("no favicon link tag found")
21 | ErrHTMLNotFetched = errors.New("failed to fetch HTML")
22 | ErrInvalidDataURI = errors.New("invalid data URI")
23 | )
24 |
25 | func extractFaviconFromHTML(pageURL, ua string, client *http.Client) (string, string, error) {
26 | req, err := http.NewRequest(http.MethodGet, pageURL, nil)
27 | if err != nil {
28 | return "", "", err
29 | }
30 |
31 | req.Header.Add("User-Agent", ua)
32 |
33 | resp, err := client.Do(req)
34 | if err != nil {
35 | return "", "", err
36 | }
37 | defer resp.Body.Close()
38 |
39 | if resp.StatusCode != http.StatusOK {
40 | return "", "", ErrHTMLNotFetched
41 | }
42 |
43 | doc, err := goquery.NewDocumentFromReader(resp.Body)
44 | if err != nil {
45 | return "", "", err
46 | }
47 |
48 | var faviconHref string
49 |
50 | doc.Find("link").EachWithBreak(func(i int, s *goquery.Selection) bool {
51 | rel, _ := s.Attr("rel")
52 | href, ok := s.Attr("href")
53 |
54 | if ok && strings.Contains(strings.ToLower(rel), "icon") {
55 | faviconHref = href
56 | return false // break loop
57 | }
58 |
59 | return true
60 | })
61 |
62 | if faviconHref == "" {
63 | return "", "", ErrFaviconLinkTagNotFound
64 | }
65 |
66 | // handle base64 data
67 | if strings.HasPrefix(faviconHref, "data:image") {
68 | base64Data := strings.SplitN(faviconHref, ",", 2)
69 | if len(base64Data) != 2 {
70 | return "", "", ErrInvalidDataURI
71 | }
72 |
73 | decoded, err := base64.StdEncoding.DecodeString(base64Data[1])
74 | if err != nil {
75 | return "", "", err
76 | }
77 |
78 | return faviconHref, GetFaviconHash(decoded), nil
79 | }
80 |
81 | faviconURL := resolveURL(pageURL, faviconHref)
82 |
83 | found, favicon, err := getFavicon(faviconURL, ua, client)
84 | if err != nil {
85 | return faviconURL, "", err
86 | }
87 |
88 | if !found {
89 | return "", "", ErrFaviconNotFound
90 | }
91 |
92 | return faviconURL, favicon, nil
93 | }
94 |
--------------------------------------------------------------------------------
/pkg/favirecon/http.go:
--------------------------------------------------------------------------------
1 | /*
2 | favirecon - Use favicon.ico to improve your target recon phase. Quickly detect technologies, WAF, exposed panels, known services.
3 |
4 | This repository is under MIT License https://github.com/edoardottt/favirecon/blob/main/LICENSE
5 | */
6 |
7 | package favirecon
8 |
9 | import (
10 | "crypto/tls"
11 | "io"
12 | "net"
13 | "net/http"
14 | "net/url"
15 | "time"
16 |
17 | "github.com/edoardottt/favirecon/pkg/input"
18 | "github.com/projectdiscovery/gologger"
19 | )
20 |
21 | const (
22 | TLSHandshakeTimeout = 10
23 | KeepAlive = 30
24 | MaxIdleConns = 100
25 | MaxIdleConnsPerHost = 10
26 | IdleConnTimeout = 90
27 | )
28 |
29 | func customClient(options *input.Options) (*http.Client, error) {
30 | transport := http.Transport{
31 | TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
32 | Proxy: http.ProxyFromEnvironment,
33 | DialContext: (&net.Dialer{
34 | Timeout: time.Duration(options.Timeout) * time.Second,
35 | KeepAlive: KeepAlive * time.Second,
36 | }).DialContext,
37 | TLSHandshakeTimeout: TLSHandshakeTimeout * time.Second,
38 | MaxIdleConns: MaxIdleConns,
39 | MaxIdleConnsPerHost: MaxIdleConnsPerHost,
40 | IdleConnTimeout: IdleConnTimeout * time.Second,
41 | }
42 |
43 | if options.Proxy != "" {
44 | u, err := url.Parse(options.Proxy)
45 | if err != nil {
46 | return nil, err
47 | }
48 |
49 | transport.Proxy = http.ProxyURL(u)
50 |
51 | if options.Verbose {
52 | gologger.Debug().Msgf("Using Proxy %s", options.Proxy)
53 | }
54 | }
55 |
56 | client := http.Client{
57 | Transport: &transport,
58 | Timeout: time.Duration(options.Timeout) * time.Second,
59 | }
60 |
61 | return &client, nil
62 | }
63 |
64 | func getFavicon(url, ua string, client *http.Client) (bool, string, error) {
65 | req, err := http.NewRequest(http.MethodGet, url, nil)
66 | if err != nil {
67 | return false, "", err
68 | }
69 |
70 | gologger.Debug().Msgf("Checking favicon for %s", url)
71 |
72 | req.Header.Add("User-Agent", ua)
73 |
74 | resp, err := client.Do(req)
75 | if err != nil {
76 | return false, "", err
77 | }
78 |
79 | defer resp.Body.Close()
80 |
81 | if resp.StatusCode != http.StatusOK {
82 | return false, "", ErrFaviconNotFound
83 | }
84 |
85 | body, err := io.ReadAll(resp.Body)
86 | if err != nil {
87 | return false, "", err
88 | }
89 |
90 | if len(body) == 0 {
91 | return false, "", ErrEmptyBody
92 | }
93 |
94 | return true, GetFaviconHash(body), nil
95 | }
96 |
--------------------------------------------------------------------------------
/pkg/favirecon/ratelimit.go:
--------------------------------------------------------------------------------
1 | /*
2 | favirecon - Use favicon.ico to improve your target recon phase. Quickly detect technologies, WAF, exposed panels, known services.
3 |
4 | This repository is under MIT License https://github.com/edoardottt/favirecon/blob/main/LICENSE
5 | */
6 |
7 | package favirecon
8 |
9 | import "go.uber.org/ratelimit"
10 |
11 | func rateLimiter(r *Runner) ratelimit.Limiter {
12 | var ratelimiter ratelimit.Limiter
13 | if r.Options.RateLimit > 0 {
14 | ratelimiter = ratelimit.New(r.Options.RateLimit)
15 | } else {
16 | ratelimiter = ratelimit.NewUnlimited()
17 | }
18 |
19 | return ratelimiter
20 | }
21 |
--------------------------------------------------------------------------------
/pkg/favirecon/url.go:
--------------------------------------------------------------------------------
1 | /*
2 | favirecon - Use favicon.ico to improve your target recon phase. Quickly detect technologies, WAF, exposed panels, known services.
3 |
4 | This repository is under MIT License https://github.com/edoardottt/favirecon/blob/main/LICENSE
5 | */
6 |
7 | package favirecon
8 |
9 | import (
10 | "errors"
11 | "net/url"
12 | "strings"
13 | )
14 |
15 | const (
16 | MinURLLength = 4
17 | )
18 |
19 | var (
20 | ErrMalformedURL = errors.New("malformed input URL")
21 | )
22 |
23 | func resolveURL(baseURL, ref string) string {
24 | base, err := url.Parse(baseURL)
25 | if err != nil {
26 | return ref // fallback
27 | }
28 |
29 | u, err := url.Parse(ref)
30 | if err != nil {
31 | return ref
32 | }
33 |
34 | return base.ResolveReference(u).String()
35 | }
36 |
37 | // PrepareURL takes as input a string and prepares
38 | // the input URL in order to get the favicon icon.
39 | func PrepareURL(input string) (string, error) {
40 | if len(input) < MinURLLength {
41 | return "", ErrMalformedURL
42 | }
43 |
44 | if !strings.Contains(input, "://") {
45 | input = "http://" + input
46 | }
47 |
48 | u, err := url.Parse(input)
49 | if err != nil {
50 | return "", err
51 | }
52 |
53 | if !strings.HasSuffix(u.Path, ".ico") {
54 | if !strings.HasSuffix(u.Path, "/") {
55 | u.Path += "/"
56 | }
57 |
58 | u.Path += "favicon.ico"
59 | }
60 |
61 | return u.Scheme + "://" + u.Host + u.Path, nil
62 | }
63 |
--------------------------------------------------------------------------------
/pkg/favirecon/utils.go:
--------------------------------------------------------------------------------
1 | /*
2 | favirecon - Use favicon.ico to improve your target recon phase. Quickly detect technologies, WAF, exposed panels, known services.
3 |
4 | This repository is under MIT License https://github.com/edoardottt/favirecon/blob/main/LICENSE
5 | */
6 |
7 | package favirecon
8 |
9 | import (
10 | "bytes"
11 | "encoding/base64"
12 | "errors"
13 | "fmt"
14 | "net"
15 |
16 | "github.com/projectdiscovery/mapcidr"
17 | "github.com/twmb/murmur3"
18 | )
19 |
20 | var (
21 | ErrCidrBadFormat = errors.New("malformed input CIDR")
22 | ErrEmptyBody = errors.New("empty body")
23 | )
24 |
25 | func contains(s []string, e string) bool {
26 | for _, a := range s {
27 | if a == e {
28 | return true
29 | }
30 | }
31 |
32 | return false
33 | }
34 |
35 | // base64Content : RFC2045.
36 | func base64Content(input []byte) []byte {
37 | inputEncoded := base64.StdEncoding.EncodeToString(input)
38 | buffer := bytes.Buffer{}
39 |
40 | for i := 0; i < len(inputEncoded); i++ {
41 | ch := inputEncoded[i]
42 | buffer.WriteByte(ch)
43 |
44 | if (i+1)%76 == 0 { // 76 bytes.
45 | buffer.WriteByte('\n')
46 | }
47 | }
48 |
49 | buffer.WriteByte('\n')
50 |
51 | return buffer.Bytes()
52 | }
53 |
54 | // GetFaviconHash computes the murmur3 hash.
55 | func GetFaviconHash(input []byte) string {
56 | b64 := base64Content(input)
57 | return fmt.Sprint(int32(murmur3.Sum32(b64)))
58 | }
59 |
60 | func handleCidrInput(inputCidr string) ([]string, error) {
61 | if !isCidr(inputCidr) {
62 | return nil, ErrCidrBadFormat
63 | }
64 |
65 | ips, err := mapcidr.IPAddresses(inputCidr)
66 | if err != nil {
67 | return nil, err
68 | }
69 |
70 | return ips, nil
71 | }
72 |
73 | // isCidr determines if the given ip is a cidr range.
74 | func isCidr(inputCidr string) bool {
75 | _, _, err := net.ParseCIDR(inputCidr)
76 | return err == nil
77 | }
78 |
--------------------------------------------------------------------------------
/pkg/input/check.go:
--------------------------------------------------------------------------------
1 | /*
2 | favirecon - Use favicon.ico to improve your target recon phase. Quickly detect technologies, WAF, exposed panels, known services.
3 |
4 | This repository is under MIT License https://github.com/edoardottt/favirecon/blob/main/LICENSE
5 | */
6 |
7 | package input
8 |
9 | import (
10 | "errors"
11 | "fmt"
12 | "net/url"
13 |
14 | fileutil "github.com/projectdiscovery/utils/file"
15 | )
16 |
17 | var (
18 | ErrMutexFlags = errors.New("incompatible flags specified")
19 | ErrNoInput = errors.New("no input specified")
20 | ErrNegativeValue = errors.New("must be positive")
21 | )
22 |
23 | func (options *Options) validateOptions() error {
24 | if options.Silent && options.Verbose {
25 | return fmt.Errorf("%w: %s and %s", ErrMutexFlags, "silent", "verbose")
26 | }
27 |
28 | if options.Input == "" && options.FileInput == "" && !fileutil.HasStdin() {
29 | return fmt.Errorf("%w", ErrNoInput)
30 | }
31 |
32 | if options.Concurrency <= 0 {
33 | return fmt.Errorf("concurrency: %w", ErrNegativeValue)
34 | }
35 |
36 | if options.RateLimit != 0 && options.RateLimit <= 0 {
37 | return fmt.Errorf("rate limit: %w", ErrNegativeValue)
38 | }
39 |
40 | if options.Proxy != "" && !checkProxy(options.Proxy) {
41 | _, err := url.Parse(options.Proxy)
42 | return fmt.Errorf("proxy URL: %w", err)
43 | }
44 |
45 | return nil
46 | }
47 |
48 | func checkProxy(proxy string) bool {
49 | if len(proxy) == 0 {
50 | return false
51 | }
52 |
53 | _, err := url.Parse(proxy)
54 |
55 | return err == nil
56 | }
57 |
--------------------------------------------------------------------------------
/pkg/input/flags.go:
--------------------------------------------------------------------------------
1 | /*
2 | favirecon - Use favicon.ico to improve your target recon phase. Quickly detect technologies, WAF, exposed panels, known services.
3 |
4 | This repository is under MIT License https://github.com/edoardottt/favirecon/blob/main/LICENSE
5 | */
6 |
7 | package input
8 |
9 | import (
10 | "io"
11 | "os"
12 | "strings"
13 |
14 | "github.com/edoardottt/favirecon/pkg/output"
15 | "github.com/projectdiscovery/goflags"
16 | "github.com/projectdiscovery/gologger"
17 | "github.com/projectdiscovery/gologger/levels"
18 | )
19 |
20 | const (
21 | DefaultTimeout = 10
22 | DefaultConcurrency = 50
23 | DefaultRateLimit = 0
24 | )
25 |
26 | // Options struct specifies how the tool
27 | // will behave.
28 | type Options struct {
29 | Input string
30 | FileInput string
31 | FileOutput string
32 | Hash goflags.StringSlice
33 | Verbose bool
34 | Output io.Writer
35 | Silent bool
36 | Concurrency int
37 | Timeout int
38 | Cidr bool
39 | RateLimit int
40 | Proxy string
41 | JSON bool
42 | }
43 |
44 | // configureOutput configures the output on the screen.
45 | func (options *Options) configureOutput() {
46 | if options.Silent {
47 | gologger.DefaultLogger.SetMaxLevel(levels.LevelSilent)
48 | } else if options.Verbose {
49 | gologger.DefaultLogger.SetMaxLevel(levels.LevelVerbose)
50 | }
51 | }
52 |
53 | // ParseOptions parses the command line options for application.
54 | func ParseOptions() *Options {
55 | options := &Options{}
56 |
57 | flagSet := goflags.NewFlagSet()
58 | flagSet.SetDescription(`Discover new target domains using Content Security Policy.`)
59 |
60 | // Input
61 | flagSet.CreateGroup("input", "Input",
62 | flagSet.StringVarP(&options.Input, "url", "u", "", `Input domain`),
63 | flagSet.StringVarP(&options.FileInput, "list", "l", "", `File containing input domains`),
64 | flagSet.BoolVar(&options.Cidr, "cidr", false, `Interpret input as CIDR`),
65 | )
66 |
67 | flagSet.CreateGroup("configs", "Configurations",
68 | flagSet.StringSliceVarP(&options.Hash, "hash", "", nil, `Filter results having these favicon hashes (comma separated)`, goflags.CommaSeparatedStringSliceOptions),
69 | flagSet.IntVarP(&options.Concurrency, "concurrency", "c", DefaultConcurrency, `Concurrency level`),
70 | flagSet.IntVarP(&options.Timeout, "timeout", "t", DefaultTimeout, `Connection timeout in seconds`),
71 | flagSet.IntVarP(&options.RateLimit, "rate-limit", "rl", DefaultRateLimit, `Set a rate limit (per second)`),
72 | flagSet.StringVarP(&options.Proxy, "proxy", "px", "", `Set a proxy server (URL)`),
73 | )
74 |
75 | // Output
76 | flagSet.CreateGroup("output", "Output",
77 | flagSet.StringVarP(&options.FileOutput, "output", "o", "", `File to write output results`),
78 | flagSet.BoolVarP(&options.Verbose, "verbose", "v", false, `Verbose output`),
79 | flagSet.BoolVarP(&options.Silent, "silent", "s", false, `Silent output. Print only results`),
80 | flagSet.BoolVarP(&options.JSON, "json", "j", false, `JSON output`),
81 | )
82 |
83 | if help() || noArgs() {
84 | output.ShowBanner()
85 | }
86 |
87 | if err := flagSet.Parse(); err != nil {
88 | output.ShowBanner()
89 | gologger.Fatal().Msgf("%s\n", err)
90 | }
91 |
92 | // Read the inputs and configure the logging.
93 | options.configureOutput()
94 |
95 | if err := options.validateOptions(); err != nil {
96 | output.ShowBanner()
97 | gologger.Fatal().Msgf("%s\n", err)
98 | }
99 |
100 | output.ShowBanner()
101 |
102 | return options
103 | }
104 |
105 | func help() bool {
106 | // help usage asked by user.
107 | for _, arg := range os.Args {
108 | argStripped := strings.Trim(arg, "-")
109 | if argStripped == "h" || argStripped == "help" {
110 | return true
111 | }
112 | }
113 |
114 | return false
115 | }
116 |
117 | func noArgs() bool {
118 | // User passed no flag.
119 | return len(os.Args) < 2
120 | }
121 |
--------------------------------------------------------------------------------
/pkg/output/banner.go:
--------------------------------------------------------------------------------
1 | /*
2 | favirecon - Use favicon.ico to improve your target recon phase. Quickly detect technologies, WAF, exposed panels, known services.
3 |
4 | This repository is under MIT License https://github.com/edoardottt/favirecon/blob/main/LICENSE
5 | */
6 |
7 | package output
8 |
9 | import "github.com/projectdiscovery/gologger"
10 |
11 | // nolint: gochecknoglobals
12 | var printed = false
13 |
14 | const (
15 | Version = "v1.0.0"
16 | banner = ` ____ _
17 | / __/___ __ __(_)_______ _________ ____
18 | / /_/ __ ` + `\/ | / / / ___/ _ \/ ___/ __ \/ __ \
19 | / __/ /_/ /| |/ / / / / __/ /__/ /_/ / / / /
20 | /_/ \__,_/ |___/_/_/ \___/\___/\____/_/ /_/
21 | `
22 | )
23 |
24 | func ShowBanner() {
25 | if !printed {
26 | gologger.Print().Msgf("%s%s\n\n", banner, Version)
27 | gologger.Print().Msgf("\t\t@edoardottt, https://edoardottt.com/\n")
28 | gologger.Print().Msgf("\t\t https://github.com/edoardottt/\n\n")
29 |
30 | printed = true
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/pkg/output/output.go:
--------------------------------------------------------------------------------
1 | /*
2 | favirecon - Use favicon.ico to improve your target recon phase. Quickly detect technologies, WAF, exposed panels, known services.
3 |
4 | This repository is under MIT License https://github.com/edoardottt/favirecon/blob/main/LICENSE
5 | */
6 |
7 | package output
8 |
9 | import (
10 | "encoding/json"
11 | "fmt"
12 | "sync"
13 | )
14 |
15 | type Found struct {
16 | URL string `json:"URL,omitempty"`
17 | Hash string `json:"Hash,omitempty"`
18 | Name string `json:"Name,omitempty"`
19 | }
20 |
21 | type Result struct {
22 | Map map[string]struct{}
23 | Mutex *sync.RWMutex
24 | }
25 |
26 | // New returns a new Result struct.
27 | func New() Result {
28 | return Result{
29 | Map: map[string]struct{}{},
30 | Mutex: &sync.RWMutex{},
31 | }
32 | }
33 |
34 | // Printed checks if a string has been previously printed.
35 | func (o *Result) Printed(found string) bool {
36 | o.Mutex.RLock()
37 | if _, ok := o.Map[found]; !ok {
38 | o.Mutex.RUnlock()
39 | o.Mutex.Lock()
40 | o.Map[found] = struct{}{}
41 | o.Mutex.Unlock()
42 |
43 | return false
44 | } else {
45 | o.Mutex.RUnlock()
46 | }
47 |
48 | return true
49 | }
50 |
51 | // Format returns a string ready to be printed.
52 | func (f *Found) Format() string {
53 | return fmt.Sprintf("[%s] [%s] %s", f.Hash, f.Name, f.URL)
54 | }
55 |
56 | // FormatJSON returns the input as JSON string.
57 | func (f *Found) FormatJSON() ([]byte, error) {
58 | jsonOutput, err := json.Marshal(f)
59 | if err != nil {
60 | return nil, err
61 | }
62 |
63 | return jsonOutput, nil
64 | }
65 |
--------------------------------------------------------------------------------
/scripts/check-dups.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # https://github.com/edoardottt/favirecon
4 | #
5 | # This script checks if there are duplicate entries in the db.json file.
6 | #
7 |
8 | file="pkg/favirecon/db.json"
9 |
10 | dups=$(cat $file | sort | uniq -d)
11 |
12 | if [[ -n $dups ]]; then
13 | echo "[ ERR ] DUPLICATE ENTRIES FOUND!"
14 | echo "$dups"
15 | exit 1
16 | else
17 | echo "[ OK! ] NO DUPLICATES FOUND."
18 | fi
--------------------------------------------------------------------------------
/scripts/check-favicon-ok.sh:
--------------------------------------------------------------------------------
1 | cat test.in | httpx -path "/favicon.ico" -status-code -fr -nc -mc 200 -o favicon.out
--------------------------------------------------------------------------------
/scripts/favicon-to-add.txt:
--------------------------------------------------------------------------------
1 | https://shodan.io/search?query=http.favicon.hash%3A-1298131932
2 | https://shodan.io/search?query=http.favicon.hash%3A-1324930554
3 | https://shodan.io/search?query=http.favicon.hash%3A1328449667
4 | https://shodan.io/search?query=http.favicon.hash%3A1330269434
5 | https://shodan.io/search?query=http.favicon.hash%3A1337147129
6 | https://shodan.io/search?query=http.favicon.hash%3A-1343712810
7 | https://shodan.io/search?query=http.favicon.hash%3A1354079303
8 | https://shodan.io/search?query=http.favicon.hash%3A-1373456171
9 | https://shodan.io/search?query=http.favicon.hash%3A-1478287554
10 | https://shodan.io/search?query=http.favicon.hash%3A151132309
11 | https://shodan.io/search?query=http.favicon.hash%3A-1529860313
12 | https://shodan.io/search?query=http.favicon.hash%3A-1548359600
13 | https://shodan.io/search?query=http.favicon.hash%3A1550906681
14 | https://shodan.io/search?query=http.favicon.hash%3A1552322396
15 | https://shodan.io/search?query=http.favicon.hash%3A-1575154882
16 | https://shodan.io/search?query=http.favicon.hash%3A-1595726841
17 | https://shodan.io/search?query=http.favicon.hash%3A-1663319756
18 | https://shodan.io/search?query=http.favicon.hash%3A1691956220
19 | https://shodan.io/search?query=http.favicon.hash%3A-1706783005
20 | https://shodan.io/search?query=http.favicon.hash%3A-1889244460
21 | https://shodan.io/search?query=http.favicon.hash%3A-1893514038
22 | https://shodan.io/search?query=http.favicon.hash%3A-1909533337
23 | https://shodan.io/search?query=http.favicon.hash%3A1949005079
24 | https://shodan.io/search?query=http.favicon.hash%3A-1961736892
25 | https://shodan.io/search?query=http.favicon.hash%3A-2000384200
26 | https://shodan.io/search?query=http.favicon.hash%3A2012805438
27 | https://shodan.io/search?query=http.favicon.hash%3A-2017604252
28 | https://shodan.io/search?query=http.favicon.hash%3A-2022766869
29 | https://shodan.io/search?query=http.favicon.hash%3A2023619029
30 | https://shodan.io/search?query=http.favicon.hash%3A-2024806776
31 | https://shodan.io/search?query=http.favicon.hash%3A-2041778663
32 | https://shodan.io/search?query=http.favicon.hash%3A2062026853
33 | https://shodan.io/search?query=http.favicon.hash%3A-206623908
34 | https://shodan.io/search?query=http.favicon.hash%3A-2070193368
35 | https://shodan.io/search?query=http.favicon.hash%3A-2070905245
36 | https://shodan.io/search?query=http.favicon.hash%3A-2073045449
37 | https://shodan.io/search?query=http.favicon.hash%3A2073492066
38 | https://shodan.io/search?query=http.favicon.hash%3A-2073748627
39 | https://shodan.io/search?query=http.favicon.hash%3A2074122204
40 | https://shodan.io/search?query=http.favicon.hash%3A-2075066158
41 | https://shodan.io/search?query=http.favicon.hash%3A2075812071
42 | https://shodan.io/search?query=http.favicon.hash%3A2076082716
43 | https://shodan.io/search?query=http.favicon.hash%3A-2078200982
44 | https://shodan.io/search?query=http.favicon.hash%3A-2078818753
45 | https://shodan.io/search?query=http.favicon.hash%3A-2078953379
46 | https://shodan.io/search?query=http.favicon.hash%3A2078977144
47 | https://shodan.io/search?query=http.favicon.hash%3A-2079561533
48 | https://shodan.io/search?query=http.favicon.hash%3A-2080238551
49 | https://shodan.io/search?query=http.favicon.hash%3A2080306224
50 | https://shodan.io/search?query=http.favicon.hash%3A-2080659646
51 | https://shodan.io/search?query=http.favicon.hash%3A2080675353
52 | https://shodan.io/search?query=http.favicon.hash%3A2081346853
53 | https://shodan.io/search?query=http.favicon.hash%3A-2083189573
54 | https://shodan.io/search?query=http.favicon.hash%3A2083451581
55 | https://shodan.io/search?query=http.favicon.hash%3A-2085024693
56 | https://shodan.io/search?query=http.favicon.hash%3A-2086072349
57 | https://shodan.io/search?query=http.favicon.hash%3A2088312167
58 | https://shodan.io/search?query=http.favicon.hash%3A208896738
59 | https://shodan.io/search?query=http.favicon.hash%3A-2090859872
60 | https://shodan.io/search?query=http.favicon.hash%3A2094243370
61 | https://shodan.io/search?query=http.favicon.hash%3A2094301709
62 | https://shodan.io/search?query=http.favicon.hash%3A-209795661
63 | https://shodan.io/search?query=http.favicon.hash%3A2098126187
64 | https://shodan.io/search?query=http.favicon.hash%3A-2098621284
65 | https://shodan.io/search?query=http.favicon.hash%3A2099024175
66 | https://shodan.io/search?query=http.favicon.hash%3A-2099340503
67 | https://shodan.io/search?query=http.favicon.hash%3A-2099646360
68 | https://shodan.io/search?query=http.favicon.hash%3A2101029458
69 | https://shodan.io/search?query=http.favicon.hash%3A-2101700158
70 | https://shodan.io/search?query=http.favicon.hash%3A2103205025
71 | https://shodan.io/search?query=http.favicon.hash%3A2104481645
72 | https://shodan.io/search?query=http.favicon.hash%3A-2104765658
73 | https://shodan.io/search?query=http.favicon.hash%3A2104916232
74 | https://shodan.io/search?query=http.favicon.hash%3A-2105230175
75 | https://shodan.io/search?query=http.favicon.hash%3A2107072793
76 | https://shodan.io/search?query=http.favicon.hash%3A2107313883
77 | https://shodan.io/search?query=http.favicon.hash%3A2107438913
78 | https://shodan.io/search?query=http.favicon.hash%3A2108194629
79 | https://shodan.io/search?query=http.favicon.hash%3A-210839484
80 | https://shodan.io/search?query=http.favicon.hash%3A-210925837
81 | https://shodan.io/search?query=http.favicon.hash%3A2110728266
82 | https://shodan.io/search?query=http.favicon.hash%3A-2112402030
83 | https://shodan.io/search?query=http.favicon.hash%3A-2114561030
84 | https://shodan.io/search?query=http.favicon.hash%3A-2115208104
85 | https://shodan.io/search?query=http.favicon.hash%3A2115697643
86 | https://shodan.io/search?query=http.favicon.hash%3A-2116896471
87 | https://shodan.io/search?query=http.favicon.hash%3A-2120634731
88 | https://shodan.io/search?query=http.favicon.hash%3A-2121390088
89 | https://shodan.io/search?query=http.favicon.hash%3A-2122483003
90 | https://shodan.io/search?query=http.favicon.hash%3A-2123709161
91 | https://shodan.io/search?query=http.favicon.hash%3A-2124642965
92 | https://shodan.io/search?query=http.favicon.hash%3A-2124726932
93 | https://shodan.io/search?query=http.favicon.hash%3A-2126618664
94 | https://shodan.io/search?query=http.favicon.hash%3A2126845402
95 | https://shodan.io/search?query=http.favicon.hash%3A-212761746
96 | https://shodan.io/search?query=http.favicon.hash%3A-2128734439
97 | https://shodan.io/search?query=http.favicon.hash%3A2129066320
98 | https://shodan.io/search?query=http.favicon.hash%3A-2129723555
99 | https://shodan.io/search?query=http.favicon.hash%3A2129876281
100 | https://shodan.io/search?query=http.favicon.hash%3A2131529367
101 | https://shodan.io/search?query=http.favicon.hash%3A-2131921099
102 | https://shodan.io/search?query=http.favicon.hash%3A2134100527
103 | https://shodan.io/search?query=http.favicon.hash%3A-2135383206
104 | https://shodan.io/search?query=http.favicon.hash%3A2136934273
105 | https://shodan.io/search?query=http.favicon.hash%3A-2137634004
106 | https://shodan.io/search?query=http.favicon.hash%3A-2139528113
107 | https://shodan.io/search?query=http.favicon.hash%3A-2140414765
108 | https://shodan.io/search?query=http.favicon.hash%3A-2141110802
109 | https://shodan.io/search?query=http.favicon.hash%3A-2142367897
110 | https://shodan.io/search?query=http.favicon.hash%3A2142422427
111 | https://shodan.io/search?query=http.favicon.hash%3A-2142991177
112 | https://shodan.io/search?query=http.favicon.hash%3A-2144075010
113 | https://shodan.io/search?query=http.favicon.hash%3A-2144699833
114 | https://shodan.io/search?query=http.favicon.hash%3A-2145623235
115 | https://shodan.io/search?query=http.favicon.hash%3A2146678949
116 | https://shodan.io/search?query=http.favicon.hash%3A-2146887260
117 | https://shodan.io/search?query=http.favicon.hash%3A214952113
118 | https://shodan.io/search?query=http.favicon.hash%3A217119619
119 | https://shodan.io/search?query=http.favicon.hash%3A222371126
120 | https://shodan.io/search?query=http.favicon.hash%3A222541292
121 | https://shodan.io/search?query=http.favicon.hash%3A-222597173
122 | https://shodan.io/search?query=http.favicon.hash%3A222772767
123 | https://shodan.io/search?query=http.favicon.hash%3A22360715
124 | https://shodan.io/search?query=http.favicon.hash%3A224075790
125 | https://shodan.io/search?query=http.favicon.hash%3A-226473314
126 | https://shodan.io/search?query=http.favicon.hash%3A229811056
127 | https://shodan.io/search?query=http.favicon.hash%3A-230257671
128 | https://shodan.io/search?query=http.favicon.hash%3A-231091547
129 | https://shodan.io/search?query=http.favicon.hash%3A-231492804
130 | https://shodan.io/search?query=http.favicon.hash%3A232459843
131 | https://shodan.io/search?query=http.favicon.hash%3A234100130
132 | https://shodan.io/search?query=http.favicon.hash%3A234406
133 | https://shodan.io/search?query=http.favicon.hash%3A-234896770
134 | https://shodan.io/search?query=http.favicon.hash%3A-23539877
135 | https://shodan.io/search?query=http.favicon.hash%3A235842803
136 | https://shodan.io/search?query=http.favicon.hash%3A-236961933
137 | https://shodan.io/search?query=http.favicon.hash%3A-238580991
138 | https://shodan.io/search?query=http.favicon.hash%3A-238593524
139 | https://shodan.io/search?query=http.favicon.hash%3A-238742715
140 | https://shodan.io/search?query=http.favicon.hash%3A23874752
141 | https://shodan.io/search?query=http.favicon.hash%3A238946113
142 | https://shodan.io/search?query=http.favicon.hash%3A-240338506
143 | https://shodan.io/search?query=http.favicon.hash%3A-241559259
144 | https://shodan.io/search?query=http.favicon.hash%3A241962909
145 | https://shodan.io/search?query=http.favicon.hash%3A-249310900
146 | https://shodan.io/search?query=http.favicon.hash%3A274690922
147 | https://shodan.io/search?query=http.favicon.hash%3A282667281
148 | https://shodan.io/search?query=http.favicon.hash%3A-285677846
149 | https://shodan.io/search?query=http.favicon.hash%3A-301106353
150 | https://shodan.io/search?query=http.favicon.hash%3A306836681
151 | https://shodan.io/search?query=http.favicon.hash%3A-307509435
152 | https://shodan.io/search?query=http.favicon.hash%3A-307913898
153 | https://shodan.io/search?query=http.favicon.hash%3A311575799
154 | https://shodan.io/search?query=http.favicon.hash%3A311886536
155 | https://shodan.io/search?query=http.favicon.hash%3A313009239
156 | https://shodan.io/search?query=http.favicon.hash%3A-313348474
157 | https://shodan.io/search?query=http.favicon.hash%3A-315044068
158 | https://shodan.io/search?query=http.favicon.hash%3A315167558
159 | https://shodan.io/search?query=http.favicon.hash%3A-315395264
160 | https://shodan.io/search?query=http.favicon.hash%3A-31542723
161 | https://shodan.io/search?query=http.favicon.hash%3A-315727620
162 | https://shodan.io/search?query=http.favicon.hash%3A316025764
163 | https://shodan.io/search?query=http.favicon.hash%3A-316785925
164 | https://shodan.io/search?query=http.favicon.hash%3A317645231
165 | https://shodan.io/search?query=http.favicon.hash%3A-317734159
166 | https://shodan.io/search?query=http.favicon.hash%3A318238424
167 | https://shodan.io/search?query=http.favicon.hash%3A318242559
168 | https://shodan.io/search?query=http.favicon.hash%3A-319589191
169 | https://shodan.io/search?query=http.favicon.hash%3A-320040756
170 | https://shodan.io/search?query=http.favicon.hash%3A-321382934
171 | https://shodan.io/search?query=http.favicon.hash%3A-322157796
172 | https://shodan.io/search?query=http.favicon.hash%3A322451881
173 | https://shodan.io/search?query=http.favicon.hash%3A-323147747
174 | https://shodan.io/search?query=http.favicon.hash%3A-323383440
175 | https://shodan.io/search?query=http.favicon.hash%3A-323569867
176 | https://shodan.io/search?query=http.favicon.hash%3A323952944
177 | https://shodan.io/search?query=http.favicon.hash%3A-324206735
178 | https://shodan.io/search?query=http.favicon.hash%3A32565741
179 | https://shodan.io/search?query=http.favicon.hash%3A327481006
180 | https://shodan.io/search?query=http.favicon.hash%3A-328420081
181 | https://shodan.io/search?query=http.favicon.hash%3A-33130387
182 | https://shodan.io/search?query=http.favicon.hash%3A332458425
183 | https://shodan.io/search?query=http.favicon.hash%3A334124034
184 | https://shodan.io/search?query=http.favicon.hash%3A-334310348
185 | https://shodan.io/search?query=http.favicon.hash%3A334811193
186 | https://shodan.io/search?query=http.favicon.hash%3A-336578314
187 | https://shodan.io/search?query=http.favicon.hash%3A337372914
188 | https://shodan.io/search?query=http.favicon.hash%3A33742783
189 | https://shodan.io/search?query=http.favicon.hash%3A-337520637
190 | https://shodan.io/search?query=http.favicon.hash%3A338518278
191 | https://shodan.io/search?query=http.favicon.hash%3A339283450
192 | https://shodan.io/search?query=http.favicon.hash%3A341223702
193 | https://shodan.io/search?query=http.favicon.hash%3A-341358013
194 | https://shodan.io/search?query=http.favicon.hash%3A343129423
195 | https://shodan.io/search?query=http.favicon.hash%3A-344215728
196 | https://shodan.io/search?query=http.favicon.hash%3A346062468
197 | https://shodan.io/search?query=http.favicon.hash%3A346906916
198 | https://shodan.io/search?query=http.favicon.hash%3A-347188002
199 | https://shodan.io/search?query=http.favicon.hash%3A-3476924
200 | https://shodan.io/search?query=http.favicon.hash%3A349194243
201 | https://shodan.io/search?query=http.favicon.hash%3A349959347
202 | https://shodan.io/search?query=http.favicon.hash%3A350618352
203 | https://shodan.io/search?query=http.favicon.hash%3A-350784271
204 | https://shodan.io/search?query=http.favicon.hash%3A-351164789
205 | https://shodan.io/search?query=http.favicon.hash%3A-351279329
206 | https://shodan.io/search?query=http.favicon.hash%3A-352436704
207 | https://shodan.io/search?query=http.favicon.hash%3A-353506001
208 | https://shodan.io/search?query=http.favicon.hash%3A354564839
209 | https://shodan.io/search?query=http.favicon.hash%3A-357468442
210 | https://shodan.io/search?query=http.favicon.hash%3A358099584
211 | https://shodan.io/search?query=http.favicon.hash%3A361114446
212 | https://shodan.io/search?query=http.favicon.hash%3A-362413667
213 | https://shodan.io/search?query=http.favicon.hash%3A-364082680
214 | https://shodan.io/search?query=http.favicon.hash%3A-364225497
215 | https://shodan.io/search?query=http.favicon.hash%3A-364707506
216 | https://shodan.io/search?query=http.favicon.hash%3A366138570
217 | https://shodan.io/search?query=http.favicon.hash%3A-367339145
218 | https://shodan.io/search?query=http.favicon.hash%3A367556711
219 | https://shodan.io/search?query=http.favicon.hash%3A-367992378
220 | https://shodan.io/search?query=http.favicon.hash%3A368161366
221 | https://shodan.io/search?query=http.favicon.hash%3A-368391568
222 | https://shodan.io/search?query=http.favicon.hash%3A-368512251
223 | https://shodan.io/search?query=http.favicon.hash%3A-36899337
224 | https://shodan.io/search?query=http.favicon.hash%3A-369163395
225 | https://shodan.io/search?query=http.favicon.hash%3A-369438809
226 | https://shodan.io/search?query=http.favicon.hash%3A370419604
227 | https://shodan.io/search?query=http.favicon.hash%3A-372092869
228 | https://shodan.io/search?query=http.favicon.hash%3A372890367
229 | https://shodan.io/search?query=http.favicon.hash%3A-373583638
230 | https://shodan.io/search?query=http.favicon.hash%3A375199015
231 | https://shodan.io/search?query=http.favicon.hash%3A375561642
232 | https://shodan.io/search?query=http.favicon.hash%3A377617568
233 | https://shodan.io/search?query=http.favicon.hash%3A-379000493
234 | https://shodan.io/search?query=http.favicon.hash%3A-379154636
235 | https://shodan.io/search?query=http.favicon.hash%3A380299868
236 | https://shodan.io/search?query=http.favicon.hash%3A-380686728
237 | https://shodan.io/search?query=http.favicon.hash%3A-381579829
238 | https://shodan.io/search?query=http.favicon.hash%3A-38198018
239 | https://shodan.io/search?query=http.favicon.hash%3A-385909173
240 | https://shodan.io/search?query=http.favicon.hash%3A386205167
241 | https://shodan.io/search?query=http.favicon.hash%3A388333910
242 | https://shodan.io/search?query=http.favicon.hash%3A-389615170
243 | https://shodan.io/search?query=http.favicon.hash%3A-391577146
244 | https://shodan.io/search?query=http.favicon.hash%3A-391883312
245 | https://shodan.io/search?query=http.favicon.hash%3A-393050529
246 | https://shodan.io/search?query=http.favicon.hash%3A-393552038
247 | https://shodan.io/search?query=http.favicon.hash%3A-395369635
248 | https://shodan.io/search?query=http.favicon.hash%3A-39579912
249 | https://shodan.io/search?query=http.favicon.hash%3A-396388118
250 | https://shodan.io/search?query=http.favicon.hash%3A-398071738
251 | https://shodan.io/search?query=http.favicon.hash%3A-398134515
252 | https://shodan.io/search?query=http.favicon.hash%3A398967662
253 | https://shodan.io/search?query=http.favicon.hash%3A399165424
254 | https://shodan.io/search?query=http.favicon.hash%3A-39928739
255 | https://shodan.io/search?query=http.favicon.hash%3A400100893
256 | https://shodan.io/search?query=http.favicon.hash%3A401528358
257 | https://shodan.io/search?query=http.favicon.hash%3A-402346053
258 | https://shodan.io/search?query=http.favicon.hash%3A-402376780
259 | https://shodan.io/search?query=http.favicon.hash%3A-402390638
260 | https://shodan.io/search?query=http.favicon.hash%3A-403356440
261 | https://shodan.io/search?query=http.favicon.hash%3A403376554
262 | https://shodan.io/search?query=http.favicon.hash%3A403739186
263 | https://shodan.io/search?query=http.favicon.hash%3A404213448
264 | https://shodan.io/search?query=http.favicon.hash%3A-404338986
265 | https://shodan.io/search?query=http.favicon.hash%3A405216878
266 | https://shodan.io/search?query=http.favicon.hash%3A405460413
267 | https://shodan.io/search?query=http.favicon.hash%3A405490845
268 | https://shodan.io/search?query=http.favicon.hash%3A-405780529
269 | https://shodan.io/search?query=http.favicon.hash%3A407286339
270 | https://shodan.io/search?query=http.favicon.hash%3A408959079
271 | https://shodan.io/search?query=http.favicon.hash%3A-409277045
272 | https://shodan.io/search?query=http.favicon.hash%3A409870064
273 | https://shodan.io/search?query=http.favicon.hash%3A-409988098
274 | https://shodan.io/search?query=http.favicon.hash%3A411052691
275 | https://shodan.io/search?query=http.favicon.hash%3A41203359
276 | https://shodan.io/search?query=http.favicon.hash%3A41404159
277 | https://shodan.io/search?query=http.favicon.hash%3A419128668
278 | https://shodan.io/search?query=http.favicon.hash%3A-421309877
279 | https://shodan.io/search?query=http.favicon.hash%3A-422142140
280 | https://shodan.io/search?query=http.favicon.hash%3A-424415022
281 | https://shodan.io/search?query=http.favicon.hash%3A-424915113
282 | https://shodan.io/search?query=http.favicon.hash%3A-425273705
283 | https://shodan.io/search?query=http.favicon.hash%3A425315413
284 | https://shodan.io/search?query=http.favicon.hash%3A-426082882
285 | https://shodan.io/search?query=http.favicon.hash%3A-427105888
286 | https://shodan.io/search?query=http.favicon.hash%3A-427178009
287 | https://shodan.io/search?query=http.favicon.hash%3A-427691990
288 | https://shodan.io/search?query=http.favicon.hash%3A428198134
289 | https://shodan.io/search?query=http.favicon.hash%3A-429138979
290 | https://shodan.io/search?query=http.favicon.hash%3A-431071659
291 | https://shodan.io/search?query=http.favicon.hash%3A431511705
292 | https://shodan.io/search?query=http.favicon.hash%3A431627549
293 | https://shodan.io/search?query=http.favicon.hash%3A431796802
294 | https://shodan.io/search?query=http.favicon.hash%3A432557223
295 | https://shodan.io/search?query=http.favicon.hash%3A434126151
296 | https://shodan.io/search?query=http.favicon.hash%3A-435423382
297 | https://shodan.io/search?query=http.favicon.hash%3A-436141080
298 | https://shodan.io/search?query=http.favicon.hash%3A-437002918
299 | https://shodan.io/search?query=http.favicon.hash%3A-437529978
300 | https://shodan.io/search?query=http.favicon.hash%3A437753936
301 | https://shodan.io/search?query=http.favicon.hash%3A438040507
302 | https://shodan.io/search?query=http.favicon.hash%3A440908388
303 | https://shodan.io/search?query=http.favicon.hash%3A441475721
304 | https://shodan.io/search?query=http.favicon.hash%3A-444227112
305 | https://shodan.io/search?query=http.favicon.hash%3A-4444501
306 | https://shodan.io/search?query=http.favicon.hash%3A-445788743
307 | https://shodan.io/search?query=http.favicon.hash%3A446090541
308 | https://shodan.io/search?query=http.favicon.hash%3A-447883503
309 | https://shodan.io/search?query=http.favicon.hash%3A-448869046
310 | https://shodan.io/search?query=http.favicon.hash%3A-450405230
311 | https://shodan.io/search?query=http.favicon.hash%3A450627372
312 | https://shodan.io/search?query=http.favicon.hash%3A-450773806
313 | https://shodan.io/search?query=http.favicon.hash%3A450899026
314 | https://shodan.io/search?query=http.favicon.hash%3A-45145145
315 | https://shodan.io/search?query=http.favicon.hash%3A-454450853
316 | https://shodan.io/search?query=http.favicon.hash%3A45833769
317 | https://shodan.io/search?query=http.favicon.hash%3A-459758212
318 | https://shodan.io/search?query=http.favicon.hash%3A-463147949
319 | https://shodan.io/search?query=http.favicon.hash%3A-463230636
320 | https://shodan.io/search?query=http.favicon.hash%3A-464207645
321 | https://shodan.io/search?query=http.favicon.hash%3A464587962
322 | https://shodan.io/search?query=http.favicon.hash%3A-464777783
323 | https://shodan.io/search?query=http.favicon.hash%3A-465578319
324 | https://shodan.io/search?query=http.favicon.hash%3A465772514
325 | https://shodan.io/search?query=http.favicon.hash%3A-466507653
326 | https://shodan.io/search?query=http.favicon.hash%3A46673403
327 | https://shodan.io/search?query=http.favicon.hash%3A-467479835
328 | https://shodan.io/search?query=http.favicon.hash%3A469645062
329 | https://shodan.io/search?query=http.favicon.hash%3A469970949
330 | https://shodan.io/search?query=http.favicon.hash%3A-470899530
331 | https://shodan.io/search?query=http.favicon.hash%3A-472523225
332 | https://shodan.io/search?query=http.favicon.hash%3A473132242
333 | https://shodan.io/search?query=http.favicon.hash%3A-474215877
334 | https://shodan.io/search?query=http.favicon.hash%3A-475147317
335 | https://shodan.io/search?query=http.favicon.hash%3A-47597126
336 | https://shodan.io/search?query=http.favicon.hash%3A-477438301
337 | https://shodan.io/search?query=http.favicon.hash%3A-479356993
338 | https://shodan.io/search?query=http.favicon.hash%3A479448153
339 | https://shodan.io/search?query=http.favicon.hash%3A-481862135
340 | https://shodan.io/search?query=http.favicon.hash%3A-484688988
341 | https://shodan.io/search?query=http.favicon.hash%3A-485227999
342 | https://shodan.io/search?query=http.favicon.hash%3A-485259099
343 | https://shodan.io/search?query=http.favicon.hash%3A-487331759
344 | https://shodan.io/search?query=http.favicon.hash%3A487597720
345 | https://shodan.io/search?query=http.favicon.hash%3A492290497
346 | https://shodan.io/search?query=http.favicon.hash%3A492674343
347 | https://shodan.io/search?query=http.favicon.hash%3A-495975421
348 | https://shodan.io/search?query=http.favicon.hash%3A497282684
349 | https://shodan.io/search?query=http.favicon.hash%3A-497356161
350 | https://shodan.io/search?query=http.favicon.hash%3A497527120
351 | https://shodan.io/search?query=http.favicon.hash%3A498675945
352 | https://shodan.io/search?query=http.favicon.hash%3A-498882777
353 | https://shodan.io/search?query=http.favicon.hash%3A499417227
354 | https://shodan.io/search?query=http.favicon.hash%3A503408859
355 | https://shodan.io/search?query=http.favicon.hash%3A504559734
356 | https://shodan.io/search?query=http.favicon.hash%3A-505149447
357 | https://shodan.io/search?query=http.favicon.hash%3A505756801
358 | https://shodan.io/search?query=http.favicon.hash%3A-505982372
359 | https://shodan.io/search?query=http.favicon.hash%3A506886426
360 | https://shodan.io/search?query=http.favicon.hash%3A-508148113
361 | https://shodan.io/search?query=http.favicon.hash%3A-50934878
362 | https://shodan.io/search?query=http.favicon.hash%3A509445635
363 | https://shodan.io/search?query=http.favicon.hash%3A-512133740
364 | https://shodan.io/search?query=http.favicon.hash%3A51230130
365 | https://shodan.io/search?query=http.favicon.hash%3A514651551
366 | https://shodan.io/search?query=http.favicon.hash%3A515197025
367 | https://shodan.io/search?query=http.favicon.hash%3A-515970596
368 | https://shodan.io/search?query=http.favicon.hash%3A517285179
369 | https://shodan.io/search?query=http.favicon.hash%3A-519066447
370 | https://shodan.io/search?query=http.favicon.hash%3A520334668
371 | https://shodan.io/search?query=http.favicon.hash%3A-521535441
372 | https://shodan.io/search?query=http.favicon.hash%3A-522232469
373 | https://shodan.io/search?query=http.favicon.hash%3A523068925
374 | https://shodan.io/search?query=http.favicon.hash%3A52314865
375 | https://shodan.io/search?query=http.favicon.hash%3A-52438825
376 | https://shodan.io/search?query=http.favicon.hash%3A-524664233
377 | https://shodan.io/search?query=http.favicon.hash%3A525512585
378 | https://shodan.io/search?query=http.favicon.hash%3A-526552280
379 | https://shodan.io/search?query=http.favicon.hash%3A-526829527
380 | https://shodan.io/search?query=http.favicon.hash%3A527370269
381 | https://shodan.io/search?query=http.favicon.hash%3A-528732929
382 | https://shodan.io/search?query=http.favicon.hash%3A528987824
383 | https://shodan.io/search?query=http.favicon.hash%3A-529532554
384 | https://shodan.io/search?query=http.favicon.hash%3A-530331679
385 | https://shodan.io/search?query=http.favicon.hash%3A-530874707
386 | https://shodan.io/search?query=http.favicon.hash%3A-531001989
387 | https://shodan.io/search?query=http.favicon.hash%3A531366971
388 | https://shodan.io/search?query=http.favicon.hash%3A-531795361
389 | https://shodan.io/search?query=http.favicon.hash%3A53284862
390 | https://shodan.io/search?query=http.favicon.hash%3A-533305438
391 | https://shodan.io/search?query=http.favicon.hash%3A533530131
392 | https://shodan.io/search?query=http.favicon.hash%3A535710329
393 | https://shodan.io/search?query=http.favicon.hash%3A-536161348
394 | https://shodan.io/search?query=http.favicon.hash%3A-538365454
395 | https://shodan.io/search?query=http.favicon.hash%3A538583492
396 | https://shodan.io/search?query=http.favicon.hash%3A541881780
397 | https://shodan.io/search?query=http.favicon.hash%3A541942600
398 | https://shodan.io/search?query=http.favicon.hash%3A-543733905
399 | https://shodan.io/search?query=http.favicon.hash%3A-544521154
400 | https://shodan.io/search?query=http.favicon.hash%3A546042804
401 | https://shodan.io/search?query=http.favicon.hash%3A546820467
402 | https://shodan.io/search?query=http.favicon.hash%3A547941326
403 | https://shodan.io/search?query=http.favicon.hash%3A54806800
404 | https://shodan.io/search?query=http.favicon.hash%3A-548430668
405 | https://shodan.io/search?query=http.favicon.hash%3A549931488
406 | https://shodan.io/search?query=http.favicon.hash%3A550351389
407 | https://shodan.io/search?query=http.favicon.hash%3A552110063
408 | https://shodan.io/search?query=http.favicon.hash%3A-552918165
409 | https://shodan.io/search?query=http.favicon.hash%3A-554365658
410 | https://shodan.io/search?query=http.favicon.hash%3A555209454
411 | https://shodan.io/search?query=http.favicon.hash%3A556010595
412 | https://shodan.io/search?query=http.favicon.hash%3A557327884
413 | https://shodan.io/search?query=http.favicon.hash%3A-557630715
414 | https://shodan.io/search?query=http.favicon.hash%3A559808209
415 | https://shodan.io/search?query=http.favicon.hash%3A560205550
416 | https://shodan.io/search?query=http.favicon.hash%3A561563906
417 | https://shodan.io/search?query=http.favicon.hash%3A562390994
418 | https://shodan.io/search?query=http.favicon.hash%3A562675003
419 | https://shodan.io/search?query=http.favicon.hash%3A56304694
420 | https://shodan.io/search?query=http.favicon.hash%3A563090033
421 | https://shodan.io/search?query=http.favicon.hash%3A-563167993
422 | https://shodan.io/search?query=http.favicon.hash%3A-563462974
423 | https://shodan.io/search?query=http.favicon.hash%3A564030960
424 | https://shodan.io/search?query=http.favicon.hash%3A-564943353
425 | https://shodan.io/search?query=http.favicon.hash%3A56494662
426 | https://shodan.io/search?query=http.favicon.hash%3A-565614645
427 | https://shodan.io/search?query=http.favicon.hash%3A-569996242
428 | https://shodan.io/search?query=http.favicon.hash%3A570688454
429 | https://shodan.io/search?query=http.favicon.hash%3A570881630
430 | https://shodan.io/search?query=http.favicon.hash%3A571936719
431 | https://shodan.io/search?query=http.favicon.hash%3A572074752
432 | https://shodan.io/search?query=http.favicon.hash%3A-572189585
433 | https://shodan.io/search?query=http.favicon.hash%3A573433267
434 | https://shodan.io/search?query=http.favicon.hash%3A575481421
435 | https://shodan.io/search?query=http.favicon.hash%3A575491265
436 | https://shodan.io/search?query=http.favicon.hash%3A-575790689
437 | https://shodan.io/search?query=http.favicon.hash%3A-57801810
438 | https://shodan.io/search?query=http.favicon.hash%3A-578216669
439 | https://shodan.io/search?query=http.favicon.hash%3A-578567091
440 | https://shodan.io/search?query=http.favicon.hash%3A580559524
441 | https://shodan.io/search?query=http.favicon.hash%3A-584977611
442 | https://shodan.io/search?query=http.favicon.hash%3A586564255
443 | https://shodan.io/search?query=http.favicon.hash%3A-58657200
444 | https://shodan.io/search?query=http.favicon.hash%3A587330928
445 | https://shodan.io/search?query=http.favicon.hash%3A588554046
446 | https://shodan.io/search?query=http.favicon.hash%3A592092448
447 | https://shodan.io/search?query=http.favicon.hash%3A-593703736
448 | https://shodan.io/search?query=http.favicon.hash%3A594890578
449 | https://shodan.io/search?query=http.favicon.hash%3A596216411
450 | https://shodan.io/search?query=http.favicon.hash%3A597230358
451 | https://shodan.io/search?query=http.favicon.hash%3A598296063
452 | https://shodan.io/search?query=http.favicon.hash%3A598364992
453 | https://shodan.io/search?query=http.favicon.hash%3A-600407441
454 | https://shodan.io/search?query=http.favicon.hash%3A-601188306
455 | https://shodan.io/search?query=http.favicon.hash%3A601502865
456 | https://shodan.io/search?query=http.favicon.hash%3A-601665621
457 | https://shodan.io/search?query=http.favicon.hash%3A-601917817
458 | https://shodan.io/search?query=http.favicon.hash%3A603014660
459 | https://shodan.io/search?query=http.favicon.hash%3A60503573
460 | https://shodan.io/search?query=http.favicon.hash%3A-605181559
461 | https://shodan.io/search?query=http.favicon.hash%3A605834916
462 | https://shodan.io/search?query=http.favicon.hash%3A606008215
463 | https://shodan.io/search?query=http.favicon.hash%3A-610522624
464 | https://shodan.io/search?query=http.favicon.hash%3A-61082115
465 | https://shodan.io/search?query=http.favicon.hash%3A611241354
466 | https://shodan.io/search?query=http.favicon.hash%3A-612986905
467 | https://shodan.io/search?query=http.favicon.hash%3A-614003677
468 | https://shodan.io/search?query=http.favicon.hash%3A614187882
469 | https://shodan.io/search?query=http.favicon.hash%3A-614262549
470 | https://shodan.io/search?query=http.favicon.hash%3A614996591
471 | https://shodan.io/search?query=http.favicon.hash%3A615065391
472 | https://shodan.io/search?query=http.favicon.hash%3A-615519782
473 | https://shodan.io/search?query=http.favicon.hash%3A-620471079
474 | https://shodan.io/search?query=http.favicon.hash%3A-620512397
475 | https://shodan.io/search?query=http.favicon.hash%3A-620980906
476 | https://shodan.io/search?query=http.favicon.hash%3A-621434476
477 | https://shodan.io/search?query=http.favicon.hash%3A621952877
478 | https://shodan.io/search?query=http.favicon.hash%3A-622171090
479 | https://shodan.io/search?query=http.favicon.hash%3A622478992
480 | https://shodan.io/search?query=http.favicon.hash%3A62334336
481 | https://shodan.io/search?query=http.favicon.hash%3A623744943
482 | https://shodan.io/search?query=http.favicon.hash%3A-624226099
483 | https://shodan.io/search?query=http.favicon.hash%3A-626462482
484 | https://shodan.io/search?query=http.favicon.hash%3A62700279
485 | https://shodan.io/search?query=http.favicon.hash%3A627563844
486 | https://shodan.io/search?query=http.favicon.hash%3A-627711718
487 | https://shodan.io/search?query=http.favicon.hash%3A-629968763
488 | https://shodan.io/search?query=http.favicon.hash%3A632424401
489 | https://shodan.io/search?query=http.favicon.hash%3A-632962789
490 | https://shodan.io/search?query=http.favicon.hash%3A633089150
491 | https://shodan.io/search?query=http.favicon.hash%3A-633108100
492 | https://shodan.io/search?query=http.favicon.hash%3A-633512412
493 | https://shodan.io/search?query=http.favicon.hash%3A-638292089
494 | https://shodan.io/search?query=http.favicon.hash%3A-640111867
495 | https://shodan.io/search?query=http.favicon.hash%3A-640277519
496 | https://shodan.io/search?query=http.favicon.hash%3A640917090
497 | https://shodan.io/search?query=http.favicon.hash%3A642450915
498 | https://shodan.io/search?query=http.favicon.hash%3A643975116
499 | https://shodan.io/search?query=http.favicon.hash%3A-644699444
500 | https://shodan.io/search?query=http.favicon.hash%3A-645923843
501 | https://shodan.io/search?query=http.favicon.hash%3A646127201
502 | https://shodan.io/search?query=http.favicon.hash%3A-646302454
503 | https://shodan.io/search?query=http.favicon.hash%3A-646322113
504 | https://shodan.io/search?query=http.favicon.hash%3A-647318973
505 | https://shodan.io/search?query=http.favicon.hash%3A649861262
506 | https://shodan.io/search?query=http.favicon.hash%3A-650958502
507 | https://shodan.io/search?query=http.favicon.hash%3A-651488739
508 | https://shodan.io/search?query=http.favicon.hash%3A-653169646
509 | https://shodan.io/search?query=http.favicon.hash%3A-653196288
510 | https://shodan.io/search?query=http.favicon.hash%3A653458610
511 | https://shodan.io/search?query=http.favicon.hash%3A-65559863
512 | https://shodan.io/search?query=http.favicon.hash%3A-658146104
513 | https://shodan.io/search?query=http.favicon.hash%3A658325731
514 | https://shodan.io/search?query=http.favicon.hash%3A-659216626
515 | https://shodan.io/search?query=http.favicon.hash%3A659384822
516 | https://shodan.io/search?query=http.favicon.hash%3A659865489
517 | https://shodan.io/search?query=http.favicon.hash%3A659946772
518 | https://shodan.io/search?query=http.favicon.hash%3A-660009047
519 | https://shodan.io/search?query=http.favicon.hash%3A-660306023
520 | https://shodan.io/search?query=http.favicon.hash%3A-660781282
521 | https://shodan.io/search?query=http.favicon.hash%3A-661538815
522 | https://shodan.io/search?query=http.favicon.hash%3A661787921
523 | https://shodan.io/search?query=http.favicon.hash%3A-662184115
524 | https://shodan.io/search?query=http.favicon.hash%3A662709064
525 | https://shodan.io/search?query=http.favicon.hash%3A-664937498
526 | https://shodan.io/search?query=http.favicon.hash%3A665594259
527 | https://shodan.io/search?query=http.favicon.hash%3A-666651264
528 | https://shodan.io/search?query=http.favicon.hash%3A667017222
529 | https://shodan.io/search?query=http.favicon.hash%3A667426507
530 | https://shodan.io/search?query=http.favicon.hash%3A-667466865
531 | https://shodan.io/search?query=http.favicon.hash%3A668633720
532 | https://shodan.io/search?query=http.favicon.hash%3A-668779488
533 | https://shodan.io/search?query=http.favicon.hash%3A-669452529
534 | https://shodan.io/search?query=http.favicon.hash%3A-670682754
535 | https://shodan.io/search?query=http.favicon.hash%3A-672420066
536 | https://shodan.io/search?query=http.favicon.hash%3A673251674
537 | https://shodan.io/search?query=http.favicon.hash%3A-674532093
538 | https://shodan.io/search?query=http.favicon.hash%3A676252820
539 | https://shodan.io/search?query=http.favicon.hash%3A676321865
540 | https://shodan.io/search?query=http.favicon.hash%3A676532651
541 | https://shodan.io/search?query=http.favicon.hash%3A-676623818
542 | https://shodan.io/search?query=http.favicon.hash%3A-676639128
543 | https://shodan.io/search?query=http.favicon.hash%3A-676801484
544 | https://shodan.io/search?query=http.favicon.hash%3A677261371
545 | https://shodan.io/search?query=http.favicon.hash%3A68089769
546 | https://shodan.io/search?query=http.favicon.hash%3A-681127392
547 | https://shodan.io/search?query=http.favicon.hash%3A681906119
548 | https://shodan.io/search?query=http.favicon.hash%3A-682445886
549 | https://shodan.io/search?query=http.favicon.hash%3A683178151
550 | https://shodan.io/search?query=http.favicon.hash%3A683628939
551 | https://shodan.io/search?query=http.favicon.hash%3A684878625
552 | https://shodan.io/search?query=http.favicon.hash%3A686638618
553 | https://shodan.io/search?query=http.favicon.hash%3A689534064
554 | https://shodan.io/search?query=http.favicon.hash%3A68965530
555 | https://shodan.io/search?query=http.favicon.hash%3A689997596
556 | https://shodan.io/search?query=http.favicon.hash%3A-692512453
557 | https://shodan.io/search?query=http.favicon.hash%3A694761972
558 | https://shodan.io/search?query=http.favicon.hash%3A695518217
559 | https://shodan.io/search?query=http.favicon.hash%3A696766540
560 | https://shodan.io/search?query=http.favicon.hash%3A-699604539
561 | https://shodan.io/search?query=http.favicon.hash%3A700042356
562 | https://shodan.io/search?query=http.favicon.hash%3A70447700
563 | https://shodan.io/search?query=http.favicon.hash%3A70633825
564 | https://shodan.io/search?query=http.favicon.hash%3A706734148
565 | https://shodan.io/search?query=http.favicon.hash%3A707325024
566 | https://shodan.io/search?query=http.favicon.hash%3A707472956
567 | https://shodan.io/search?query=http.favicon.hash%3A708473992
568 | https://shodan.io/search?query=http.favicon.hash%3A-709611873
569 | https://shodan.io/search?query=http.favicon.hash%3A711491567
570 | https://shodan.io/search?query=http.favicon.hash%3A712557619
571 | https://shodan.io/search?query=http.favicon.hash%3A-715468141
572 | https://shodan.io/search?query=http.favicon.hash%3A715635529
573 | https://shodan.io/search?query=http.favicon.hash%3A717962889
574 | https://shodan.io/search?query=http.favicon.hash%3A-720320459
575 | https://shodan.io/search?query=http.favicon.hash%3A-721470435
576 | https://shodan.io/search?query=http.favicon.hash%3A-721527986
577 | https://shodan.io/search?query=http.favicon.hash%3A-722702546
578 | https://shodan.io/search?query=http.favicon.hash%3A724438296
579 | https://shodan.io/search?query=http.favicon.hash%3A-725636930
580 | https://shodan.io/search?query=http.favicon.hash%3A-725768471
581 | https://shodan.io/search?query=http.favicon.hash%3A726992328
582 | https://shodan.io/search?query=http.favicon.hash%3A-727382319
583 | https://shodan.io/search?query=http.favicon.hash%3A-727619699
584 | https://shodan.io/search?query=http.favicon.hash%3A728685175
585 | https://shodan.io/search?query=http.favicon.hash%3A728775631
586 | https://shodan.io/search?query=http.favicon.hash%3A-734144237
587 | https://shodan.io/search?query=http.favicon.hash%3A734213573
588 | https://shodan.io/search?query=http.favicon.hash%3A734262293
589 | https://shodan.io/search?query=http.favicon.hash%3A-734781815
590 | https://shodan.io/search?query=http.favicon.hash%3A735081481
591 | https://shodan.io/search?query=http.favicon.hash%3A73555878
592 | https://shodan.io/search?query=http.favicon.hash%3A-736199086
593 | https://shodan.io/search?query=http.favicon.hash%3A-736804094
594 | https://shodan.io/search?query=http.favicon.hash%3A-737429616
595 | https://shodan.io/search?query=http.favicon.hash%3A-737834088
596 | https://shodan.io/search?query=http.favicon.hash%3A-73901357
597 | https://shodan.io/search?query=http.favicon.hash%3A739801466
598 | https://shodan.io/search?query=http.favicon.hash%3A-741058468
599 | https://shodan.io/search?query=http.favicon.hash%3A-741491222
600 | https://shodan.io/search?query=http.favicon.hash%3A743764488
601 | https://shodan.io/search?query=http.favicon.hash%3A-744567865
602 | https://shodan.io/search?query=http.favicon.hash%3A746882768
603 | https://shodan.io/search?query=http.favicon.hash%3A747413665
604 | https://shodan.io/search?query=http.favicon.hash%3A748267247
605 | https://shodan.io/search?query=http.favicon.hash%3A-748267266
606 | https://shodan.io/search?query=http.favicon.hash%3A-749942143
607 | https://shodan.io/search?query=http.favicon.hash%3A750332698
608 | https://shodan.io/search?query=http.favicon.hash%3A75392360
609 | https://shodan.io/search?query=http.favicon.hash%3A758760684
610 | https://shodan.io/search?query=http.favicon.hash%3A-759738305
611 | https://shodan.io/search?query=http.favicon.hash%3A-76498246
612 | https://shodan.io/search?query=http.favicon.hash%3A766268546
613 | https://shodan.io/search?query=http.favicon.hash%3A-766696303
614 | https://shodan.io/search?query=http.favicon.hash%3A768326388
615 | https://shodan.io/search?query=http.favicon.hash%3A769178943
616 | https://shodan.io/search?query=http.favicon.hash%3A-7700528
617 | https://shodan.io/search?query=http.favicon.hash%3A772273815
618 | https://shodan.io/search?query=http.favicon.hash%3A-777317900
619 | https://shodan.io/search?query=http.favicon.hash%3A778274090
620 | https://shodan.io/search?query=http.favicon.hash%3A7789801
621 | https://shodan.io/search?query=http.favicon.hash%3A779007919
622 | https://shodan.io/search?query=http.favicon.hash%3A780217805
623 | https://shodan.io/search?query=http.favicon.hash%3A780476387
624 | https://shodan.io/search?query=http.favicon.hash%3A-781711730
625 | https://shodan.io/search?query=http.favicon.hash%3A781922099
626 | https://shodan.io/search?query=http.favicon.hash%3A-782495286
627 | https://shodan.io/search?query=http.favicon.hash%3A783813256
628 | https://shodan.io/search?query=http.favicon.hash%3A-784701567
629 | https://shodan.io/search?query=http.favicon.hash%3A-78510704
630 | https://shodan.io/search?query=http.favicon.hash%3A-785381255
631 | https://shodan.io/search?query=http.favicon.hash%3A785481277
632 | https://shodan.io/search?query=http.favicon.hash%3A785689986
633 | https://shodan.io/search?query=http.favicon.hash%3A785826433
634 | https://shodan.io/search?query=http.favicon.hash%3A788525476
635 | https://shodan.io/search?query=http.favicon.hash%3A79209533
636 | https://shodan.io/search?query=http.favicon.hash%3A794145994
637 | https://shodan.io/search?query=http.favicon.hash%3A-794505895
638 | https://shodan.io/search?query=http.favicon.hash%3A797587958
639 | https://shodan.io/search?query=http.favicon.hash%3A-798679714
640 | https://shodan.io/search?query=http.favicon.hash%3A-799972952
641 | https://shodan.io/search?query=http.favicon.hash%3A-800060828
642 | https://shodan.io/search?query=http.favicon.hash%3A-801497839
643 | https://shodan.io/search?query=http.favicon.hash%3A801748283
644 | https://shodan.io/search?query=http.favicon.hash%3A-802964362
645 | https://shodan.io/search?query=http.favicon.hash%3A804567818
646 | https://shodan.io/search?query=http.favicon.hash%3A805988264
647 | https://shodan.io/search?query=http.favicon.hash%3A809250535
648 | https://shodan.io/search?query=http.favicon.hash%3A809512686
649 | https://shodan.io/search?query=http.favicon.hash%3A811185164
650 | https://shodan.io/search?query=http.favicon.hash%3A-811303201
651 | https://shodan.io/search?query=http.favicon.hash%3A811868221
652 | https://shodan.io/search?query=http.favicon.hash%3A811950545
653 | https://shodan.io/search?query=http.favicon.hash%3A-812207762
654 | https://shodan.io/search?query=http.favicon.hash%3A81316656
655 | https://shodan.io/search?query=http.favicon.hash%3A-814971863
656 | https://shodan.io/search?query=http.favicon.hash%3A815049873
657 | https://shodan.io/search?query=http.favicon.hash%3A-81573405
658 | https://shodan.io/search?query=http.favicon.hash%3A819061176
659 | https://shodan.io/search?query=http.favicon.hash%3A820812202
660 | https://shodan.io/search?query=http.favicon.hash%3A-821871504
661 | https://shodan.io/search?query=http.favicon.hash%3A-823586955
662 | https://shodan.io/search?query=http.favicon.hash%3A-824418064
663 | https://shodan.io/search?query=http.favicon.hash%3A824580113
664 | https://shodan.io/search?query=http.favicon.hash%3A824795781
665 | https://shodan.io/search?query=http.favicon.hash%3A824976804
666 | https://shodan.io/search?query=http.favicon.hash%3A825767714
667 | https://shodan.io/search?query=http.favicon.hash%3A826951121
668 | https://shodan.io/search?query=http.favicon.hash%3A-827143180
669 | https://shodan.io/search?query=http.favicon.hash%3A827830640
670 | https://shodan.io/search?query=http.favicon.hash%3A828423215
671 | https://shodan.io/search?query=http.favicon.hash%3A-830586692
672 | https://shodan.io/search?query=http.favicon.hash%3A831854882
673 | https://shodan.io/search?query=http.favicon.hash%3A833104563
674 | https://shodan.io/search?query=http.favicon.hash%3A834091382
675 | https://shodan.io/search?query=http.favicon.hash%3A839662529
676 | https://shodan.io/search?query=http.favicon.hash%3A842015223
677 | https://shodan.io/search?query=http.favicon.hash%3A-842852785
678 | https://shodan.io/search?query=http.favicon.hash%3A843082316
679 | https://shodan.io/search?query=http.favicon.hash%3A843498786
680 | https://shodan.io/search?query=http.favicon.hash%3A-843664867
681 | https://shodan.io/search?query=http.favicon.hash%3A-847336917
682 | https://shodan.io/search?query=http.favicon.hash%3A-853391985
683 | https://shodan.io/search?query=http.favicon.hash%3A854283218
684 | https://shodan.io/search?query=http.favicon.hash%3A-855706839
685 | https://shodan.io/search?query=http.favicon.hash%3A856038736
686 | https://shodan.io/search?query=http.favicon.hash%3A856048515
687 | https://shodan.io/search?query=http.favicon.hash%3A857371519
688 | https://shodan.io/search?query=http.favicon.hash%3A-857956556
689 | https://shodan.io/search?query=http.favicon.hash%3A86060788
690 | https://shodan.io/search?query=http.favicon.hash%3A-862246819
691 | https://shodan.io/search?query=http.favicon.hash%3A865837966
692 | https://shodan.io/search?query=http.favicon.hash%3A-866527051
693 | https://shodan.io/search?query=http.favicon.hash%3A868509217
694 | https://shodan.io/search?query=http.favicon.hash%3A869377142
695 | https://shodan.io/search?query=http.favicon.hash%3A-870706442
696 | https://shodan.io/search?query=http.favicon.hash%3A-871136382
697 | https://shodan.io/search?query=http.favicon.hash%3A871686328
698 | https://shodan.io/search?query=http.favicon.hash%3A-872342057
699 | https://shodan.io/search?query=http.favicon.hash%3A-87272846
700 | https://shodan.io/search?query=http.favicon.hash%3A873455574
701 | https://shodan.io/search?query=http.favicon.hash%3A-874050015
702 | https://shodan.io/search?query=http.favicon.hash%3A-87451947
703 | https://shodan.io/search?query=http.favicon.hash%3A874829332
704 | https://shodan.io/search?query=http.favicon.hash%3A-878316862
705 | https://shodan.io/search?query=http.favicon.hash%3A-879846992
706 | https://shodan.io/search?query=http.favicon.hash%3A-880319982
707 | https://shodan.io/search?query=http.favicon.hash%3A880591404
708 | https://shodan.io/search?query=http.favicon.hash%3A-882369391
709 | https://shodan.io/search?query=http.favicon.hash%3A-883090611
710 | https://shodan.io/search?query=http.favicon.hash%3A884318586
711 | https://shodan.io/search?query=http.favicon.hash%3A-884428650
712 | https://shodan.io/search?query=http.favicon.hash%3A889464688
713 | https://shodan.io/search?query=http.favicon.hash%3A-889480488
714 | https://shodan.io/search?query=http.favicon.hash%3A-894432457
715 | https://shodan.io/search?query=http.favicon.hash%3A89931604
716 | https://shodan.io/search?query=http.favicon.hash%3A899320116
717 | https://shodan.io/search?query=http.favicon.hash%3A-905580600
718 | https://shodan.io/search?query=http.favicon.hash%3A-907297847
719 | https://shodan.io/search?query=http.favicon.hash%3A908188511
720 | https://shodan.io/search?query=http.favicon.hash%3A-908445132
721 | https://shodan.io/search?query=http.favicon.hash%3A908810411
722 | https://shodan.io/search?query=http.favicon.hash%3A909536006
723 | https://shodan.io/search?query=http.favicon.hash%3A-910306576
724 | https://shodan.io/search?query=http.favicon.hash%3A-911494769
725 | https://shodan.io/search?query=http.favicon.hash%3A-912597042
726 | https://shodan.io/search?query=http.favicon.hash%3A913203420
727 | https://shodan.io/search?query=http.favicon.hash%3A913947100
728 | https://shodan.io/search?query=http.favicon.hash%3A917023356
729 | https://shodan.io/search?query=http.favicon.hash%3A917039750
730 | https://shodan.io/search?query=http.favicon.hash%3A918078750
731 | https://shodan.io/search?query=http.favicon.hash%3A926745382
732 | https://shodan.io/search?query=http.favicon.hash%3A926939606
733 | https://shodan.io/search?query=http.favicon.hash%3A-92723156
734 | https://shodan.io/search?query=http.favicon.hash%3A-927923449
735 | https://shodan.io/search?query=http.favicon.hash%3A930969993
736 | https://shodan.io/search?query=http.favicon.hash%3A-933245036
737 | https://shodan.io/search?query=http.favicon.hash%3A933976300
738 | https://shodan.io/search?query=http.favicon.hash%3A93664432
739 | https://shodan.io/search?query=http.favicon.hash%3A93750077
740 | https://shodan.io/search?query=http.favicon.hash%3A-937706392
741 | https://shodan.io/search?query=http.favicon.hash%3A-937763738
742 | https://shodan.io/search?query=http.favicon.hash%3A940098669
743 | https://shodan.io/search?query=http.favicon.hash%3A940899682
744 | https://shodan.io/search?query=http.favicon.hash%3A944466895
745 | https://shodan.io/search?query=http.favicon.hash%3A945536415
746 | https://shodan.io/search?query=http.favicon.hash%3A948054189
747 | https://shodan.io/search?query=http.favicon.hash%3A948684587
748 | https://shodan.io/search?query=http.favicon.hash%3A949485285
749 | https://shodan.io/search?query=http.favicon.hash%3A949619819
750 | https://shodan.io/search?query=http.favicon.hash%3A95020227
751 | https://shodan.io/search?query=http.favicon.hash%3A-950408099
752 | https://shodan.io/search?query=http.favicon.hash%3A-950790147
753 | https://shodan.io/search?query=http.favicon.hash%3A-951636338
754 | https://shodan.io/search?query=http.favicon.hash%3A-951710301
755 | https://shodan.io/search?query=http.favicon.hash%3A952114270
756 | https://shodan.io/search?query=http.favicon.hash%3A952729794
757 | https://shodan.io/search?query=http.favicon.hash%3A952908305
758 | https://shodan.io/search?query=http.favicon.hash%3A-953655780
759 | https://shodan.io/search?query=http.favicon.hash%3A-954617359
760 | https://shodan.io/search?query=http.favicon.hash%3A-954752075
761 | https://shodan.io/search?query=http.favicon.hash%3A-954931144
762 | https://shodan.io/search?query=http.favicon.hash%3A-955536579
763 | https://shodan.io/search?query=http.favicon.hash%3A955542407
764 | https://shodan.io/search?query=http.favicon.hash%3A-955804297
765 | https://shodan.io/search?query=http.favicon.hash%3A956507895
766 | https://shodan.io/search?query=http.favicon.hash%3A-956861224
767 | https://shodan.io/search?query=http.favicon.hash%3A957255151
768 | https://shodan.io/search?query=http.favicon.hash%3A958636481
769 | https://shodan.io/search?query=http.favicon.hash%3A-958801415
770 | https://shodan.io/search?query=http.favicon.hash%3A960250052
771 | https://shodan.io/search?query=http.favicon.hash%3A-961170017
772 | https://shodan.io/search?query=http.favicon.hash%3A-962257523
773 | https://shodan.io/search?query=http.favicon.hash%3A962409295
774 | https://shodan.io/search?query=http.favicon.hash%3A963309512
775 | https://shodan.io/search?query=http.favicon.hash%3A-964906040
776 | https://shodan.io/search?query=http.favicon.hash%3A96529132
777 | https://shodan.io/search?query=http.favicon.hash%3A965982073
778 | https://shodan.io/search?query=http.favicon.hash%3A96676581
779 | https://shodan.io/search?query=http.favicon.hash%3A967237228
780 | https://shodan.io/search?query=http.favicon.hash%3A96780829
781 | https://shodan.io/search?query=http.favicon.hash%3A969044289
782 | https://shodan.io/search?query=http.favicon.hash%3A-969164580
783 | https://shodan.io/search?query=http.favicon.hash%3A-969356772
784 | https://shodan.io/search?query=http.favicon.hash%3A969374472
785 | https://shodan.io/search?query=http.favicon.hash%3A97040601
786 | https://shodan.io/search?query=http.favicon.hash%3A970842691
787 | https://shodan.io/search?query=http.favicon.hash%3A973393032
788 | https://shodan.io/search?query=http.favicon.hash%3A-973686952
789 | https://shodan.io/search?query=http.favicon.hash%3A973962626
790 | https://shodan.io/search?query=http.favicon.hash%3A-973967843
791 | https://shodan.io/search?query=http.favicon.hash%3A-975055504
792 | https://shodan.io/search?query=http.favicon.hash%3A975625564
793 | https://shodan.io/search?query=http.favicon.hash%3A-976840749
794 | https://shodan.io/search?query=http.favicon.hash%3A-976987789
795 | https://shodan.io/search?query=http.favicon.hash%3A-977323269
796 | https://shodan.io/search?query=http.favicon.hash%3A977726833
797 | https://shodan.io/search?query=http.favicon.hash%3A-978455095
798 | https://shodan.io/search?query=http.favicon.hash%3A978514697
799 | https://shodan.io/search?query=http.favicon.hash%3A-980411143
800 | https://shodan.io/search?query=http.favicon.hash%3A-982116487
801 | https://shodan.io/search?query=http.favicon.hash%3A983455647
802 | https://shodan.io/search?query=http.favicon.hash%3A984279902
803 | https://shodan.io/search?query=http.favicon.hash%3A991466774
804 | https://shodan.io/search?query=http.favicon.hash%3A99184871
805 | https://shodan.io/search?query=http.favicon.hash%3A-993213697
806 | https://shodan.io/search?query=http.favicon.hash%3A-994374986
--------------------------------------------------------------------------------
/scripts/nuclei-templates-favicon.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 | #
3 | # https://github.com/edoardottt/favirecon
4 | #
5 | # This script collects favicon hashes from the
6 | # ProjectDiscovery/nuclei-templates GitHub repository.
7 | #
8 |
9 | import os
10 | import yaml
11 |
12 |
13 | # ----- retreive all nuclei templates -----
14 | nuclei_templates_path = os.getenv("HOME") + "/nuclei-templates"
15 |
16 | templates = [
17 | os.path.join(dp, f)
18 | for dp, dn, filenames in os.walk(nuclei_templates_path)
19 | for f in filenames
20 | if os.path.splitext(f)[1] == ".yaml"
21 | ]
22 |
23 |
24 | # ----- scan all nuclei templates -----
25 | for template in templates:
26 | with open(template, "r") as f:
27 | content = yaml.safe_load(f)
28 | if "metadata" in content["info"]:
29 | if "shodan-query" in content["info"]["metadata"]:
30 | if "favicon.hash" in content["info"]["metadata"]["shodan-query"]:
31 | shodan_query = content["info"]["metadata"]["shodan-query"]
32 | parts = shodan_query.split(":")
33 | for part in parts:
34 | if part.isnumeric() or part[0] == "-":
35 | if "product" in content["info"]["metadata"]:
36 | print(
37 | part + " " + content["info"]["metadata"]["product"]
38 | )
39 | else:
40 | print(
41 | "https://www.shodan.io/search?query=http.favicon.hash%3A"
42 | + part
43 | )
44 |
--------------------------------------------------------------------------------
/snapcraft.yaml:
--------------------------------------------------------------------------------
1 | name: favirecon
2 | summary: Use favicon.ico to improve your target recon phase
3 | description: |
4 | Use favicon.ico to improve your target recon phase.
5 | Quickly detect technologies, WAF, exposed panels, known services.
6 | version: 1.0.0
7 | grade: stable
8 | base: core20
9 |
10 | confinement: strict
11 |
12 | apps:
13 | favirecon:
14 | command: bin/favirecon
15 | plugs:
16 | - home
17 | - network
18 |
19 | parts:
20 | favirecon:
21 | plugin: go
22 | source-type: git
23 | source: https://github.com/edoardottt/favirecon
24 |
--------------------------------------------------------------------------------