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

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

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

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

工具目录

分类

查看所有分类
Loading categories
bidi-guard — 扫描代码中不可见的双向 Unicode 字符(Trojan Source 攻击防护,CVE-2021-42574) | Kitploit
工具/GitHubGitHub/moshe-ship/bidi-guard
静态分析漏洞分析代码分析DevSecOps供应链安全学习与教育
GitHubmoshe-ship/bidi-guard

bidi-guard

扫描代码中不可见的双向 Unicode 字符(Trojan Source 攻击防护,CVE-2021-42574)

查看仓库
54个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

bidi-guard

扫描代码中不可见的双向 Unicode 字符

MIT License Python 3.9+


为什么需要这个工具

不可见的 Unicode 双向字符会使源代码的显示效果与实际执行结果不一致。这就是 CVE-2021-42574 —— Trojan Source 攻击。

攻击者会嵌入可逆转文本方向的字符。在代码审查中,你看到的是:

root@kitploit:~
access_level = "admin"

但编译器看到的却是:

root@kitploit:~
access_level = "user"

这些字符是不可见的。你的编辑器不会显示它们,审查者也无法发现它们。bidi-guard 可以。

安装

root@kitploit:~
pip install bidi-guard

快速开始

root@kitploit:~
# Scan current directory recursively
bidi-guard scan .

# Scan a specific file
bidi-guard scan src/auth.py

查找所有双向 Unicode 字符,并显示它们的精确位置、上下文和严重级别。

命令

CI 集成

GitHub Action

root@kitploit:~
name: BiDi Guard
on: [push, pull_request]
jobs:
  bidi-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.11"
      - run: pip install bidi-guard
      - run: bidi-guard ci .

Pre-commit

将其添加到你的 .pre-commit-config.yaml:

root@kitploit:~
repos:
  - repo: https://github.com/Moshe-ship/bidi-guard
    rev: v0.1.0
    hooks:
      - id: bidi-guard

检测到的字符

全部 16 个 Unicode 双向控制字符:

标记为 高 或 严重 的字符可以主动重排显示文本 —— 这些正是 Trojan Source 攻击所使用的字符。

作为库使用

root@kitploit:~
from bidi_guard import scan_file, Finding

findings = scan_file("src/auth.py")
for f in findings:
    print(f"{f.char_name} at line {f.line}:{f.col} — severity: {f.severity}")

为什么不直接用 grep?

这些字符是看不见的。字面上就是看不见:

root@kitploit:~
grep "RLO" file.py    # finds nothing
cat file.py            # looks completely normal

bidi-guard 能告诉你 grep 无法显示的信息:精确字符、位置、上下文、严重级别及其作用。它还可以通过剥离这些字符来自动修复。

许可证

MIT —— Musa the Carpenter


由 沙特 AI 社区 为您呈现 —— 优先面向阿拉伯人,进而惠及整个世界。

下载工具
命令作用
scan扫描文件中的 bidi 字符,显示带上下文的发现结果
ciCI 模式 —— 若发现任何危险字符则以非零状态退出
fix从文件中移除所有 bidi 字符(默认交互式)
explain通过可视化示例展示每个 bidi 字符的作用
init为你的项目生成一个 .bidi-guard.yml 配置文件
码点名称缩写严重级别
U+200E左到右标记LRM低
U+200F右到左标记RLM低
U+061C阿拉伯字母标记ALM低
U+200D零宽连接符ZWJ低
U+200C零宽非连接符ZWNJ低
U+2066左到右隔离符LRI中
U+2067右到左隔离符RLI高
U+2068首强隔离符FSI高
U+2069弹出方向隔离符PDI中
U+202A左到右嵌入LRE中
U+202B右到左嵌入RLE高
U+202C弹出方向格式化PDF中
U+202D左到右覆盖LRO高
U+202E右到左覆盖RLO严重
U+2028行分隔符LS中
U+2029段落分隔符PS中