Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
EvilFontTool — 一款基于字体的欺骗工具,适用于红队演练、安全研究及其他任何用途。 | Kitploit
工具/GitHubGitHub/doctoreww/evilfonttool
社会工程学学习与教育红队AI 安全对抗性攻击实验室与实践
GitHubdoctoreww/evilfonttool

EvilFontTool

一款基于字体的欺骗工具,适用于红队演练、安全研究及其他任何用途。

查看仓库
2572011天前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

EvilFontTool

一个基于字体的欺骗工具,用于红队、安全研究以及其他用途。

EvilFontTool 将机器可读的文本隐藏在文档中,而文档向人类读者显示完全不同的文本。它通过使用 Evil Fonts(邪恶字体) 来实现这一点——这种字体故意欺骗观看者,渲染出与计算机所理解的不同字母。通过重映射字体字形,文档的可见字符向人类展示的是一回事,而终端、AI 系统和剪贴板复制粘贴看到的则是另一回事。

Evil Font 演示/实验室 !!别错过!!

  • 查看演示 → 此处

  • 查看 Evil Font 实验室 → 此处

由于手机渲染字体的方式,Word docx 演示在移动设备上无法正常工作。


目录

  • 安装
  • 使用技巧
  • PDF 的痛点说明
  • 使用方法
  • 道德使用与免责声明
  • 远离 Evil Fonts 的防护
  • 贡献
  • 帮帮我,有些东西不工作!

安装

root@kitploit:~
pip install evilfonttool

从源码安装

root@kitploit:~
git clone https://github.com/DoctorEww/EvilFontTool.git
cd EvilFontTool
pip install .

用于开发(可编辑安装):

root@kitploit:~
pip install -e .

依赖项

通过 pip 自动安装:

  • fonttools — 字体解析与操作
  • brotli — WOFF2 压缩(由 fonttools 使用)
  • python-docx — DOCX 生成
  • reportlab — PDF 生成
  • pdf2image — PDF 转图像
  • pdfminer.six — PDF 文本/布局提取
  • Pillow — 用于 PDF 管线的图像处理

系统要求(不由 pip 安装——必须位于你的 PATH 中):

  • LibreOffice — pdf 命令必需,它会调用 soffice --headless 将 DOCX 转换为 PDF。pdf 命令在 Windows 上处于实验阶段,可能无法按预期工作。
    • Ubuntu/Debian:sudo apt install libreoffice
    • macOS:brew install --cask libreoffice
    • Windows:下载安装程序
  • poppler-utils — pdf2image 渲染 PDF 页面以供 pdf 命令使用所必需
    • Ubuntu/Debian:sudo apt install poppler-utils
    • macOS:brew install poppler
    • Windows:适用于 Windows 的 poppler(将 Library\bin 文件夹添加到路径)。或者参见下文。

Windows 上安装 poppler 的辅助脚本

将 poppler 安装到 ~\Documents\poppler 并添加到路径。

root@kitploit:~
irm (irm https://api.github.com/repos/oschwartz10612/poppler-windows/releases/latest).assets[0].browser_download_url -OutFile ~\Documents\poppler.zip
Expand-Archive ~\Documents\poppler.zip ~\Documents\poppler -Force
$bin = (gci ~\Documents\poppler -Recurse -Filter pdftotext.exe)[0].DirectoryName
[Environment]::SetEnvironmentVariable('Path', [Environment]::GetEnvironmentVariable('Path','User') + ";$bin", 'User'); $env:Path += ";$bin"

在哪里可以找到可用的字体?

  • Ubuntu:/usr/share/fonts
  • Windows:C:\Windows\Fonts
  • https://fonts.google.com/
  • 互联网??

使用技巧

  • 在 Linux 上生成字体和 PDF。pdf 命令在 Windows 上处于实验阶段,可能无法按预期工作。
  • pdf 命令不适用于复杂的 Word 文档,例如分栏。如果你非常希望它支持某个功能,欢迎提交 issue。
  • 要嵌入字体,请使用 doc --ttf-dir <ttffonts_dir>(EvilFontTool 自行嵌入字体),或者在 Windows 上使用 Word。LibreOffice 自带的“嵌入字体”选项对 Evil Fonts 无效。

PDF 的痛点说明

pdf 命令完全不依赖 Evil Fonts。它先将 DOCX 渲染为图像(因此可见页面是一张图片,而不是文本),然后在上面绘制完全不可见但可选择的真实计算机文本。复制粘贴和文本提取读取的是那个不可见图层。还有一些其他工具可以做到这一点,但当你已经有一个满意的 DOCX 时,没有比 pdf 命令更简单的了。

如果你想要一个真正的 Evil Font PDF,你需要在没有不可见字母的情况下构建 Word 文档(不可见字母无法在 PDF 转换中保留)。然后直接从 Word 导出,或使用“打印到 PDF”。这样可以保持所有内容在单一图层中,使文档产生与 pdf 命令所用的著名双层技巧不同的 IOC。pdf 命令的存在纯粹是因为手动过程很繁琐,有时你只是想快速获得 Word 文档的 PDF 副本。

TLDR;

  • 选项 1:(简单方式)使用 pdf 命令 → 双层 PDF,与其他工具机制相同(更知名/更易被检测)。
  • 选项 2:(真正的 Evil Font 方式)构建一个不含不可见字体的 Word 文档,然后通过“打印到 PDF”转换 → 更麻烦,但产生的 IOC 与选项 1 不同。

如果有人搞清楚了如何在带不可见字母的情况下实现选项 2,我欠你一杯酒。请提交 issue,我会在 README 中致谢。

使用方法

所有功能都通过一个 CLI 暴露,包含四个子命令。

create — 生成用于 HTML 或 DOC 文件的字体族

root@kitploit:~
evilfonttool create <reference_font> <output_dir> <font_name>
参数描述
reference_font指向 .ttf 或 .woff 源字体的路径
output_dir写入字体和 CSS 的目录
font_name生成的字体族的内部名称前缀

示例:

root@kitploit:~
evilfonttool create fonts/Arial.ttf output/ 'Arial'

输出:

  • output/fonts/*.woff — Web 字体,每个字符一个
  • output/ttffonts/*.ttf — 用于文档嵌入的 TTF 字体
  • output/fonts.css — 用于 Web 使用的 @font-face 声明

输入文件格式

  • 纯文本 .txt 文件。
  • computer_file 中的每一行必须等于或长于 human_file 中对应的行。
  • 行按位置匹配(第 1 行对应第 1 行,依此类推)。

web — 生成 Evil Font HTML 文件

root@kitploit:~
evilfonttool web <human_file> <computer_file> <output_file>

需要 fonts.css 和生成的字体位于输出目录中,以便 HTML 文件使用(或者在 HTML 文件中更改路径)。

参数描述
input_human_file人类读者可见的文本。可以是多行
input_computer_file机器 / AI 可见的文本。可以是多行
output_file生成的 HTML 文件的路径

示例:

root@kitploit:~
evilfonttool web human.txt computer.txt output/index.html

doc — 生成 Evil Font DOCX 文件

root@kitploit:~
evilfonttool doc <human_file> <computer_file> <output_file> <font_name> [--author AUTHOR] [--ttf-dir DIR]

font_name 必须与 create 步骤中使用的名称一致。TTF 字体必须安装在系统上、通过 --ttf-dir 嵌入,或在 Word 中手动嵌入(文件 -> 选项 -> 保存 -> 嵌入字体),才能使欺骗效果正确呈现。

Word 自带的“嵌入字体”保存选项可以正常工作,但 LibreOffice 的不行——我一直无法让它正确嵌入 Evil Fonts。请改为传递 --ttf-dir:EvilFontTool 会自行将字体直接嵌入 .docx,完全不依赖 Word 或 LibreOffice 的嵌入功能。

示例:

root@kitploit:~
evilfonttool doc human.txt computer.txt output/secret.docx MyFont --author "Finance Team" --ttf-dir output/ttffonts

pdf — 将 Evil Font DOCX 转换为支持复制粘贴的 PDF

root@kitploit:~
evilfonttool pdf <input_docx> <output_file> [--ttf-dir DIR] [--dpi DPI] [--soffice PATH] [--ink-font FONT] [--title TITLE] [--author AUTHOR] [--subject SUBJECT] [--producer PRODUCER]

使用 LibreOffice 渲染 DOCX,使 PDF 看起来与文档完全一致,然后将隐藏的有效载荷叠加为不可见的复制图层,以便在所有查看器中都能正常复制粘贴。

Windows: 此命令在 Windows 上处于实验阶段,可能无法按预期工作。

需要 LibreOffice(soffice)和 poppler-utils — 参见 依赖项。

示例:

root@kitploit:~
evilfonttool pdf output/secret.docx output/secret.pdf --ttf-dir output/fonts/ttffonts --title secret

道德使用与免责声明

你需要对如何使用此工具负责。 在未经明确授权的情况下,针对系统或个人部署此技术是不道德的,并且可能是非法的。作者提供此工具是为了帮助防御者理解并测试此类漏洞——而不是为了助长攻击。


远离 Evil Fonts 的防护

创建此工具是为了帮助红队成员验证基于字体的攻击对其组织构成的风险。它也是为了帮助蓝队成员、研究人员和系统所有者理解,由于固有地信任用户提供的字体而在安全方面留下的漏洞。以下是给个人和行业的一些实用建议,以应对或缓解现代操作系统和应用程序中字体带来的问题。

我可以怎样对抗 Evil Fonts?

  • 不要信任来自不受信任来源的任何内容。检查电子邮件发件人和域名。
  • 在执行命令之前,先验证粘贴后的命令。
  • 永远不要运行你不理解的命令。
  • 不要运行将 curl 输出直接管道传递给 bash / Invoke-Expression 的命令。攻击者很容易切换你正在下载的网站。
  • 永远不要打开来自不受信任来源的电子邮件附件。
  • 请记住,Evil Fonts 依赖于欺骗观察者才能生效。用户必须采取某种行动,Evil Fonts 才会构成风险。如果不采取冒险行动,Evil Fonts 就影响不到你。
  • 不要将由他人创建的文档上传到 AI 工具。

行业可以采取哪些措施来防范 Evil Fonts?

  • 不允许自定义字体在受保护视图(Microsoft Office 套件)中渲染。
  • 不允许用户引入自定义字体,或限制自定义字体的数量。
  • 将网页或 Word 文档中大量自定义字体视为恶意软件信号。
  • 在用户第一次使用 Win + R 时,用一个可怕的弹窗警告他们这非常危险(我不知道为什么这还没有成为现实……)。
  • 在使用 AI 处理文档时,将文档渲染为图像并使用 OCR 提取文本。这还有一个额外的好处,即可以防范包含文本的图像。
  • 不要在威胁模型中忽略用户提供的字体。
  • 将用户提供的字体视为其本质:不受信任的用户输入。

贡献

欢迎贡献。如果你发现了新的攻击面、字体生成管线的改进,或值得记录的防御技术,请提交 issue 或 PR。

  1. Fork 本仓库
  2. 创建功能分支(git checkout -b feature/my-feature)
  3. 提交你的更改
  4. 提交 pull request,并清晰描述更改了什么以及为什么

帮帮我,有些东西不工作!

由于 Word 文档、PDF 和字体的复杂性,这个工具真的很难测试。如果你发现了可复现的问题,请提交 GitHub issue,我会尽快处理。

请在 issue 中包含以下内容:

  • 操作系统 + LibreOffice 版本,以及你正在哪里查看文件(Word / LibreOffice / 其他)。
  • 字体是已安装、已嵌入,还是两者都不是。
  • 你运行的确切命令以及任何终端输出(尤其是 mismatch 警告)。
  • 如果可以分享,附上一个能复现问题的最小 .docx / 输入文件。
  • 任何其他可能导致问题的信息。
下载工具
参数描述
input_human_file人类读者可见的文本。可以是多行
input_computer_file机器 / AI 可见的文本。可以是多行
output_file生成的 DOCX 文件的路径
font_name字体族名称(必须与 create 步骤一致)
--authorDOCX 文档作者元数据(默认:无)
--ttf-dirEvil Font TTF 的目录(例如 <output_dir>/ttffonts)。如果提供,实际使用的字体会直接嵌入 .docx,因此无需在系统中安装即可正确呈现欺骗效果。仅嵌入 human 文件中包含的字母。
参数描述
input_docxEvil Font DOCX 的路径(来自 doc 步骤)
output_file生成的 PDF 文件的路径
--ttf-dirEvil Font TTF 的目录(例如 <output_dir>/ttffonts),暴露给 LibreOffice 以便伪装能够正确呈现。仅当字体已系统安装或嵌入文件中时才可省略
--dpi可见图层的栅格化质量(默认:200)
--sofficeLibreOffice 可执行文件的路径(默认:soffice)
--ink-font不可见复制图层的 TTF 字体(默认:系统无衬线字体)
--titlePDF 文档标题元数据(默认:Untitled)
--authorPDF 文档作者元数据(默认:无)
--subjectPDF 文档主题元数据(默认:无)
--producerPDF 文档生产者元数据(默认:无)