tianwater-QAQ/logscrub

GitHub: tianwater-QAQ/logscrub

logscrub 是一个零依赖的轻量级 CLI 与 Python 库,用于在将文本粘贴到 LLM、issue 或聊天之前自动脱敏其中的 API 密钥和 PII 数据。

Stars: 0 | Forks: 0

# logscrub 在你将文本粘贴到 LLM、提交到 GitHub issue 或在聊天中分享日志**之前**,脱敏其中的机密信息和个人身份信息(PII)。 我们都有过这样的经历:把堆栈跟踪或 `.env` 文件复制到 ChatGPT 中进行调试,结果在这个过程中悄悄泄露了 API key。`logscrub` 是一个微小且无依赖的过滤器,它能捕获常见的敏感信息并将其替换为清晰的占位符。 ``` $ cat app.log | logscrub --stats logscrub: redacted 5 item(s): openai_key=1, secret_assignment=1, email=1, ip=1, credit_card=1 ERROR auth failed OPENAI_KEY=[REDACTED:openai_key] user [REDACTED:email] from [REDACTED:ip] password=[REDACTED:secret_assignment] card [REDACTED:credit_card] ``` ## 安装 ``` pip install logscrub # once published to PyPI # 或者,从 source: pip install . ``` ## 作为 CLI 使用 ``` cat app.log | logscrub # stdin -> stdout logscrub app.log -o clean.log # file -> file logscrub app.log --stats # also print a summary to stderr cat app.log | logscrub --keep email,ip # leave emails and IPs alone ``` ## 作为库使用 ``` from logscrub import scrub result = scrub('OPENAI_KEY=sk-proj-... contact me@example.com') print(result.text) # 'OPENAI_KEY=[REDACTED:openai_key] contact [REDACTED:email]' print(result.findings) # Counter({'openai_key': 1, 'email': 1}) print(result.total) # 2 ``` ## 它能捕获的内容 | 类别 | 示例 | |---|---| | API keys / tokens | OpenAI (`sk-…`)、GitHub (`ghp_…`)、AWS (`AKIA…`)、Google (`AIza…`)、Slack (`xox…`)、Stripe (`sk_live_…`)、Twilio (`SK…`)、SendGrid (`SG.…`) | | Auth | `Bearer …`、JWTs (`eyJ….….…`) | | 密钥 | `-----BEGIN … PRIVATE KEY-----` 块 | | 命名值 | `password = …`、`api_key: …`、`client_secret=…`(值被脱敏,键名保留) | | PII | 电子邮件、IPv4 地址、信用卡号 | 为了保持较低的误报率: - **信用卡**仅在通过 [Luhn](https://en.wikipedia.org/wiki/Luhn_algorithm) 校验时才会被脱敏。 - **IPv4** 必须具有有效的八位组(因此 `999.1.1.1` 或版本号字符串将被忽略)。 这是一个实用的过滤器,并非安全保证——在分享之前,请检查任何敏感内容。在 `logscrub/patterns.py` 中添加检测器只需一行代码;欢迎提交 PR。 ## 测试 ``` pip install pytest && pytest ``` ## 许可证 [MIT](LICENSE) © Tianwater
标签:LLM辅助, PII过滤, Python, 敏感信息脱敏, 无后门, 逆向工具