Spaces:
Runtime error
Runtime error
domain_tools_rod (#5)
Browse files- build: update dependencies (1c6e88d9c66188ba8c0defe1ef75a86fa55a21b8)
- feat: add tools and interfaces to inspect domains (dc8fed07898d310f9ae83f65cdb1a3a47f559832)
- feat: add tools (1fbf466dca5c9cc8729ccc9633828e679b1d9848)
- feat: add tools to app (35aff7c1b7c710519a5d82c8cf86adba26f2fb3a)
- Merge branch 'main' into pr/5 (e7e6c15215589f9c781732dc0dbffe1fb84e7868)
Co-authored-by: Rodrigo Domínguez Sanz <[email protected]>
- app.py +10 -0
- pyproject.toml +1 -0
- requirements-dev.txt +200 -0
- requirements.txt +151 -23
- subdomains/subdomains.txt +999 -0
- tdagent/tools/get_domain_information.py +334 -0
- uv.lock +0 -0
app.py
CHANGED
@@ -2,6 +2,12 @@ from typing import NamedTuple
|
|
2 |
|
3 |
import gradio as gr
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
from tdagent.tools.get_url_content import gr_get_url_http_content
|
6 |
from tdagent.tools.internal_company_user_search import gr_internal_company
|
7 |
from tdagent.tools.lookup_company_cloud_account_information import (
|
@@ -33,6 +39,10 @@ TOOLS = (
|
|
33 |
# ToolInfo("Query WHOIS", gr_query_whois),
|
34 |
ToolInfo("Query RDAP", gr_query_rdap),
|
35 |
ToolInfo("Virus Total URL info", gr_virus_total_url_info),
|
|
|
|
|
|
|
|
|
36 |
## Fake tools
|
37 |
ToolInfo("Fake company directory", gr_internal_company),
|
38 |
ToolInfo(
|
|
|
2 |
|
3 |
import gradio as gr
|
4 |
|
5 |
+
from tdagent.tools.get_domain_information import (
|
6 |
+
dns_enumeration_tool,
|
7 |
+
extractor_of_ioc_from_threatfox_tool,
|
8 |
+
geo_location_tool,
|
9 |
+
scrap_subdomains_tool,
|
10 |
+
)
|
11 |
from tdagent.tools.get_url_content import gr_get_url_http_content
|
12 |
from tdagent.tools.internal_company_user_search import gr_internal_company
|
13 |
from tdagent.tools.lookup_company_cloud_account_information import (
|
|
|
39 |
# ToolInfo("Query WHOIS", gr_query_whois),
|
40 |
ToolInfo("Query RDAP", gr_query_rdap),
|
41 |
ToolInfo("Virus Total URL info", gr_virus_total_url_info),
|
42 |
+
ToolInfo("Get IP's Location", geo_location_tool),
|
43 |
+
ToolInfo("DNS Enumerator", dns_enumeration_tool),
|
44 |
+
ToolInfo("Subdomain Retriever", scrap_subdomains_tool),
|
45 |
+
ToolInfo("Extractor of IoCs", extractor_of_ioc_from_threatfox_tool),
|
46 |
## Fake tools
|
47 |
ToolInfo("Fake company directory", gr_internal_company),
|
48 |
ToolInfo(
|
pyproject.toml
CHANGED
@@ -14,6 +14,7 @@ readme = "README.md"
|
|
14 |
license = ""
|
15 |
dependencies = [
|
16 |
"cachetools>=6.0.0",
|
|
|
17 |
"gradio[mcp]>=5.32.1",
|
18 |
"python-whois>=0.9.5",
|
19 |
"requests>=2.32.3",
|
|
|
14 |
license = ""
|
15 |
dependencies = [
|
16 |
"cachetools>=6.0.0",
|
17 |
+
"dnspython>=2.7.0",
|
18 |
"gradio[mcp]>=5.32.1",
|
19 |
"python-whois>=0.9.5",
|
20 |
"requests>=2.32.3",
|
requirements-dev.txt
CHANGED
@@ -1,109 +1,309 @@
|
|
1 |
# This file was autogenerated by uv via the following command:
|
2 |
# uv export --format requirements-txt --no-hashes --group dev --group test -o requirements-dev.txt
|
3 |
aiofiles==24.1.0
|
|
|
|
|
|
|
4 |
aiohappyeyeballs==2.6.1
|
|
|
5 |
aiohttp==3.12.8
|
|
|
6 |
aiosignal==1.3.2
|
|
|
7 |
annotated-types==0.7.0
|
|
|
8 |
anyio==4.9.0
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
async-timeout==5.0.1 ; python_full_version < '3.11'
|
|
|
10 |
attrs==25.3.0
|
|
|
11 |
audioop-lts==0.2.1 ; python_full_version >= '3.13'
|
|
|
12 |
boolean-py==5.0
|
|
|
13 |
cachecontrol==0.14.3
|
|
|
14 |
cachetools==6.0.0
|
|
|
15 |
certifi==2025.4.26
|
|
|
|
|
|
|
|
|
16 |
cfgv==3.4.0
|
|
|
17 |
charset-normalizer==3.4.2
|
|
|
18 |
click==8.2.1 ; sys_platform != 'emscripten'
|
|
|
|
|
|
|
19 |
colorama==0.4.6 ; sys_platform == 'win32'
|
|
|
|
|
|
|
|
|
20 |
coverage==7.8.2
|
|
|
21 |
cyclonedx-python-lib==9.1.0
|
|
|
22 |
defusedxml==0.7.1
|
|
|
23 |
distlib==0.3.9
|
|
|
|
|
|
|
24 |
exceptiongroup==1.3.0 ; python_full_version < '3.11'
|
|
|
|
|
|
|
25 |
fastapi==0.115.12
|
|
|
26 |
ffmpy==0.6.0
|
|
|
27 |
filelock==3.18.0
|
|
|
|
|
|
|
|
|
28 |
frozenlist==1.6.2
|
|
|
|
|
|
|
29 |
fsspec==2025.5.1
|
|
|
|
|
|
|
30 |
gradio==5.32.1
|
|
|
31 |
gradio-client==1.10.2
|
|
|
32 |
groovy==0.1.2
|
|
|
33 |
h11==0.16.0
|
|
|
|
|
|
|
34 |
hf-xet==1.1.2 ; platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'
|
|
|
35 |
httpcore==1.0.9
|
|
|
36 |
httpx==0.28.1
|
|
|
|
|
|
|
|
|
|
|
37 |
httpx-sse==0.4.0
|
|
|
38 |
huggingface-hub==0.32.4
|
|
|
|
|
|
|
39 |
identify==2.6.12
|
|
|
40 |
idna==3.10
|
|
|
|
|
|
|
|
|
|
|
41 |
iniconfig==2.1.0
|
|
|
42 |
jinja2==3.1.6
|
|
|
43 |
license-expression==30.4.1
|
|
|
44 |
markdown-it-py==3.0.0
|
|
|
45 |
markupsafe==3.0.2
|
|
|
|
|
|
|
46 |
mcp==1.9.0
|
|
|
47 |
mdurl==0.1.2
|
|
|
48 |
msgpack==1.1.0
|
|
|
49 |
multidict==6.4.4
|
|
|
|
|
|
|
50 |
mypy==1.16.0
|
51 |
mypy-extensions==1.1.0
|
|
|
52 |
nodeenv==1.9.1
|
|
|
53 |
numpy==2.2.6
|
|
|
|
|
|
|
54 |
orjson==3.10.18
|
|
|
55 |
packageurl-python==0.16.0
|
|
|
56 |
packaging==25.0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
pandas==2.2.3
|
|
|
58 |
pathspec==0.12.1
|
|
|
59 |
pillow==11.2.1
|
|
|
60 |
pip==25.1.1
|
|
|
61 |
pip-api==0.0.34
|
|
|
62 |
pip-audit==2.9.0
|
63 |
pip-requirements-parser==32.0.1
|
|
|
64 |
platformdirs==4.3.8
|
|
|
|
|
|
|
65 |
pluggy==1.6.0
|
|
|
66 |
pre-commit==3.8.0
|
67 |
propcache==0.3.1
|
|
|
|
|
|
|
68 |
py-serializable==2.0.0
|
|
|
69 |
pydantic==2.11.5
|
|
|
|
|
|
|
|
|
|
|
70 |
pydantic-core==2.33.2
|
|
|
71 |
pydantic-settings==2.9.1
|
|
|
72 |
pydub==0.25.1
|
|
|
73 |
pygments==2.19.1
|
|
|
74 |
pyparsing==3.2.3
|
|
|
75 |
pytest==7.4.4
|
|
|
|
|
|
|
76 |
pytest-cov==4.1.0
|
77 |
pytest-randomly==3.16.0
|
78 |
python-dateutil==2.9.0.post0
|
|
|
|
|
|
|
79 |
python-dotenv==1.1.0
|
|
|
80 |
python-multipart==0.0.20
|
|
|
|
|
|
|
81 |
python-whois==0.9.5
|
|
|
82 |
pytz==2025.2
|
|
|
83 |
pyyaml==6.0.2
|
|
|
|
|
|
|
|
|
84 |
requests==2.32.3
|
|
|
|
|
|
|
|
|
|
|
85 |
rich==14.0.0
|
|
|
|
|
|
|
86 |
ruff==0.11.12
|
|
|
87 |
safehttpx==0.1.6
|
|
|
88 |
semantic-version==2.10.0
|
|
|
89 |
shellingham==1.5.4 ; sys_platform != 'emscripten'
|
|
|
90 |
six==1.17.0
|
|
|
91 |
sniffio==1.3.1
|
|
|
92 |
sortedcontainers==2.4.0
|
|
|
93 |
sse-starlette==2.3.6
|
|
|
94 |
starlette==0.46.2
|
|
|
|
|
|
|
|
|
95 |
toml==0.10.2
|
|
|
96 |
tomli==2.2.1 ; python_full_version <= '3.11'
|
|
|
|
|
|
|
|
|
97 |
tomlkit==0.13.2
|
|
|
98 |
tqdm==4.67.1
|
|
|
99 |
typer==0.16.0 ; sys_platform != 'emscripten'
|
|
|
100 |
typing-extensions==4.14.0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
typing-inspection==0.4.1
|
|
|
|
|
|
|
102 |
tzdata==2025.2
|
|
|
103 |
urllib3==2.4.0
|
|
|
|
|
|
|
104 |
uvicorn==0.34.3 ; sys_platform != 'emscripten'
|
|
|
|
|
|
|
105 |
virtualenv==20.31.2
|
|
|
106 |
vt-py==0.21.0
|
|
|
107 |
websockets==15.0.1
|
|
|
108 |
xdoctest==1.2.0
|
109 |
yarl==1.20.0
|
|
|
|
1 |
# This file was autogenerated by uv via the following command:
|
2 |
# uv export --format requirements-txt --no-hashes --group dev --group test -o requirements-dev.txt
|
3 |
aiofiles==24.1.0
|
4 |
+
# via
|
5 |
+
# gradio
|
6 |
+
# vt-py
|
7 |
aiohappyeyeballs==2.6.1
|
8 |
+
# via aiohttp
|
9 |
aiohttp==3.12.8
|
10 |
+
# via vt-py
|
11 |
aiosignal==1.3.2
|
12 |
+
# via aiohttp
|
13 |
annotated-types==0.7.0
|
14 |
+
# via pydantic
|
15 |
anyio==4.9.0
|
16 |
+
# via
|
17 |
+
# gradio
|
18 |
+
# httpx
|
19 |
+
# mcp
|
20 |
+
# sse-starlette
|
21 |
+
# starlette
|
22 |
async-timeout==5.0.1 ; python_full_version < '3.11'
|
23 |
+
# via aiohttp
|
24 |
attrs==25.3.0
|
25 |
+
# via aiohttp
|
26 |
audioop-lts==0.2.1 ; python_full_version >= '3.13'
|
27 |
+
# via gradio
|
28 |
boolean-py==5.0
|
29 |
+
# via license-expression
|
30 |
cachecontrol==0.14.3
|
31 |
+
# via pip-audit
|
32 |
cachetools==6.0.0
|
33 |
+
# via tdagent
|
34 |
certifi==2025.4.26
|
35 |
+
# via
|
36 |
+
# httpcore
|
37 |
+
# httpx
|
38 |
+
# requests
|
39 |
cfgv==3.4.0
|
40 |
+
# via pre-commit
|
41 |
charset-normalizer==3.4.2
|
42 |
+
# via requests
|
43 |
click==8.2.1 ; sys_platform != 'emscripten'
|
44 |
+
# via
|
45 |
+
# typer
|
46 |
+
# uvicorn
|
47 |
colorama==0.4.6 ; sys_platform == 'win32'
|
48 |
+
# via
|
49 |
+
# click
|
50 |
+
# pytest
|
51 |
+
# tqdm
|
52 |
coverage==7.8.2
|
53 |
+
# via pytest-cov
|
54 |
cyclonedx-python-lib==9.1.0
|
55 |
+
# via pip-audit
|
56 |
defusedxml==0.7.1
|
57 |
+
# via py-serializable
|
58 |
distlib==0.3.9
|
59 |
+
# via virtualenv
|
60 |
+
dnspython==2.7.0
|
61 |
+
# via tdagent
|
62 |
exceptiongroup==1.3.0 ; python_full_version < '3.11'
|
63 |
+
# via
|
64 |
+
# anyio
|
65 |
+
# pytest
|
66 |
fastapi==0.115.12
|
67 |
+
# via gradio
|
68 |
ffmpy==0.6.0
|
69 |
+
# via gradio
|
70 |
filelock==3.18.0
|
71 |
+
# via
|
72 |
+
# cachecontrol
|
73 |
+
# huggingface-hub
|
74 |
+
# virtualenv
|
75 |
frozenlist==1.6.2
|
76 |
+
# via
|
77 |
+
# aiohttp
|
78 |
+
# aiosignal
|
79 |
fsspec==2025.5.1
|
80 |
+
# via
|
81 |
+
# gradio-client
|
82 |
+
# huggingface-hub
|
83 |
gradio==5.32.1
|
84 |
+
# via tdagent
|
85 |
gradio-client==1.10.2
|
86 |
+
# via gradio
|
87 |
groovy==0.1.2
|
88 |
+
# via gradio
|
89 |
h11==0.16.0
|
90 |
+
# via
|
91 |
+
# httpcore
|
92 |
+
# uvicorn
|
93 |
hf-xet==1.1.2 ; platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'
|
94 |
+
# via huggingface-hub
|
95 |
httpcore==1.0.9
|
96 |
+
# via httpx
|
97 |
httpx==0.28.1
|
98 |
+
# via
|
99 |
+
# gradio
|
100 |
+
# gradio-client
|
101 |
+
# mcp
|
102 |
+
# safehttpx
|
103 |
httpx-sse==0.4.0
|
104 |
+
# via mcp
|
105 |
huggingface-hub==0.32.4
|
106 |
+
# via
|
107 |
+
# gradio
|
108 |
+
# gradio-client
|
109 |
identify==2.6.12
|
110 |
+
# via pre-commit
|
111 |
idna==3.10
|
112 |
+
# via
|
113 |
+
# anyio
|
114 |
+
# httpx
|
115 |
+
# requests
|
116 |
+
# yarl
|
117 |
iniconfig==2.1.0
|
118 |
+
# via pytest
|
119 |
jinja2==3.1.6
|
120 |
+
# via gradio
|
121 |
license-expression==30.4.1
|
122 |
+
# via cyclonedx-python-lib
|
123 |
markdown-it-py==3.0.0
|
124 |
+
# via rich
|
125 |
markupsafe==3.0.2
|
126 |
+
# via
|
127 |
+
# gradio
|
128 |
+
# jinja2
|
129 |
mcp==1.9.0
|
130 |
+
# via gradio
|
131 |
mdurl==0.1.2
|
132 |
+
# via markdown-it-py
|
133 |
msgpack==1.1.0
|
134 |
+
# via cachecontrol
|
135 |
multidict==6.4.4
|
136 |
+
# via
|
137 |
+
# aiohttp
|
138 |
+
# yarl
|
139 |
mypy==1.16.0
|
140 |
mypy-extensions==1.1.0
|
141 |
+
# via mypy
|
142 |
nodeenv==1.9.1
|
143 |
+
# via pre-commit
|
144 |
numpy==2.2.6
|
145 |
+
# via
|
146 |
+
# gradio
|
147 |
+
# pandas
|
148 |
orjson==3.10.18
|
149 |
+
# via gradio
|
150 |
packageurl-python==0.16.0
|
151 |
+
# via cyclonedx-python-lib
|
152 |
packaging==25.0
|
153 |
+
# via
|
154 |
+
# gradio
|
155 |
+
# gradio-client
|
156 |
+
# huggingface-hub
|
157 |
+
# pip-audit
|
158 |
+
# pip-requirements-parser
|
159 |
+
# pytest
|
160 |
pandas==2.2.3
|
161 |
+
# via gradio
|
162 |
pathspec==0.12.1
|
163 |
+
# via mypy
|
164 |
pillow==11.2.1
|
165 |
+
# via gradio
|
166 |
pip==25.1.1
|
167 |
+
# via pip-api
|
168 |
pip-api==0.0.34
|
169 |
+
# via pip-audit
|
170 |
pip-audit==2.9.0
|
171 |
pip-requirements-parser==32.0.1
|
172 |
+
# via pip-audit
|
173 |
platformdirs==4.3.8
|
174 |
+
# via
|
175 |
+
# pip-audit
|
176 |
+
# virtualenv
|
177 |
pluggy==1.6.0
|
178 |
+
# via pytest
|
179 |
pre-commit==3.8.0
|
180 |
propcache==0.3.1
|
181 |
+
# via
|
182 |
+
# aiohttp
|
183 |
+
# yarl
|
184 |
py-serializable==2.0.0
|
185 |
+
# via cyclonedx-python-lib
|
186 |
pydantic==2.11.5
|
187 |
+
# via
|
188 |
+
# fastapi
|
189 |
+
# gradio
|
190 |
+
# mcp
|
191 |
+
# pydantic-settings
|
192 |
pydantic-core==2.33.2
|
193 |
+
# via pydantic
|
194 |
pydantic-settings==2.9.1
|
195 |
+
# via mcp
|
196 |
pydub==0.25.1
|
197 |
+
# via gradio
|
198 |
pygments==2.19.1
|
199 |
+
# via rich
|
200 |
pyparsing==3.2.3
|
201 |
+
# via pip-requirements-parser
|
202 |
pytest==7.4.4
|
203 |
+
# via
|
204 |
+
# pytest-cov
|
205 |
+
# pytest-randomly
|
206 |
pytest-cov==4.1.0
|
207 |
pytest-randomly==3.16.0
|
208 |
python-dateutil==2.9.0.post0
|
209 |
+
# via
|
210 |
+
# pandas
|
211 |
+
# python-whois
|
212 |
python-dotenv==1.1.0
|
213 |
+
# via pydantic-settings
|
214 |
python-multipart==0.0.20
|
215 |
+
# via
|
216 |
+
# gradio
|
217 |
+
# mcp
|
218 |
python-whois==0.9.5
|
219 |
+
# via tdagent
|
220 |
pytz==2025.2
|
221 |
+
# via pandas
|
222 |
pyyaml==6.0.2
|
223 |
+
# via
|
224 |
+
# gradio
|
225 |
+
# huggingface-hub
|
226 |
+
# pre-commit
|
227 |
requests==2.32.3
|
228 |
+
# via
|
229 |
+
# cachecontrol
|
230 |
+
# huggingface-hub
|
231 |
+
# pip-audit
|
232 |
+
# tdagent
|
233 |
rich==14.0.0
|
234 |
+
# via
|
235 |
+
# pip-audit
|
236 |
+
# typer
|
237 |
ruff==0.11.12
|
238 |
+
# via gradio
|
239 |
safehttpx==0.1.6
|
240 |
+
# via gradio
|
241 |
semantic-version==2.10.0
|
242 |
+
# via gradio
|
243 |
shellingham==1.5.4 ; sys_platform != 'emscripten'
|
244 |
+
# via typer
|
245 |
six==1.17.0
|
246 |
+
# via python-dateutil
|
247 |
sniffio==1.3.1
|
248 |
+
# via anyio
|
249 |
sortedcontainers==2.4.0
|
250 |
+
# via cyclonedx-python-lib
|
251 |
sse-starlette==2.3.6
|
252 |
+
# via mcp
|
253 |
starlette==0.46.2
|
254 |
+
# via
|
255 |
+
# fastapi
|
256 |
+
# gradio
|
257 |
+
# mcp
|
258 |
toml==0.10.2
|
259 |
+
# via pip-audit
|
260 |
tomli==2.2.1 ; python_full_version <= '3.11'
|
261 |
+
# via
|
262 |
+
# coverage
|
263 |
+
# mypy
|
264 |
+
# pytest
|
265 |
tomlkit==0.13.2
|
266 |
+
# via gradio
|
267 |
tqdm==4.67.1
|
268 |
+
# via huggingface-hub
|
269 |
typer==0.16.0 ; sys_platform != 'emscripten'
|
270 |
+
# via gradio
|
271 |
typing-extensions==4.14.0
|
272 |
+
# via
|
273 |
+
# anyio
|
274 |
+
# exceptiongroup
|
275 |
+
# fastapi
|
276 |
+
# gradio
|
277 |
+
# gradio-client
|
278 |
+
# huggingface-hub
|
279 |
+
# multidict
|
280 |
+
# mypy
|
281 |
+
# pydantic
|
282 |
+
# pydantic-core
|
283 |
+
# rich
|
284 |
+
# typer
|
285 |
+
# typing-inspection
|
286 |
+
# uvicorn
|
287 |
typing-inspection==0.4.1
|
288 |
+
# via
|
289 |
+
# pydantic
|
290 |
+
# pydantic-settings
|
291 |
tzdata==2025.2
|
292 |
+
# via pandas
|
293 |
urllib3==2.4.0
|
294 |
+
# via
|
295 |
+
# gradio
|
296 |
+
# requests
|
297 |
uvicorn==0.34.3 ; sys_platform != 'emscripten'
|
298 |
+
# via
|
299 |
+
# gradio
|
300 |
+
# mcp
|
301 |
virtualenv==20.31.2
|
302 |
+
# via pre-commit
|
303 |
vt-py==0.21.0
|
304 |
+
# via tdagent
|
305 |
websockets==15.0.1
|
306 |
+
# via gradio-client
|
307 |
xdoctest==1.2.0
|
308 |
yarl==1.20.0
|
309 |
+
# via aiohttp
|
requirements.txt
CHANGED
@@ -1,84 +1,212 @@
|
|
1 |
# This file was autogenerated by uv via the following command:
|
2 |
-
# uv
|
3 |
aiofiles==24.1.0
|
|
|
|
|
|
|
4 |
aiohappyeyeballs==2.6.1
|
|
|
5 |
aiohttp==3.12.8
|
|
|
6 |
aiosignal==1.3.2
|
|
|
7 |
annotated-types==0.7.0
|
|
|
8 |
anyio==4.9.0
|
9 |
-
|
|
|
|
|
|
|
|
|
|
|
10 |
attrs==25.3.0
|
11 |
-
|
|
|
|
|
12 |
cachetools==6.0.0
|
|
|
13 |
certifi==2025.4.26
|
|
|
|
|
|
|
|
|
14 |
charset-normalizer==3.4.2
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
|
|
|
|
|
|
19 |
fastapi==0.115.12
|
|
|
20 |
ffmpy==0.6.0
|
|
|
21 |
filelock==3.18.0
|
|
|
22 |
frozenlist==1.6.2
|
|
|
|
|
|
|
23 |
fsspec==2025.5.1
|
|
|
|
|
|
|
24 |
gradio==5.32.1
|
|
|
25 |
gradio-client==1.10.2
|
|
|
26 |
groovy==0.1.2
|
|
|
27 |
h11==0.16.0
|
28 |
-
|
|
|
|
|
|
|
|
|
29 |
httpcore==1.0.9
|
|
|
30 |
httpx==0.28.1
|
|
|
|
|
|
|
|
|
|
|
31 |
httpx-sse==0.4.0
|
|
|
32 |
huggingface-hub==0.32.4
|
|
|
|
|
|
|
33 |
idna==3.10
|
34 |
-
|
|
|
|
|
|
|
|
|
35 |
jinja2==3.1.6
|
36 |
-
|
|
|
|
|
37 |
markupsafe==3.0.2
|
|
|
|
|
|
|
38 |
mcp==1.9.0
|
39 |
-
|
|
|
|
|
40 |
multidict==6.4.4
|
|
|
|
|
|
|
41 |
numpy==2.2.6
|
|
|
|
|
|
|
42 |
orjson==3.10.18
|
|
|
43 |
packaging==25.0
|
|
|
|
|
|
|
|
|
44 |
pandas==2.2.3
|
|
|
45 |
pillow==11.2.1
|
46 |
-
|
47 |
propcache==0.3.1
|
|
|
|
|
|
|
48 |
pydantic==2.11.5
|
|
|
|
|
|
|
|
|
|
|
49 |
pydantic-core==2.33.2
|
|
|
50 |
pydantic-settings==2.9.1
|
|
|
51 |
pydub==0.25.1
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
pytest-randomly==3.16.0
|
56 |
python-dateutil==2.9.0.post0
|
|
|
|
|
|
|
57 |
python-dotenv==1.1.0
|
|
|
58 |
python-multipart==0.0.20
|
|
|
|
|
|
|
59 |
python-whois==0.9.5
|
|
|
60 |
pytz==2025.2
|
|
|
61 |
pyyaml==6.0.2
|
|
|
|
|
|
|
62 |
requests==2.32.3
|
63 |
-
|
64 |
-
|
|
|
|
|
|
|
|
|
|
|
65 |
safehttpx==0.1.6
|
|
|
66 |
semantic-version==2.10.0
|
67 |
-
|
|
|
|
|
68 |
six==1.17.0
|
|
|
69 |
sniffio==1.3.1
|
|
|
70 |
sse-starlette==2.3.6
|
|
|
71 |
starlette==0.46.2
|
72 |
-
|
|
|
|
|
|
|
73 |
tomlkit==0.13.2
|
|
|
74 |
tqdm==4.67.1
|
75 |
-
|
|
|
|
|
76 |
typing-extensions==4.14.0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
typing-inspection==0.4.1
|
|
|
|
|
|
|
78 |
tzdata==2025.2
|
|
|
79 |
urllib3==2.4.0
|
80 |
-
|
|
|
|
|
|
|
|
|
81 |
vt-py==0.21.0
|
|
|
82 |
websockets==15.0.1
|
83 |
-
|
84 |
yarl==1.20.0
|
|
|
|
1 |
# This file was autogenerated by uv via the following command:
|
2 |
+
# uv pip compile pyproject.toml -o requirements.txt
|
3 |
aiofiles==24.1.0
|
4 |
+
# via
|
5 |
+
# gradio
|
6 |
+
# vt-py
|
7 |
aiohappyeyeballs==2.6.1
|
8 |
+
# via aiohttp
|
9 |
aiohttp==3.12.8
|
10 |
+
# via vt-py
|
11 |
aiosignal==1.3.2
|
12 |
+
# via aiohttp
|
13 |
annotated-types==0.7.0
|
14 |
+
# via pydantic
|
15 |
anyio==4.9.0
|
16 |
+
# via
|
17 |
+
# gradio
|
18 |
+
# httpx
|
19 |
+
# mcp
|
20 |
+
# sse-starlette
|
21 |
+
# starlette
|
22 |
attrs==25.3.0
|
23 |
+
# via aiohttp
|
24 |
+
audioop-lts==0.2.1
|
25 |
+
# via gradio
|
26 |
cachetools==6.0.0
|
27 |
+
# via tdagent (pyproject.toml)
|
28 |
certifi==2025.4.26
|
29 |
+
# via
|
30 |
+
# httpcore
|
31 |
+
# httpx
|
32 |
+
# requests
|
33 |
charset-normalizer==3.4.2
|
34 |
+
# via requests
|
35 |
+
click==8.2.1
|
36 |
+
# via
|
37 |
+
# typer
|
38 |
+
# uvicorn
|
39 |
+
dnspython==2.7.0
|
40 |
+
# via tdagent (pyproject.toml)
|
41 |
fastapi==0.115.12
|
42 |
+
# via gradio
|
43 |
ffmpy==0.6.0
|
44 |
+
# via gradio
|
45 |
filelock==3.18.0
|
46 |
+
# via huggingface-hub
|
47 |
frozenlist==1.6.2
|
48 |
+
# via
|
49 |
+
# aiohttp
|
50 |
+
# aiosignal
|
51 |
fsspec==2025.5.1
|
52 |
+
# via
|
53 |
+
# gradio-client
|
54 |
+
# huggingface-hub
|
55 |
gradio==5.32.1
|
56 |
+
# via tdagent (pyproject.toml)
|
57 |
gradio-client==1.10.2
|
58 |
+
# via gradio
|
59 |
groovy==0.1.2
|
60 |
+
# via gradio
|
61 |
h11==0.16.0
|
62 |
+
# via
|
63 |
+
# httpcore
|
64 |
+
# uvicorn
|
65 |
+
hf-xet==1.1.2
|
66 |
+
# via huggingface-hub
|
67 |
httpcore==1.0.9
|
68 |
+
# via httpx
|
69 |
httpx==0.28.1
|
70 |
+
# via
|
71 |
+
# gradio
|
72 |
+
# gradio-client
|
73 |
+
# mcp
|
74 |
+
# safehttpx
|
75 |
httpx-sse==0.4.0
|
76 |
+
# via mcp
|
77 |
huggingface-hub==0.32.4
|
78 |
+
# via
|
79 |
+
# gradio
|
80 |
+
# gradio-client
|
81 |
idna==3.10
|
82 |
+
# via
|
83 |
+
# anyio
|
84 |
+
# httpx
|
85 |
+
# requests
|
86 |
+
# yarl
|
87 |
jinja2==3.1.6
|
88 |
+
# via gradio
|
89 |
+
markdown-it-py==3.0.0
|
90 |
+
# via rich
|
91 |
markupsafe==3.0.2
|
92 |
+
# via
|
93 |
+
# gradio
|
94 |
+
# jinja2
|
95 |
mcp==1.9.0
|
96 |
+
# via gradio
|
97 |
+
mdurl==0.1.2
|
98 |
+
# via markdown-it-py
|
99 |
multidict==6.4.4
|
100 |
+
# via
|
101 |
+
# aiohttp
|
102 |
+
# yarl
|
103 |
numpy==2.2.6
|
104 |
+
# via
|
105 |
+
# gradio
|
106 |
+
# pandas
|
107 |
orjson==3.10.18
|
108 |
+
# via gradio
|
109 |
packaging==25.0
|
110 |
+
# via
|
111 |
+
# gradio
|
112 |
+
# gradio-client
|
113 |
+
# huggingface-hub
|
114 |
pandas==2.2.3
|
115 |
+
# via gradio
|
116 |
pillow==11.2.1
|
117 |
+
# via gradio
|
118 |
propcache==0.3.1
|
119 |
+
# via
|
120 |
+
# aiohttp
|
121 |
+
# yarl
|
122 |
pydantic==2.11.5
|
123 |
+
# via
|
124 |
+
# fastapi
|
125 |
+
# gradio
|
126 |
+
# mcp
|
127 |
+
# pydantic-settings
|
128 |
pydantic-core==2.33.2
|
129 |
+
# via pydantic
|
130 |
pydantic-settings==2.9.1
|
131 |
+
# via mcp
|
132 |
pydub==0.25.1
|
133 |
+
# via gradio
|
134 |
+
pygments==2.19.1
|
135 |
+
# via rich
|
|
|
136 |
python-dateutil==2.9.0.post0
|
137 |
+
# via
|
138 |
+
# pandas
|
139 |
+
# python-whois
|
140 |
python-dotenv==1.1.0
|
141 |
+
# via pydantic-settings
|
142 |
python-multipart==0.0.20
|
143 |
+
# via
|
144 |
+
# gradio
|
145 |
+
# mcp
|
146 |
python-whois==0.9.5
|
147 |
+
# via tdagent (pyproject.toml)
|
148 |
pytz==2025.2
|
149 |
+
# via pandas
|
150 |
pyyaml==6.0.2
|
151 |
+
# via
|
152 |
+
# gradio
|
153 |
+
# huggingface-hub
|
154 |
requests==2.32.3
|
155 |
+
# via
|
156 |
+
# tdagent (pyproject.toml)
|
157 |
+
# huggingface-hub
|
158 |
+
rich==14.0.0
|
159 |
+
# via typer
|
160 |
+
ruff==0.11.12
|
161 |
+
# via gradio
|
162 |
safehttpx==0.1.6
|
163 |
+
# via gradio
|
164 |
semantic-version==2.10.0
|
165 |
+
# via gradio
|
166 |
+
shellingham==1.5.4
|
167 |
+
# via typer
|
168 |
six==1.17.0
|
169 |
+
# via python-dateutil
|
170 |
sniffio==1.3.1
|
171 |
+
# via anyio
|
172 |
sse-starlette==2.3.6
|
173 |
+
# via mcp
|
174 |
starlette==0.46.2
|
175 |
+
# via
|
176 |
+
# fastapi
|
177 |
+
# gradio
|
178 |
+
# mcp
|
179 |
tomlkit==0.13.2
|
180 |
+
# via gradio
|
181 |
tqdm==4.67.1
|
182 |
+
# via huggingface-hub
|
183 |
+
typer==0.16.0
|
184 |
+
# via gradio
|
185 |
typing-extensions==4.14.0
|
186 |
+
# via
|
187 |
+
# fastapi
|
188 |
+
# gradio
|
189 |
+
# gradio-client
|
190 |
+
# huggingface-hub
|
191 |
+
# pydantic
|
192 |
+
# pydantic-core
|
193 |
+
# typer
|
194 |
+
# typing-inspection
|
195 |
typing-inspection==0.4.1
|
196 |
+
# via
|
197 |
+
# pydantic
|
198 |
+
# pydantic-settings
|
199 |
tzdata==2025.2
|
200 |
+
# via pandas
|
201 |
urllib3==2.4.0
|
202 |
+
# via requests
|
203 |
+
uvicorn==0.34.3
|
204 |
+
# via
|
205 |
+
# gradio
|
206 |
+
# mcp
|
207 |
vt-py==0.21.0
|
208 |
+
# via tdagent (pyproject.toml)
|
209 |
websockets==15.0.1
|
210 |
+
# via gradio-client
|
211 |
yarl==1.20.0
|
212 |
+
# via aiohttp
|
subdomains/subdomains.txt
ADDED
@@ -0,0 +1,999 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
www
|
2 |
+
mail
|
3 |
+
ftp
|
4 |
+
localhost
|
5 |
+
webmail
|
6 |
+
smtp
|
7 |
+
pop
|
8 |
+
ns1
|
9 |
+
webdisk
|
10 |
+
ns2
|
11 |
+
cpanel
|
12 |
+
whm
|
13 |
+
autodiscover
|
14 |
+
autoconfig
|
15 |
+
m
|
16 |
+
imap
|
17 |
+
test
|
18 |
+
ns
|
19 |
+
blog
|
20 |
+
pop3
|
21 |
+
dev
|
22 |
+
www2
|
23 |
+
admin
|
24 |
+
forum
|
25 |
+
news
|
26 |
+
vpn
|
27 |
+
ns3
|
28 |
+
mail2
|
29 |
+
new
|
30 |
+
mysql
|
31 |
+
old
|
32 |
+
lists
|
33 |
+
support
|
34 |
+
mobile
|
35 |
+
mx
|
36 |
+
static
|
37 |
+
docs
|
38 |
+
beta
|
39 |
+
shop
|
40 |
+
sql
|
41 |
+
secure
|
42 |
+
demo
|
43 |
+
cp
|
44 |
+
calendar
|
45 |
+
wiki
|
46 |
+
web
|
47 |
+
media
|
48 |
+
email
|
49 |
+
images
|
50 |
+
img
|
51 |
+
www1
|
52 |
+
intranet
|
53 |
+
portal
|
54 |
+
video
|
55 |
+
sip
|
56 |
+
dns2
|
57 |
+
api
|
58 |
+
cdn
|
59 |
+
stats
|
60 |
+
dns1
|
61 |
+
ns4
|
62 |
+
www3
|
63 |
+
dns
|
64 |
+
search
|
65 |
+
staging
|
66 |
+
server
|
67 |
+
mx1
|
68 |
+
chat
|
69 |
+
wap
|
70 |
+
my
|
71 |
+
svn
|
72 |
+
mail1
|
73 |
+
sites
|
74 |
+
proxy
|
75 |
+
ads
|
76 |
+
host
|
77 |
+
crm
|
78 |
+
cms
|
79 |
+
backup
|
80 |
+
mx2
|
81 |
+
lyncdiscover
|
82 |
+
info
|
83 |
+
apps
|
84 |
+
download
|
85 |
+
remote
|
86 |
+
db
|
87 |
+
forums
|
88 |
+
store
|
89 |
+
relay
|
90 |
+
files
|
91 |
+
newsletter
|
92 |
+
app
|
93 |
+
live
|
94 |
+
owa
|
95 |
+
en
|
96 |
+
start
|
97 |
+
sms
|
98 |
+
office
|
99 |
+
exchange
|
100 |
+
ipv4
|
101 |
+
mail3
|
102 |
+
help
|
103 |
+
blogs
|
104 |
+
helpdesk
|
105 |
+
web1
|
106 |
+
home
|
107 |
+
library
|
108 |
+
ftp2
|
109 |
+
ntp
|
110 |
+
monitor
|
111 |
+
login
|
112 |
+
service
|
113 |
+
correo
|
114 |
+
www4
|
115 |
+
moodle
|
116 |
+
it
|
117 |
+
gateway
|
118 |
+
gw
|
119 |
+
i
|
120 |
+
stat
|
121 |
+
stage
|
122 |
+
ldap
|
123 |
+
tv
|
124 |
+
ssl
|
125 |
+
web2
|
126 |
+
ns5
|
127 |
+
upload
|
128 |
+
nagios
|
129 |
+
smtp2
|
130 |
+
online
|
131 |
+
ad
|
132 |
+
survey
|
133 |
+
data
|
134 |
+
radio
|
135 |
+
extranet
|
136 |
+
test2
|
137 |
+
mssql
|
138 |
+
dns3
|
139 |
+
jobs
|
140 |
+
services
|
141 |
+
panel
|
142 |
+
irc
|
143 |
+
hosting
|
144 |
+
cloud
|
145 |
+
de
|
146 |
+
gmail
|
147 |
+
s
|
148 |
+
bbs
|
149 |
+
cs
|
150 |
+
ww
|
151 |
+
mrtg
|
152 |
+
git
|
153 |
+
image
|
154 |
+
members
|
155 |
+
poczta
|
156 |
+
s1
|
157 |
+
meet
|
158 |
+
preview
|
159 |
+
fr
|
160 |
+
cloudflare-resolve-to
|
161 |
+
dev2
|
162 |
+
photo
|
163 |
+
jabber
|
164 |
+
legacy
|
165 |
+
go
|
166 |
+
es
|
167 |
+
ssh
|
168 |
+
redmine
|
169 |
+
partner
|
170 |
+
vps
|
171 |
+
server1
|
172 |
+
sv
|
173 |
+
ns6
|
174 |
+
webmail2
|
175 |
+
av
|
176 |
+
community
|
177 |
+
cacti
|
178 |
+
time
|
179 |
+
sftp
|
180 |
+
lib
|
181 |
+
facebook
|
182 |
+
www5
|
183 |
+
smtp1
|
184 |
+
feeds
|
185 |
+
w
|
186 |
+
games
|
187 |
+
ts
|
188 |
+
alumni
|
189 |
+
dl
|
190 |
+
s2
|
191 |
+
phpmyadmin
|
192 |
+
archive
|
193 |
+
cn
|
194 |
+
tools
|
195 |
+
stream
|
196 |
+
projects
|
197 |
+
elearning
|
198 |
+
im
|
199 |
+
iphone
|
200 |
+
control
|
201 |
+
voip
|
202 |
+
test1
|
203 |
+
ws
|
204 |
+
rss
|
205 |
+
sp
|
206 |
+
wwww
|
207 |
+
vpn2
|
208 |
+
jira
|
209 |
+
list
|
210 |
+
connect
|
211 |
+
gallery
|
212 |
+
billing
|
213 |
+
mailer
|
214 |
+
update
|
215 |
+
pda
|
216 |
+
game
|
217 |
+
ns0
|
218 |
+
testing
|
219 |
+
sandbox
|
220 |
+
job
|
221 |
+
events
|
222 |
+
dialin
|
223 |
+
ml
|
224 |
+
fb
|
225 |
+
videos
|
226 |
+
music
|
227 |
+
a
|
228 |
+
partners
|
229 |
+
mailhost
|
230 |
+
downloads
|
231 |
+
reports
|
232 |
+
ca
|
233 |
+
router
|
234 |
+
speedtest
|
235 |
+
local
|
236 |
+
training
|
237 |
+
edu
|
238 |
+
bugs
|
239 |
+
manage
|
240 |
+
s3
|
241 |
+
status
|
242 |
+
host2
|
243 |
+
ww2
|
244 |
+
marketing
|
245 |
+
conference
|
246 |
+
content
|
247 |
+
network-ip
|
248 |
+
broadcast-ip
|
249 |
+
english
|
250 |
+
catalog
|
251 |
+
msoid
|
252 |
+
mailadmin
|
253 |
+
pay
|
254 |
+
access
|
255 |
+
streaming
|
256 |
+
project
|
257 |
+
t
|
258 |
+
sso
|
259 |
+
alpha
|
260 |
+
photos
|
261 |
+
staff
|
262 |
+
e
|
263 |
+
auth
|
264 |
+
v2
|
265 |
+
web5
|
266 |
+
web3
|
267 |
+
mail4
|
268 |
+
devel
|
269 |
+
post
|
270 |
+
us
|
271 |
+
images2
|
272 |
+
master
|
273 |
+
rt
|
274 |
+
ftp1
|
275 |
+
qa
|
276 |
+
wp
|
277 |
+
dns4
|
278 |
+
www6
|
279 |
+
ru
|
280 |
+
student
|
281 |
+
w3
|
282 |
+
citrix
|
283 |
+
trac
|
284 |
+
doc
|
285 |
+
img2
|
286 |
+
css
|
287 |
+
mx3
|
288 |
+
adm
|
289 |
+
web4
|
290 |
+
hr
|
291 |
+
mailserver
|
292 |
+
travel
|
293 |
+
sharepoint
|
294 |
+
sport
|
295 |
+
member
|
296 |
+
bb
|
297 |
+
agenda
|
298 |
+
link
|
299 |
+
server2
|
300 |
+
vod
|
301 |
+
uk
|
302 |
+
fw
|
303 |
+
promo
|
304 |
+
vip
|
305 |
+
noc
|
306 |
+
design
|
307 |
+
temp
|
308 |
+
gate
|
309 |
+
ns7
|
310 |
+
file
|
311 |
+
ms
|
312 |
+
map
|
313 |
+
cache
|
314 |
+
painel
|
315 |
+
js
|
316 |
+
event
|
317 |
+
mailing
|
318 |
+
db1
|
319 |
+
c
|
320 |
+
auto
|
321 |
+
img1
|
322 |
+
vpn1
|
323 |
+
business
|
324 |
+
mirror
|
325 |
+
share
|
326 |
+
cdn2
|
327 |
+
site
|
328 |
+
maps
|
329 |
+
tickets
|
330 |
+
tracker
|
331 |
+
domains
|
332 |
+
club
|
333 |
+
images1
|
334 |
+
zimbra
|
335 |
+
cvs
|
336 |
+
b2b
|
337 |
+
oa
|
338 |
+
intra
|
339 |
+
zabbix
|
340 |
+
ns8
|
341 |
+
assets
|
342 |
+
main
|
343 |
+
spam
|
344 |
+
lms
|
345 |
+
social
|
346 |
+
faq
|
347 |
+
feedback
|
348 |
+
loopback
|
349 |
+
groups
|
350 |
+
m2
|
351 |
+
cas
|
352 |
+
loghost
|
353 |
+
xml
|
354 |
+
nl
|
355 |
+
research
|
356 |
+
art
|
357 |
+
munin
|
358 |
+
dev1
|
359 |
+
gis
|
360 |
+
sales
|
361 |
+
images3
|
362 |
+
report
|
363 |
+
google
|
364 |
+
idp
|
365 |
+
cisco
|
366 |
+
careers
|
367 |
+
seo
|
368 |
+
dc
|
369 |
+
lab
|
370 |
+
d
|
371 |
+
firewall
|
372 |
+
fs
|
373 |
+
eng
|
374 |
+
ann
|
375 |
+
mail01
|
376 |
+
mantis
|
377 |
+
v
|
378 |
+
affiliates
|
379 |
+
webconf
|
380 |
+
track
|
381 |
+
ticket
|
382 |
+
pm
|
383 |
+
db2
|
384 |
+
b
|
385 |
+
clients
|
386 |
+
tech
|
387 |
+
erp
|
388 |
+
monitoring
|
389 |
+
cdn1
|
390 |
+
images4
|
391 |
+
payment
|
392 |
+
origin
|
393 |
+
client
|
394 |
+
foto
|
395 |
+
domain
|
396 |
+
pt
|
397 |
+
pma
|
398 |
+
directory
|
399 |
+
cc
|
400 |
+
public
|
401 |
+
finance
|
402 |
+
ns11
|
403 |
+
test3
|
404 |
+
wordpress
|
405 |
+
corp
|
406 |
+
sslvpn
|
407 |
+
cal
|
408 |
+
mailman
|
409 |
+
book
|
410 |
+
ip
|
411 |
+
zeus
|
412 |
+
ns10
|
413 |
+
hermes
|
414 |
+
storage
|
415 |
+
free
|
416 |
+
static1
|
417 |
+
pbx
|
418 |
+
banner
|
419 |
+
mobil
|
420 |
+
kb
|
421 |
+
mail5
|
422 |
+
direct
|
423 |
+
ipfixe
|
424 |
+
wifi
|
425 |
+
development
|
426 |
+
board
|
427 |
+
ns01
|
428 |
+
st
|
429 |
+
reviews
|
430 |
+
radius
|
431 |
+
pro
|
432 |
+
atlas
|
433 |
+
links
|
434 |
+
in
|
435 |
+
oldmail
|
436 |
+
register
|
437 |
+
s4
|
438 |
+
images6
|
439 |
+
static2
|
440 |
+
id
|
441 |
+
shopping
|
442 |
+
drupal
|
443 |
+
analytics
|
444 |
+
m1
|
445 |
+
images5
|
446 |
+
images7
|
447 |
+
img3
|
448 |
+
mx01
|
449 |
+
www7
|
450 |
+
redirect
|
451 |
+
sitebuilder
|
452 |
+
smtp3
|
453 |
+
adserver
|
454 |
+
net
|
455 |
+
user
|
456 |
+
forms
|
457 |
+
outlook
|
458 |
+
press
|
459 |
+
vc
|
460 |
+
health
|
461 |
+
work
|
462 |
+
mb
|
463 |
+
mm
|
464 |
+
f
|
465 |
+
pgsql
|
466 |
+
jp
|
467 |
+
sports
|
468 |
+
preprod
|
469 |
+
g
|
470 |
+
p
|
471 |
+
mdm
|
472 |
+
ar
|
473 |
+
lync
|
474 |
+
market
|
475 |
+
dbadmin
|
476 |
+
barracuda
|
477 |
+
affiliate
|
478 |
+
mars
|
479 |
+
users
|
480 |
+
images8
|
481 |
+
biblioteca
|
482 |
+
mc
|
483 |
+
ns12
|
484 |
+
math
|
485 |
+
ntp1
|
486 |
+
web01
|
487 |
+
software
|
488 |
+
pr
|
489 |
+
jupiter
|
490 |
+
labs
|
491 |
+
linux
|
492 |
+
sc
|
493 |
+
love
|
494 |
+
fax
|
495 |
+
php
|
496 |
+
lp
|
497 |
+
tracking
|
498 |
+
thumbs
|
499 |
+
up
|
500 |
+
tw
|
501 |
+
campus
|
502 |
+
reg
|
503 |
+
digital
|
504 |
+
demo2
|
505 |
+
da
|
506 |
+
tr
|
507 |
+
otrs
|
508 |
+
web6
|
509 |
+
ns02
|
510 |
+
mailgw
|
511 |
+
education
|
512 |
+
order
|
513 |
+
piwik
|
514 |
+
banners
|
515 |
+
rs
|
516 |
+
se
|
517 |
+
venus
|
518 |
+
internal
|
519 |
+
webservices
|
520 |
+
cm
|
521 |
+
whois
|
522 |
+
sync
|
523 |
+
lb
|
524 |
+
is
|
525 |
+
code
|
526 |
+
click
|
527 |
+
w2
|
528 |
+
bugzilla
|
529 |
+
virtual
|
530 |
+
origin-www
|
531 |
+
top
|
532 |
+
customer
|
533 |
+
pub
|
534 |
+
hotel
|
535 |
+
openx
|
536 |
+
log
|
537 |
+
uat
|
538 |
+
cdn3
|
539 |
+
images0
|
540 |
+
cgi
|
541 |
+
posta
|
542 |
+
reseller
|
543 |
+
soft
|
544 |
+
movie
|
545 |
+
mba
|
546 |
+
n
|
547 |
+
r
|
548 |
+
developer
|
549 |
+
nms
|
550 |
+
ns9
|
551 |
+
webcam
|
552 |
+
construtor
|
553 |
+
ebook
|
554 |
+
ftp3
|
555 |
+
join
|
556 |
+
dashboard
|
557 |
+
bi
|
558 |
+
wpad
|
559 |
+
admin2
|
560 |
+
agent
|
561 |
+
wm
|
562 |
+
books
|
563 |
+
joomla
|
564 |
+
hotels
|
565 |
+
ezproxy
|
566 |
+
ds
|
567 |
+
sa
|
568 |
+
katalog
|
569 |
+
team
|
570 |
+
emkt
|
571 |
+
antispam
|
572 |
+
adv
|
573 |
+
mercury
|
574 |
+
flash
|
575 |
+
myadmin
|
576 |
+
sklep
|
577 |
+
newsite
|
578 |
+
law
|
579 |
+
pl
|
580 |
+
ntp2
|
581 |
+
x
|
582 |
+
srv1
|
583 |
+
mp3
|
584 |
+
archives
|
585 |
+
proxy2
|
586 |
+
ps
|
587 |
+
pic
|
588 |
+
ir
|
589 |
+
orion
|
590 |
+
srv
|
591 |
+
mt
|
592 |
+
ocs
|
593 |
+
server3
|
594 |
+
meeting
|
595 |
+
v1
|
596 |
+
delta
|
597 |
+
titan
|
598 |
+
manager
|
599 |
+
subscribe
|
600 |
+
develop
|
601 |
+
wsus
|
602 |
+
oascentral
|
603 |
+
mobi
|
604 |
+
people
|
605 |
+
galleries
|
606 |
+
wwwtest
|
607 |
+
backoffice
|
608 |
+
sg
|
609 |
+
repo
|
610 |
+
soporte
|
611 |
+
www8
|
612 |
+
eu
|
613 |
+
ead
|
614 |
+
students
|
615 |
+
hq
|
616 |
+
awstats
|
617 |
+
ec
|
618 |
+
security
|
619 |
+
school
|
620 |
+
corporate
|
621 |
+
podcast
|
622 |
+
vote
|
623 |
+
conf
|
624 |
+
magento
|
625 |
+
mx4
|
626 |
+
webservice
|
627 |
+
tour
|
628 |
+
s5
|
629 |
+
power
|
630 |
+
correio
|
631 |
+
mon
|
632 |
+
mobilemail
|
633 |
+
weather
|
634 |
+
international
|
635 |
+
prod
|
636 |
+
account
|
637 |
+
xx
|
638 |
+
pages
|
639 |
+
pgadmin
|
640 |
+
bfn2
|
641 |
+
webserver
|
642 |
+
www-test
|
643 |
+
maintenance
|
644 |
+
me
|
645 |
+
magazine
|
646 |
+
syslog
|
647 |
+
int
|
648 |
+
view
|
649 |
+
enews
|
650 |
+
ci
|
651 |
+
au
|
652 |
+
mis
|
653 |
+
dev3
|
654 |
+
pdf
|
655 |
+
mailgate
|
656 |
+
v3
|
657 |
+
ss
|
658 |
+
internet
|
659 |
+
host1
|
660 |
+
smtp01
|
661 |
+
journal
|
662 |
+
wireless
|
663 |
+
opac
|
664 |
+
w1
|
665 |
+
signup
|
666 |
+
database
|
667 |
+
demo1
|
668 |
+
br
|
669 |
+
android
|
670 |
+
career
|
671 |
+
listserv
|
672 |
+
bt
|
673 |
+
spb
|
674 |
+
cam
|
675 |
+
contacts
|
676 |
+
webtest
|
677 |
+
resources
|
678 |
+
1
|
679 |
+
life
|
680 |
+
mail6
|
681 |
+
transfer
|
682 |
+
app1
|
683 |
+
confluence
|
684 |
+
controlpanel
|
685 |
+
secure2
|
686 |
+
puppet
|
687 |
+
classifieds
|
688 |
+
tunet
|
689 |
+
edge
|
690 |
+
biz
|
691 |
+
host3
|
692 |
+
red
|
693 |
+
newmail
|
694 |
+
mx02
|
695 |
+
sb
|
696 |
+
physics
|
697 |
+
ap
|
698 |
+
epaper
|
699 |
+
sts
|
700 |
+
proxy1
|
701 |
+
ww1
|
702 |
+
stg
|
703 |
+
sd
|
704 |
+
science
|
705 |
+
star
|
706 |
+
www9
|
707 |
+
phoenix
|
708 |
+
pluto
|
709 |
+
webdav
|
710 |
+
booking
|
711 |
+
eshop
|
712 |
+
edit
|
713 |
+
panelstats
|
714 |
+
xmpp
|
715 |
+
food
|
716 |
+
cert
|
717 |
+
adfs
|
718 |
+
mail02
|
719 |
+
cat
|
720 |
+
edm
|
721 |
+
vcenter
|
722 |
+
mysql2
|
723 |
+
sun
|
724 |
+
phone
|
725 |
+
surveys
|
726 |
+
smart
|
727 |
+
system
|
728 |
+
twitter
|
729 |
+
updates
|
730 |
+
webmail1
|
731 |
+
logs
|
732 |
+
sitedefender
|
733 |
+
as
|
734 |
+
cbf1
|
735 |
+
sugar
|
736 |
+
contact
|
737 |
+
vm
|
738 |
+
ipad
|
739 |
+
traffic
|
740 |
+
dm
|
741 |
+
saturn
|
742 |
+
bo
|
743 |
+
network
|
744 |
+
ac
|
745 |
+
ns13
|
746 |
+
webdev
|
747 |
+
libguides
|
748 |
+
asp
|
749 |
+
tm
|
750 |
+
core
|
751 |
+
mms
|
752 |
+
abc
|
753 |
+
scripts
|
754 |
+
fm
|
755 |
+
sm
|
756 |
+
test4
|
757 |
+
nas
|
758 |
+
newsletters
|
759 |
+
rsc
|
760 |
+
cluster
|
761 |
+
learn
|
762 |
+
panelstatsmail
|
763 |
+
lb1
|
764 |
+
usa
|
765 |
+
apollo
|
766 |
+
pre
|
767 |
+
terminal
|
768 |
+
l
|
769 |
+
tc
|
770 |
+
movies
|
771 |
+
sh
|
772 |
+
fms
|
773 |
+
dms
|
774 |
+
z
|
775 |
+
base
|
776 |
+
jwc
|
777 |
+
gs
|
778 |
+
kvm
|
779 |
+
bfn1
|
780 |
+
card
|
781 |
+
web02
|
782 |
+
lg
|
783 |
+
editor
|
784 |
+
metrics
|
785 |
+
feed
|
786 |
+
repository
|
787 |
+
asterisk
|
788 |
+
sns
|
789 |
+
global
|
790 |
+
counter
|
791 |
+
ch
|
792 |
+
sistemas
|
793 |
+
pc
|
794 |
+
china
|
795 |
+
u
|
796 |
+
payments
|
797 |
+
ma
|
798 |
+
pics
|
799 |
+
www10
|
800 |
+
e-learning
|
801 |
+
auction
|
802 |
+
hub
|
803 |
+
sf
|
804 |
+
cbf8
|
805 |
+
forum2
|
806 |
+
ns14
|
807 |
+
app2
|
808 |
+
passport
|
809 |
+
hd
|
810 |
+
talk
|
811 |
+
ex
|
812 |
+
debian
|
813 |
+
ct
|
814 |
+
rc
|
815 |
+
2012
|
816 |
+
imap4
|
817 |
+
blog2
|
818 |
+
ce
|
819 |
+
sk
|
820 |
+
relay2
|
821 |
+
green
|
822 |
+
print
|
823 |
+
geo
|
824 |
+
multimedia
|
825 |
+
iptv
|
826 |
+
backup2
|
827 |
+
webapps
|
828 |
+
audio
|
829 |
+
ro
|
830 |
+
smtp4
|
831 |
+
pg
|
832 |
+
ldap2
|
833 |
+
backend
|
834 |
+
profile
|
835 |
+
oldwww
|
836 |
+
drive
|
837 |
+
bill
|
838 |
+
listas
|
839 |
+
orders
|
840 |
+
win
|
841 |
+
mag
|
842 |
+
apply
|
843 |
+
bounce
|
844 |
+
mta
|
845 |
+
hp
|
846 |
+
suporte
|
847 |
+
dir
|
848 |
+
pa
|
849 |
+
sys
|
850 |
+
mx0
|
851 |
+
ems
|
852 |
+
antivirus
|
853 |
+
web8
|
854 |
+
inside
|
855 |
+
play
|
856 |
+
nic
|
857 |
+
welcome
|
858 |
+
premium
|
859 |
+
exam
|
860 |
+
sub
|
861 |
+
cz
|
862 |
+
omega
|
863 |
+
boutique
|
864 |
+
pp
|
865 |
+
management
|
866 |
+
planet
|
867 |
+
ww3
|
868 |
+
orange
|
869 |
+
c1
|
870 |
+
zzb
|
871 |
+
form
|
872 |
+
ecommerce
|
873 |
+
tmp
|
874 |
+
plus
|
875 |
+
openvpn
|
876 |
+
fw1
|
877 |
+
hk
|
878 |
+
owncloud
|
879 |
+
history
|
880 |
+
clientes
|
881 |
+
srv2
|
882 |
+
img4
|
883 |
+
open
|
884 |
+
registration
|
885 |
+
mp
|
886 |
+
blackboard
|
887 |
+
fc
|
888 |
+
static3
|
889 |
+
server4
|
890 |
+
s6
|
891 |
+
ecard
|
892 |
+
dspace
|
893 |
+
dns01
|
894 |
+
md
|
895 |
+
mcp
|
896 |
+
ares
|
897 |
+
spf
|
898 |
+
kms
|
899 |
+
intranet2
|
900 |
+
accounts
|
901 |
+
webapp
|
902 |
+
ask
|
903 |
+
rd
|
904 |
+
www-dev
|
905 |
+
gw2
|
906 |
+
mall
|
907 |
+
bg
|
908 |
+
teste
|
909 |
+
ldap1
|
910 |
+
real
|
911 |
+
m3
|
912 |
+
wave
|
913 |
+
movil
|
914 |
+
portal2
|
915 |
+
kids
|
916 |
+
gw1
|
917 |
+
ra
|
918 |
+
tienda
|
919 |
+
private
|
920 |
+
po
|
921 |
+
2013
|
922 |
+
cdn4
|
923 |
+
gps
|
924 |
+
km
|
925 |
+
ent
|
926 |
+
tt
|
927 |
+
ns21
|
928 |
+
at
|
929 |
+
athena
|
930 |
+
cbf2
|
931 |
+
webmail3
|
932 |
+
mob
|
933 |
+
matrix
|
934 |
+
ns15
|
935 |
+
send
|
936 |
+
lb2
|
937 |
+
pos
|
938 |
+
2
|
939 |
+
cl
|
940 |
+
renew
|
941 |
+
admissions
|
942 |
+
am
|
943 |
+
beta2
|
944 |
+
gamma
|
945 |
+
mx5
|
946 |
+
portfolio
|
947 |
+
contest
|
948 |
+
box
|
949 |
+
mg
|
950 |
+
wwwold
|
951 |
+
neptune
|
952 |
+
mac
|
953 |
+
pms
|
954 |
+
traveler
|
955 |
+
media2
|
956 |
+
studio
|
957 |
+
sw
|
958 |
+
imp
|
959 |
+
bs
|
960 |
+
alfa
|
961 |
+
cbf4
|
962 |
+
servicedesk
|
963 |
+
wmail
|
964 |
+
video2
|
965 |
+
switch
|
966 |
+
sam
|
967 |
+
sky
|
968 |
+
ee
|
969 |
+
widget
|
970 |
+
reklama
|
971 |
+
msn
|
972 |
+
paris
|
973 |
+
tms
|
974 |
+
th
|
975 |
+
vega
|
976 |
+
trade
|
977 |
+
intern
|
978 |
+
ext
|
979 |
+
oldsite
|
980 |
+
learning
|
981 |
+
group
|
982 |
+
f1
|
983 |
+
ns22
|
984 |
+
ns20
|
985 |
+
demo3
|
986 |
+
bm
|
987 |
+
dom
|
988 |
+
pe
|
989 |
+
annuaire
|
990 |
+
portail
|
991 |
+
graphics
|
992 |
+
iris
|
993 |
+
one
|
994 |
+
robot
|
995 |
+
ams
|
996 |
+
s7
|
997 |
+
foro
|
998 |
+
gaia
|
999 |
+
vpn3
|
tdagent/tools/get_domain_information.py
ADDED
@@ -0,0 +1,334 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import json
|
2 |
+
import os
|
3 |
+
from concurrent.futures import ThreadPoolExecutor
|
4 |
+
from pathlib import Path
|
5 |
+
from typing import Any
|
6 |
+
|
7 |
+
import gradio as gr
|
8 |
+
import requests
|
9 |
+
import urllib3
|
10 |
+
from dns import message
|
11 |
+
|
12 |
+
|
13 |
+
_DNS_SERVER = "https://dns.google/dns-query" # can use others
|
14 |
+
_DNS_RECORD_TYPES = [
|
15 |
+
"A",
|
16 |
+
"AAAA",
|
17 |
+
"CNAME",
|
18 |
+
"MX",
|
19 |
+
"NS",
|
20 |
+
"SOA",
|
21 |
+
"TXT",
|
22 |
+
"RP",
|
23 |
+
"LOC",
|
24 |
+
"CAA",
|
25 |
+
"SPF",
|
26 |
+
"SRV",
|
27 |
+
"NSEC",
|
28 |
+
"RRSIG",
|
29 |
+
]
|
30 |
+
|
31 |
+
_COMMON_SUBDOMAINS_TXT_PATH = Path("./subdomains/subdomains.txt")
|
32 |
+
|
33 |
+
|
34 |
+
def get_geolocation(ip: str) -> dict[str, Any] | str:
|
35 |
+
"""Get location information from an ip address.
|
36 |
+
|
37 |
+
Returns the following information on an ip address:
|
38 |
+
1. IPv4
|
39 |
+
2. city
|
40 |
+
4. country_code
|
41 |
+
5. country_name
|
42 |
+
6. latitude
|
43 |
+
7. longitude
|
44 |
+
8. postal
|
45 |
+
9. state
|
46 |
+
|
47 |
+
Example:
|
48 |
+
>>> from pprint import pprint
|
49 |
+
>>> pprint(get_location("103.100.104.0"))
|
50 |
+
... {'IPv4': '103.100.104.0',
|
51 |
+
'city': None,
|
52 |
+
'country_code': 'NZ',
|
53 |
+
'country_name': 'New Zealand',
|
54 |
+
'latitude': -41,
|
55 |
+
'longitude': 174,
|
56 |
+
'postal': None,
|
57 |
+
'state': None}
|
58 |
+
|
59 |
+
Args:
|
60 |
+
ip: ip address
|
61 |
+
|
62 |
+
Returns:
|
63 |
+
Location information on the ip address.
|
64 |
+
"""
|
65 |
+
try:
|
66 |
+
return requests.get(
|
67 |
+
f"https://geolocation-db.com/json/{ip}",
|
68 |
+
timeout=0.5,
|
69 |
+
).json()
|
70 |
+
except Exception as e: # noqa: BLE001
|
71 |
+
return str(e)
|
72 |
+
|
73 |
+
|
74 |
+
def _request_dns_record(domain: str, record_type: str) -> str:
|
75 |
+
"""Utility to build dns resolve requests that do not use port 53.
|
76 |
+
|
77 |
+
Args:
|
78 |
+
domain: domain to investigate
|
79 |
+
record_type: record type
|
80 |
+
|
81 |
+
Returns:
|
82 |
+
Information about the dns record type for the domain.
|
83 |
+
"""
|
84 |
+
q = message.make_query(domain, record_type)
|
85 |
+
response = requests.post(
|
86 |
+
_DNS_SERVER,
|
87 |
+
headers={
|
88 |
+
"Content-Type": "application/dns-message",
|
89 |
+
"Accept": "application/dns-message",
|
90 |
+
},
|
91 |
+
data=q.to_wire(),
|
92 |
+
verify=True,
|
93 |
+
timeout=0.2,
|
94 |
+
)
|
95 |
+
dns_message = message.from_wire(response.content)
|
96 |
+
return [str(rdata) for rdata in dns_message.answer[0]] if dns_message.answer else []
|
97 |
+
|
98 |
+
# see: https://thepythoncode.com/article/dns-enumeration-with-python
|
99 |
+
# https://dnspython.readthedocs.io
|
100 |
+
def enumerate_dns(domain_name: str) -> dict[str, Any] | None:
|
101 |
+
r"""Enumerates information about a specific domain's DNS configuration.
|
102 |
+
|
103 |
+
Information collected about the domain name:
|
104 |
+
1. A records: the IPv4 associated with the domain
|
105 |
+
2. AAAA records: the IPv6 associated with the domain
|
106 |
+
3. CAA records: used by owners to specify which Certificate Authorities
|
107 |
+
are authorized to issue SSL/TLS certificates for their domains.
|
108 |
+
4. CNAME records: alias of one name to another - the DNS lookup will
|
109 |
+
continue by retrying the lookup with the new name.
|
110 |
+
5. LOC records: geographic location associated with a domain name.
|
111 |
+
6. MX records: associated email servers to the domain.
|
112 |
+
7. NS records: DNS servers that are authoritative for a particular domain.
|
113 |
+
These may be use to inquire information about the domain.
|
114 |
+
8. SOA records: defines authoritative information about a DNS zone,
|
115 |
+
including zone transfers and cache expiration.
|
116 |
+
9. TXT records: used for domain verification and email security.
|
117 |
+
10. RP records: the responsible person for a domain.
|
118 |
+
11. SPF records: defines authorized email servers.
|
119 |
+
12. SRV records: specifies location of specific services
|
120 |
+
(port and host) for the domain.
|
121 |
+
14. NSEC records: proves non-existence of DNS records
|
122 |
+
and prevents zone enumeration.
|
123 |
+
15. RRSIG records: contains cryptographic signatures for DNSSEC-signed
|
124 |
+
records, providing authentication and integrity.
|
125 |
+
|
126 |
+
Example:
|
127 |
+
>>> from pprint import pprint
|
128 |
+
>>> pprint(enumerate_dns("youtube.com"))
|
129 |
+
... {'A': 'youtube.com. 300 IN A 142.250.200.142',
|
130 |
+
'AAAA': 'youtube.com. 286 IN AAAA 2a00:1450:4003:80f::200e',
|
131 |
+
'CAA': 'youtube.com. 14352 IN CAA 0 issue "pki.goog"',
|
132 |
+
'CNAME': None,
|
133 |
+
'LOC': None,
|
134 |
+
'MX': 'youtube.com. 300 IN MX 0 smtp.google.com.',
|
135 |
+
'NS': 'youtube.com. 21600 IN NS ns4.google.com.\n'
|
136 |
+
'youtube.com. 21600 IN NS ns1.google.com.\n'
|
137 |
+
'youtube.com. 21600 IN NS ns2.google.com.\n'
|
138 |
+
'youtube.com. 21600 IN NS ns3.google.com.',
|
139 |
+
'NSEC': None,
|
140 |
+
'RP': None,
|
141 |
+
'RRSIG': None,
|
142 |
+
'SOA': 'youtube.com. 60 IN SOA ns1.google.com. dns-admin.google.com. '
|
143 |
+
'766113658 900 900 1800 60',
|
144 |
+
'SPF': None,
|
145 |
+
'SRV': None,
|
146 |
+
'TXT': 'youtube.com. 3586 IN TXT "v=spf1 include:google.com mx -all"\n'
|
147 |
+
'youtube.com. 3586 IN TXT '
|
148 |
+
'"facebook-domain-verification=64jdes7le4h7e7lfpi22rijygx58j1"\n'
|
149 |
+
'youtube.com. 3586 IN TXT '
|
150 |
+
'"google-site-verification=QtQWEwHWM8tHiJ4s-jJWzEQrD_fF3luPnpzNDH-Nw-w"'}
|
151 |
+
|
152 |
+
Args:
|
153 |
+
domain_name: domain name for which to
|
154 |
+
enumerate the DNS configuration.
|
155 |
+
|
156 |
+
Returns:
|
157 |
+
The domain's DNS configuration.
|
158 |
+
"""
|
159 |
+
enumeration = {}
|
160 |
+
for record_type in _DNS_RECORD_TYPES:
|
161 |
+
try:
|
162 |
+
record = _request_dns_record(domain_name, record_type)
|
163 |
+
if record:
|
164 |
+
enumeration[record_type] = record
|
165 |
+
except Exception as e: # noqa: BLE001, PERF203
|
166 |
+
enumeration[record_type] = str(e)
|
167 |
+
return enumeration if enumeration else None
|
168 |
+
|
169 |
+
def resolve_subdomain_ipv4(domain: str) -> str | None:
|
170 |
+
"""Resolve the IPv4 address of a domain.
|
171 |
+
|
172 |
+
Args:
|
173 |
+
domain: domain name
|
174 |
+
|
175 |
+
Returns:
|
176 |
+
The domain is returned provided
|
177 |
+
it was resolved. Otherwise nothing
|
178 |
+
is returned.
|
179 |
+
"""
|
180 |
+
try:
|
181 |
+
_request_dns_record(domain, "A")
|
182 |
+
return domain # noqa: TRY300
|
183 |
+
except Exception: # noqa: BLE001
|
184 |
+
return None
|
185 |
+
|
186 |
+
|
187 |
+
def scrap_subdomains_for_domain(domain_name: str) -> list[str]:
|
188 |
+
"""Retrieves subdomains associated to a domain if any.
|
189 |
+
|
190 |
+
The information retrieved from a domain is its subdomains
|
191 |
+
provided they are the top 1000 subdomain prefixes as
|
192 |
+
indicated by https://github.com/rbsec/dnscan/tree/master
|
193 |
+
|
194 |
+
Importantly, it finds subdomains only if their prefixes
|
195 |
+
are along the top 1000 most common. Hence, it may not
|
196 |
+
yield all the subdomains associated to the domain.
|
197 |
+
|
198 |
+
Example:
|
199 |
+
>>> scrap_subdomains_for_domain("github.com")
|
200 |
+
... ['www.github.com', 'smtp.github.com', 'ns1.github.com',
|
201 |
+
'ns2.github.com','autodiscover.github.com', 'test.github.com',
|
202 |
+
'blog.github.com', 'admin.github.com', 'support.github.com',
|
203 |
+
'docs.github.com', 'shop.github.com', 'wiki.github.com',
|
204 |
+
'api.github.com', 'live.github.com', 'help.github.com',
|
205 |
+
'jobs.github.com', 'services.github.com', 'de.github.com',
|
206 |
+
'cs.github.com', 'fr.github.com', 'ssh.github.com',
|
207 |
+
'partner.github.com', 'community.github.com',
|
208 |
+
'mailer.github.com', 'training.github.com', ...]
|
209 |
+
|
210 |
+
Args:
|
211 |
+
domain_name: domain name for which to retrieve a
|
212 |
+
list of subdomains
|
213 |
+
|
214 |
+
Returns:
|
215 |
+
List of subdomains if any.
|
216 |
+
"""
|
217 |
+
try:
|
218 |
+
with open(_COMMON_SUBDOMAINS_TXT_PATH) as file: # noqa: PTH123
|
219 |
+
subdomains = [line.strip() for line in file if line.strip()]
|
220 |
+
except FileNotFoundError:
|
221 |
+
return []
|
222 |
+
|
223 |
+
potential_subdomains = [f"{subdomain}.{domain_name}" for subdomain in subdomains]
|
224 |
+
with ThreadPoolExecutor(max_workers=5) as executor:
|
225 |
+
results = executor.map(resolve_subdomain_ipv4, potential_subdomains)
|
226 |
+
return [domain for domain in results if domain]
|
227 |
+
|
228 |
+
def retrieve_ioc_from_threatfox(potentially_ioc: str) -> str:
|
229 |
+
r"""Retrieves information about a potential IoC from ThreatFox.
|
230 |
+
|
231 |
+
It may be used to retrieve information of indicators of compromise
|
232 |
+
(IOCs) associated with malware, with the infosec community, AV
|
233 |
+
vendors and cyber threat intelligence providers.
|
234 |
+
|
235 |
+
Examples:
|
236 |
+
>>> retrieve_ioc_from_threatfox("139.180.203.104")
|
237 |
+
... {
|
238 |
+
"query_status": "ok",
|
239 |
+
"data": [
|
240 |
+
{
|
241 |
+
"id": "12",
|
242 |
+
"ioc": "139.180.203.104:443",
|
243 |
+
"threat_type": "botnet_cc",
|
244 |
+
"threat_type_desc": "Indicator that identifies a botnet command&control...",
|
245 |
+
"ioc_type": "ip:port",
|
246 |
+
"ioc_type_desc": "ip:port combination that is used for botnet Command&...,
|
247 |
+
"malware": "win.cobalt_strike",
|
248 |
+
"malware_printable": "Cobalt Strike",
|
249 |
+
"malware_alias": "Agentemis,BEACON,CobaltStrike",
|
250 |
+
"malware_malpedia": "https:\/\/malpedia.caad.fkie.fraunhofer.de\/...",
|
251 |
+
"confidence_level": 75,
|
252 |
+
"first_seen": "2020-12-06 09:10:23 UTC",
|
253 |
+
"last_seen": null,
|
254 |
+
"reference": null,
|
255 |
+
"reporter": "abuse_ch",
|
256 |
+
"tags": null,
|
257 |
+
"malware_samples": [
|
258 |
+
{
|
259 |
+
"time_stamp": "2021-03-23 08:18:06 UTC",
|
260 |
+
"md5_hash": "5b7e82e051ade4b14d163eea2a17bf8b",
|
261 |
+
"sha256_hash": "b325c92fa540edeb89b95dbfd4400c1cb33599c66859....",
|
262 |
+
"malware_bazaar": "https:\/\/bazaar.abuse.ch\/sample\/b325c...\/"
|
263 |
+
},
|
264 |
+
]
|
265 |
+
|
266 |
+
}
|
267 |
+
]
|
268 |
+
}
|
269 |
+
|
270 |
+
Args:
|
271 |
+
potentially_ioc: this can be a url, a domain, a hash,
|
272 |
+
or any other type of IoC.
|
273 |
+
|
274 |
+
Returns:
|
275 |
+
Information of the input as an IoC: threat type, malware type andsamples,
|
276 |
+
confidence level, first/last seen dates, and more IoC information.
|
277 |
+
"""
|
278 |
+
headers = {"Auth-Key": os.environ["THREATFOX_APIKEY"]}
|
279 |
+
pool = urllib3.HTTPSConnectionPool(
|
280 |
+
"threatfox-api.abuse.ch",
|
281 |
+
port=443,
|
282 |
+
maxsize=50,
|
283 |
+
headers=headers,
|
284 |
+
)
|
285 |
+
data = {
|
286 |
+
"query": "search_ioc",
|
287 |
+
"search_term": potentially_ioc,
|
288 |
+
}
|
289 |
+
json_data = json.dumps(data)
|
290 |
+
try:
|
291 |
+
response = pool.request("POST", "/api/v1/", body=json_data)
|
292 |
+
return response.data.decode("utf-8", "ignore")
|
293 |
+
except Exception as e: # noqa: BLE001
|
294 |
+
return str(e)
|
295 |
+
|
296 |
+
|
297 |
+
geo_location_tool = gr.Interface(
|
298 |
+
fn=get_geolocation,
|
299 |
+
inputs=["text"],
|
300 |
+
outputs=["text"],
|
301 |
+
title="Domain Associated Geolocation Finder",
|
302 |
+
description="Retrieves the geolocation associated to an input ip address",
|
303 |
+
theme="default",
|
304 |
+
)
|
305 |
+
|
306 |
+
dns_enumeration_tool = gr.Interface(
|
307 |
+
fn=enumerate_dns,
|
308 |
+
inputs=["text"],
|
309 |
+
outputs=["text"],
|
310 |
+
title="DNS record enumerator of domains",
|
311 |
+
description="Retrieves several dns record types for the input domain names",
|
312 |
+
theme="default",
|
313 |
+
)
|
314 |
+
|
315 |
+
scrap_subdomains_tool = gr.Interface(
|
316 |
+
fn=scrap_subdomains_for_domain,
|
317 |
+
inputs=["text"],
|
318 |
+
outputs=["text"],
|
319 |
+
title="Subdomains Extractor of domains",
|
320 |
+
description="Retrieves the subdomains for the input domain if they are common",
|
321 |
+
theme="default",
|
322 |
+
)
|
323 |
+
|
324 |
+
extractor_of_ioc_from_threatfox_tool = gr.Interface(
|
325 |
+
fn=retrieve_ioc_from_threatfox,
|
326 |
+
inputs=["text"],
|
327 |
+
outputs=["text"],
|
328 |
+
title="IoC information extractor associated to particular entities",
|
329 |
+
description=(
|
330 |
+
"If information as an Indicator of Compromise (IoC) exists"
|
331 |
+
"for the input url, domain or hash, it retrieves it"
|
332 |
+
),
|
333 |
+
theme="default",
|
334 |
+
)
|
uv.lock
CHANGED
The diff for this file is too large to render.
See raw diff
|
|