Wtfis:面向非爬虫的被动式域名、IP 和主机名查询工具
pirxthepilot / wtfis Public
- Notifications You must be signed in to change notification settings
- Fork 56
- Star 1.1k
被动式域名、IP 和主机名查询工具,专为人类设计。
License
pirxthepilot/wtfis
Go to file
Folders and files
| Name | Name | Last commit message | Last commit date | | :-------------------- | :-------------------- | :------------------ | :--------------- | | .github/workflows | .github/workflows | | | | imgs | imgs | | | | tests | tests | | | | wtfis | wtfis | | | | .env.wtfis.example | .env.wtfis.example | | | | .flake8 | .flake8 | | | | .gitignore | .gitignore | | | | Dockerfile | Dockerfile | | | | LICENSE | LICENSE | | | | Makefile | Makefile | | | | README.md | README.md | | | | pyproject.toml | pyproject.toml | | |
View all files
Repository files navigation
wtfis
被动式域名、IP 和主机名查询工具,专为人类设计。
WTF is it?
wtfis 是一个命令行工具,它使用各种 OSINT 服务收集关于域名、FQDN 或 IP 地址的信息。与其他同类工具不同,它是专门为人类使用而构建的,提供美观(可能因人而异)且易于阅读和理解的结果。
该工具假定您使用的是免费层级/社区级别的帐户,因此会尽可能少地进行 API 调用,以最大限度地减少达到配额和速率限制的情况。
项目名称是 "whois" 的双关语。
Data Sources
| Service | Used in lookup | Required | Free Tier | | :------------------------------------------------------------------------------------- | :------------- | :------- | :------------------------------------------------------------------------------------- | | Virustotal | All | Yes | Yes | | IP2Whois | Domain/FQDN | No | Yes | | IPWhois | IP address | No | Yes (no signup) | | Shodan | IP address | No | No | | Greynoise | IP address | No | Yes | | URLhaus | All | No | Yes (no signup) | | AbuseIPDB | IP address | No | Yes |
Virustotal
主要信息来源。检索:
- Hostname (FQDN), domain or IP
- 具有供应商详细信息的最新分析统计信息
- 声誉评分(基于 VT 社区投票)
- 受欢迎程度排名(Alexa、Cisco Umbrella 等)(仅限 FQDN 和域名)
- 类别(由不同的供应商分配)
- Resolutions (仅限 FQDN 和域名)
- 最近 n 个 IP 地址(默认值:3,最大值:10)
- 上述每个 IP 的最新分析统计信息
- Whois
- 仅作为后备:如果 IP2Whois 凭据不可用
- 关于域名本身的各种 whois 数据
IP2Whois
如果提供凭据,则可以选择使用。检索:
- Whois
- 关于域名本身的各种 whois 数据
建议使用 IP2Whois 而不是 Virustotal 来获取 whois 数据,原因如下:
- VT whois 数据格式不太一致
- IP2Whois whois 数据往往比 VT 质量更好。此外,VT 的注册人数据显然是匿名化的。
- 您可以通过卸载到 IP2Whois 来节省一个 VT API 调用。
IPWhois
IP 地址的默认地理位置和 ASN 查找源。检索:
- ASN、Org、ISP 和地理位置
IPWhois 不应与提供域名 Whois 数据的 IP2Whois 混淆。
Shodan
从 /shodan/host/{ip}
端点获取数据(参见文档)。对于每个 IP,检索:
- 开放端口和服务列表
- 操作系统(如果可用)
- 标签(由 Shodan 分配)
Greynoise
使用 Greynoise 的社区 API,wtfis 将显示 IP 是否在 Greynoise 的数据集中:
- Noise:IP 经常被发现扫描互联网
- RIOT:IP 属于常见的商业应用程序(例如 Microsoft O365、Google Workspace、Slack)
有关数据集的更多信息请参见此处。
此外,API 还会返回 Greynoise 对 IP 的分类(如果可用)。可能的值为 benign、malicious 和 unknown。
URLhaus
URLhaus 是一个众包的恶意 URL 报告数据库。此增强功能提供了有关查询的主机名或 IP 是否正在或曾经用于通过 HTTP 或 HTTPS 分发恶意软件的见解。提供的数据包括:
AbuseIPDB
AbuseIPDB 是一个众包的恶意 IP 地址报告数据库。通过其 API,wtfis 显示:
- 滥用置信度评分 (0-100)
- 报告数量
Install
$ pip install wtfis
要通过 conda
安装(从 conda-forge),请参见 wtfis-feedstock。
要通过 brew
安装:
brew install wtfis
Setup
wtfis 使用以下环境变量:
VT_API_KEY
(required) - Virustotal API keyIP2WHOIS_API_KEY
(optional) - IP2WHOIS API keySHODAN_API_KEY
(optional) - Shodan API keyGREYNOISE_API_KEY
(optional) - Greynoise API keyABUSEIPDB_API_KEY
(optional) - AbuseIPDB API keyWTFIS_DEFAULTS
(optional) - Default arguments
使用您自己的方法设置这些变量。
或者,在您的主目录中创建一个文件 ~/.env.wtfis
,其中包含上述声明。有关模板,请参见 .env.wtfis.example。注意:不要忘记chmod 400
该文件!
Usage
usage: wtfis [-h] [-m N] [-s] [-g] [-a] [-u] [-n] [-1] [-V] entity
positional arguments:
entity Hostname, domain or IP
optional arguments:
-h, --help show this help message and exit
-m N, --max-resolutions N
Maximum number of resolutions to show (default: 3)
-s, --use-shodan Use Shodan to enrich IPs
-g, --use-greynoise Enable Greynoise for IPs
-a, --use-abuseipdb Enable AbuseIPDB for IPs
-u, --use-urlhaus Enable URLhaus for IPs and domains
-n, --no-color Show output without colors
-1, --one-column Display results in one column
-V, --version Print version number
基本上:
$ wtfis FQDN_OR_DOMAIN_OR_IP
您将获得按面板组织的结果,类似于上图。
接受 Defanged 输入(例如 api[.]google[.]com
)。
如果终端支持,某些字段和标题是可单击的超链接,指向相应服务的网站。
Shodan
Shodan 可用于显示 IP 的开放端口或服务,以及某些结果中的操作系统。使用 -s
或 --use-shodan
标志调用。
如果终端支持,Services
字段是一个可单击的超链接,可将您带到 Shodan Web 界面。
Greynoise
要启用 Greynoise,请使用 -g
或 --use-greynoise
标志调用。由于 API 配额非常低(截至 2023 年 3 月,每周 50 个请求),因此默认情况下此查找已关闭。
GreyNoise
字段名称也是一个超链接(如果终端支持),指向 Greynoise Web 界面中的 IP 条目,其中显示了更多上下文。
URLhaus
使用 -u
或 --use-urlhaus
标志启用主机名、域名和 IP 的 URLhaus 增强功能。
Malware URLs
字段名称是一个超链接(如果终端支持),可将您带到查询的特定 URLhaus 数据库页面。
AbuseIPDB
使用 -a
或 --use-abuseipdb
标志启用主机名、域名和 IP 的 AbuseIPDB 增强功能。
AbuseIPDB
字段名称是一个超链接(如果终端支持),可将您带到查询的特定 AbuseIPDB 数据库页面。
Display options
对于 FQDN 和域名查找,您可以使用 -m NUMBER
或 --max-resolutions=NUMBER
来增加或减少显示的最大 IP 解析数。上限为 10。如果您根本不需要解析,请将数字设置为 0
。
要在一个列中显示所有面板,请使用 -1
或 --one-column
标志。
可以使用 -n
或 --no-color
显示没有颜色的面板。
Defaults
可以通过设置 WTFIS_DEFAULTS
环境变量来定义默认参数。例如,要默认使用 shodan 并在一个列中显示结果:
WTFIS_DEFAULTS=-s -1
如果参数在 WTFIS_DEFAULTS
中,则在命令调用期间指定相同的参数会否定该参数。因此,在上面的示例中,如果您随后运行:
$ wtfis example.com -s
则将不会使用 Shodan。
请注意,目前无法在默认值中定义最大分辨率(-m N, --max-resolutions N
)。
Docker
wtfis 可以从 Docker 镜像运行。首先,构建镜像(使用包含的 Dockerfile),方法是运行:
$ make docker-image
该镜像将具有最新_标记_版本(不一定来自最新提交)的 wtfis。这确保您获得的是稳定版本。
您可以通过两种方式运行镜像:
确保 .env.wtfis
位于您的主目录中,并设置必要的 envvars。然后只需运行:
$ make docker-run
这是以下命令的别名
$ docker run --env-file=${HOME}/.env.wtfis -it wtfis
请注意,每个定义在等号前后都不能有任何空格 (FOO=bar
,而不是 FOO = bar
)。
或者,您可以自己设置环境变量,然后运行,例如:
$ docker run -e VT_API_KEY -e SHODAN_API_KEY -it wtfis
About
Passive hostname, domain and IP lookup tool for non-robots
Resources
License
Stars
Watchers
Forks
Releases 25
Packages 0
No packages published
Contributors 6
Languages
- Python 99.5%
- Other 0.5%
Footer
© 2025 GitHub, Inc.