Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
pyWhat — 🐸 识别任何内容。pyWhat 能轻松识别邮箱、IP地址等。给它一个 .pcap 文件或一些文本,它就会告诉你是什么!🧙‍♀️ | Kitploit
工具/GitHubGitHub/bee-san/pywhat
OSINT (开源情报)侦察漏洞分析网络取证数据泄露取证分析信息收集恶意软件分析秘密检测学习与教育
GitHubbee-san/pywhat

pyWhat

7.3k3885819天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

🐸 识别任何内容。pyWhat 能轻松识别邮箱、IP地址等。给它一个 .pcap 文件或一些文本,它就会告诉你是什么!🧙‍♀️

查看仓库

➡️ Discord ⬅️
识别任何内容的最简单方法
pip3 install pywhat && pywhat --help

Discord PyPI - Downloads Twitter Follow PyPI - Python Version PyPI


🤔 这是什么?

想象一下:你遇到了一些神秘的文本 🧙‍♂️ 0x52908400098527886E0F7030069857D2E4169EE7 或 dQw4w9WgXcQ,你想知道它是什么。你会怎么做?

有了 what,你只需问 what "0x52908400098527886E0F7030069857D2E4169EE7",what 就会告诉你!

what 的工作是识别某个东西_是什么_。 无论是文件还是文本!甚至是文件的十六进制!那文件_内部_的文本呢?我们也支持!what 是递归的,它会识别文本中的一切,甚至更多!

安装

🔨 使用 pip

$ pip3 install pywhat

或

# 安装可选依赖项,可能会提高速度
$ pip3 install pywhat[optimize] 

🔨 在 Mac 上?

$ brew install pywhat

或者对于我们的 MacPorts 粉丝:

$ sudo port install pywhat

⚙ 使用场景

🦠 Wannacry

你遇到了一种名为 WantToCry 的新恶意软件。你回想起 Wannacry,并记得它之所以被阻止,是因为一位研究人员在代码中发现了一个终止开关。

当 Wannacry 中硬编码的某个域名被注册时,病毒就会停止。

你使用 What 来识别恶意软件中的所有域名,并使用域名注册商 API 注册所有域名。

🦈 更快速地分析 Pcap 文件

假设你有一个来自网络攻击的 .pcap 文件。What 可以识别它并快速为你找到:

  • 所有 URL
  • 电子邮件
  • 电话号码
  • 信用卡号
  • 加密货币地址
  • 社会安全号码
  • 以及更多。

使用 what,你可以在几秒钟内(而不是几分钟)识别出 pcap 中的重要内容。

🐞 漏洞赏金

你可以使用 PyWhat 扫描能通过漏洞赏金为你赚钱的内容,例如:

  • API 密钥
  • Webhooks
  • 凭据
  • 以及更多

使用以下命令运行 PyWhat:

pywhat --include "Bug Bounty" TEXT

即可实现。

以下是一些示例 👇

🐙 GitHub 仓库 API 密钥泄露

  1. 下载某个组织的所有 GitHub 仓库
  2. 搜索任何可以作为赏金提交的内容,例如 API 密钥
# 下载所有仓库
GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone

# 找到内容时会打印。
# 循环遍历当前目录中的所有文件。
find . -type f -execdir pywhat --include 'Bug Bounty' {} \;

🕷 扫描所有网页以寻找赏金

# 递归下载某个网站的所有网页
wget -r -np -k https://skerritt.blog

# 找到内容时会打印。
# 循环遍历当前目录中的所有文件。
find . -type f -execdir pywhat --include 'Bug Bounty' {} \;

附注:我们支持的过滤器不止漏洞赏金!运行 pywhat --tags

🌌 其他功能

任何时候你有一个文件,并想在其中找到有用的结构化数据,What 都适合你。

或者如果你遇到某段文本而不知道它是什么,What 会告诉你。

📁 文件与目录处理

文件打开 你可以通过 what 'this/is/a/file/path' 传入文件路径。What 足够智能,能识别出它是一个文件!

那整个目录呢?What 也能处理!它会递归搜索文件并输出你需要的一切!

多个输入 你可以一次传入多个文件、目录或文本,例如 what file1 file2 this/is/a/directory 'some text' 或 find . -name '*.log' -exec what {} +。What 会显示每个匹配项所在的文件,文本中的匹配项位于 text 下,而 --json 会以单个 JSON 对象返回所有内容。

Unicode 通过管道传入 What 的文件和文本可以是 UTF-8,或带字节顺序标记的 UTF-16 或 UTF-32,例如 Windows 保存的“Unicode”文本文件。What 还会搜索二进制文件中的 UTF-16 字符串(类似于 strings -el),这是 Windows 程序存储其大部分文本的方式。你的终端无法显示的字符会以转义序列(如 \u20bf)打印,而不是导致崩溃。

🔍 过滤输出

有时,你只关心查看与 AWS 相关的内容。或者漏洞赏金,或者加密货币!

你可以使用 what --rarity 0.2:0.8 --include Identifiers,URL https://skerritt.blog 来过滤输出。使用 what --help 获取更多信息。

默认情况下,what 只显示稀有度(rarity)为 0.1 或更高的匹配项,因为稀有度较低的匹配项通常是误报。例如,单独的 YouTube 视频 ID,如 dQw4w9WgXcQ,可能是任意 11 个随机字符,因此 what dQw4w9WgXcQ 找不到任何内容,但 what --rarity 0: dQw4w9WgXcQ 会显示它。YouTube 链接,如 https://youtu.be/dQw4w9WgXcQ 或 youtube.com/watch?v=dQw4w9WgXcQ&t=42s,默认会显示。

要查看所有过滤器,请运行 pywhat --tags!你还可以组合它们,例如要查看所有加密货币钱包但排除 Ripple,你可以这样做:

pywhat --include "Cryptocurrency Wallet" --exclude "Ripple Wallet" 1KFHE7w8BhaENAswwryaoccDb6qcT6DbYY

正则表达式的名称像标签一样工作,许多正则表达式也有更短的替代名称,例如 BTC Wallet 对应 Bitcoin (₿) Wallet Address,或 ARN 对应 Amazon Resource Name (ARN)。要只查看比特币和以太坊钱包:

pywhat --include "BTC Wallet,ETH Wallet" TEXT

运行 pywhat --names 查看每个正则表达式的名称及其替代名称。

👽 排序、导出及更多!

排序 你可以使用 what -k rarity --reverse TEXT 对输出进行排序。使用 what --help 获取更多信息。

最佳匹配 找到的太多了?what --top 10 TEXT 只显示最可能的 10 个匹配项,最可能的排在最前面,而 what --top 5% TEXT 显示其中最可能的 5%。对于目录或多个输入,这些是所有输入中最可能的匹配项。最可能的匹配项具有最高的稀有度,但较长单词或匹配项的片段(无边界模式会找到它们)可能性较低:what --top 1 0x52908400098527886E0F7030069857D2E4169EE7 显示以太坊地址,而不是其中的卡号和社保号码。what -k likely TEXT 按此顺序显示所有匹配项。在 API 中,pywhat.ranking.top_matches(identified, 10) 保留 Identifier.identify() 返回结果中最可能的 10 个匹配项,而匹配项的 "Fragment" 键表示它是否为片段。

导出 你可以使用 what --json 导出为 json,结果可以直接发送到文件,使用 what --json > file.json。JSON 打印在一行上,因此也可以管道传输到其他程序,例如 what --json TEXT | jq。

进度与流式输出 当搜索需要一段时间时,例如对大文件或目录进行搜索,进度条会显示 What 的进度:它已为该文件搜索了多少个正则表达式,以及当前正在搜索哪一个;对于目录或多个输入,则显示已搜索了多少个文件。它们仅在终端上显示(如果输出重定向到文件,则显示在 stderr 上),并在搜索完成后消失,--no-progress 可关闭它们。使用 --stream 时,What 会在找到每个匹配项时立即打印,而不是在搜索完成后:what --stream big.log,或 what --stream --json big.log > matches.jsonl 以每个匹配项一个 JSON 对象、每行一个的形式输出。由于它不等待所有匹配项,--stream 无法对它们排序(--key)或只显示最可能的那些(--top),并且其 JSON 没有 "Fragment" 键。

无边界模式 What 有一种特殊模式,可以在字符串中匹配可识别信息。默认情况下,它在 CLI 中启用,但在 API 中禁用。使用 what --help 或参阅 API 文档 获取更多信息。

处理 一旦正则表达式找到了某些内容,What 可以进一步处理它,超越正则表达式的能力。例如,Unix 时间戳的日期会被添加到其描述中:what --rarity 0: --include "UNIX Timestamp" 1637093119 显示 Date: November 16, 2021 8:05:19 PM UTC。比特币钱包地址有校验和,因此校验和错误的匹配项,如 3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F,会被过滤掉。使用 what --disable-processing 关闭此功能。

验证密钥 what --verify 会询问服务它找到的密钥是否有效,并将答案添加到其描述中。目前它会验证 Google API 密钥:what --verify AIzaSyA00000000000000000000000000000000 显示 Verification: invalid, Google rejected the key (API_KEY_INVALID)。一个有效但无法使用所测试 API 的密钥(例如 SERVICE_DISABLED)会被报告为有效。验证默认关闭,因为它会将密钥发送到服务(通过 HTTPS,每个密钥一次),因此仅对你被允许测试的密钥使用它。密钥的 Exploit 还包含用于自行验证的 curl 命令。

地图 坐标会链接到 Google Maps。使用 what --map osm 将它们改为链接到 OpenStreetMap:what --map osm '52.6169586, -1.9779857' 显示 Link: https://www.openstreetmap.org/search?query=52.6169586,-1.9779857。

💬 交互模式

要分析很大的内容?使用 --interactive 将其一次性加载到内存中,然后可以随意搜索 What 找到的内容,而无需再次扫描:

$ pywhat --interactive .
pywhat> tags
pywhat> include Bug Bounty
pywhat> top 10
pywhat> more
pywhat> location:"/src", include:"Bug Bounty", exclude:"Credit Card", rarity:"0.1:0.6"
pywhat> load another/directory

tags 显示当前匹配项的标签以及每个标签有多少个匹配项,include TAG 和 exclude TAG 缩小搜索范围。top 10 只显示一次搜索中最可能的 10 个匹配项(--top 10 从一开始就执行此操作),more 显示接下来的 10 个。一次搜索组合 location:、include:、exclude:、rarity: 和要查找的文本,其每一部分都必须匹配。在 readline 可用的地方,Tab 会补全命令、搜索键、标签、稀有度和路径。在交互模式下输入 help 查看所有命令。

🍕 API

PyWhat 有一个 API!点击此处 https://github.com/bee-san/pyWhat/wiki/API 了解它。

你还可以用自己的代码处理匹配项,例如过滤掉误报。处理器会接收 names 中命名的正则表达式的每个匹配项,并返回它(可能已更改,如其描述、稀有度等),或返回 None 将其过滤掉。它是一个对象,因此可以在匹配项之间保持状态:

from pywhat import Identifier, Processor
from pywhat.processors import default_processors


class URLProcessor(Processor):
    names = ["Uniform Resource Locator (URL)"]

    def process(self, match):
        if "trashurl.it" in match["Matched"]:
            return None
        return match


id = Identifier(processors=[*default_processors(), URLProcessor()])
id.identify("https://trashurl.it/page")

Identifier(processors=[]) 或 identify(text, processors=[]) 会关闭处理。

要使用 API 验证密钥,如 --verify,请将验证器添加到处理器中:Identifier(processors=[*default_processors(), *verifiers()]),其中 verifiers 来自 pywhat.processors。

下载工具