news 2026/8/21 15:21:51

如何消除Shotlooter误报?高熵字符串与信用卡检测的3个调优技巧

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何消除Shotlooter误报?高熵字符串与信用卡检测的3个调优技巧

如何消除Shotlooter误报?高熵字符串与信用卡检测的3个调优技巧

【免费下载链接】shotlootera recon tool that finds sensitive data inside the screenshots uploaded to prnt.sc项目地址: https://gitcode.com/gh_mirrors/sh/shotlooter

Shotlooter 是一款开源的截图敏感信息嗅探工具,它通过 OCR 识别上传到 prnt.sc 的截图内容,并综合运用关键词匹配、高熵字符串检测和信用卡 Luhn 校验,帮你快速定位 API 密钥、私钥等敏感数据。不过很多新手在使用时会发现误报特别多:明明只是一段普通随机字符串,却被标记为高熵字符串;随便一个 16 位数字也可能触发信用卡检测。本文结合源码,分享消除 Shotlooter 误报的 3 个实用调优技巧,让你的扫描结果更精准。

为什么 Shotlooter 会产生误报?

Shotlooter 的完整检测流程(见 shotlooter.py)大致分为四步:

  1. 遍历 prnt.sc 图片 ID,逐张下载截图
  2. 用 Tesseract OCR 把图片转换成文本
  3. 匹配 keywords.txt 中的敏感关键词
  4. 对每个单词计算信息熵,并校验信用卡号(Luhn 算法)

误报的根源在于:信息熵只衡量字符串的随机程度,并不关心它是不是真正的密钥。任何随机生成的内容(验证码、订单号、UUID)熵值都接近满值,自然会被判定为敏感。下面这张截图里的比特币私钥,就是典型的高熵字符串目标:

信用卡检测同样如此——它只依赖「16 位数字 + Luhn 校验」,截图里的订单号、会员卡号很容易满足条件。理解了误报来源,下面的调优技巧就有了明确的发力点。

调优技巧一:提高熵值阈值,滤掉普通随机串

高熵检测的核心判断在 shotlooter.py:

if entropy(word) >= 4.5 and "http" not in word and "/" not in word and len(word) < 65:

默认阈值是4.5(信息熵满值为 8),这个值对长密钥比较友好,但也会把验证码、乱码文本统统捞进来。推荐的调整方向:

扫描场景建议阈值
抓 API 密钥 / 私钥5.0 ~ 5.5
只抓高置信度密钥5.5 ~ 6.0
宁多勿漏的广撒网保持 4.5

4.5改成5.0左右,误报率通常能下降 30% 以上。同时可以收紧长度条件,把len(word) < 65改为len(word) > 16 and len(word) < 65,进一步排除短随机串。

真实场景中,像 AWS 的 Access Key 这类目标本身就带有明显前缀(如AKIA开头),熵值高且不受阈值上调影响,放心加阈值即可:

💡 如果只想靠关键词抓敏感信息,可以直接跳过熵检测,用--no-entropy参数,见技巧二。

调优技巧二:按场景使用 --no-entropy / --no-cc 排除检测

Shotlooter 内置三个「一键排除」参数,误报严重时是最快的兜底方案:

python3 shotlooter.py --code sjgmm5 --no-entropy # 跳过高熵字符串检测 python3 shotlooter.py --code sjgmm5 --no-cc # 跳过信用卡检测 python3 shotlooter.py --code sjgmm5 --no-keyword # 跳过关键词检测

什么时候该用?当你的目标很明确(比如只关心 SMTP 密码、数据库连接串)时,直接加上--no-entropy --no-cc,让 keywords.txt 中的关键词成为唯一判定标准,输出会干净很多。

而做全量审计时,可以把熵检测当作线索而非结论:先用默认参数跑一遍,再人工复核 findings.csv 中entropy类型的记录。下图这类 Postman 截图中的access_tokenclient_secret,才是真正值得关注的高熵字符串:

调优技巧三:信用卡检测的 OCR 分词与 Luhn 校验优化

信用卡检测逻辑在 shotlooter.py:要求单词为 16 位纯数字,再通过 Luhn 算法校验末位。这带来了两类误报:

  1. OCR 分词错乱:截图里的卡号常写成4111 1111 1111 1111这种带空格形式,OCR 会拆成多个词导致漏检;反过来,订单号等 16 位数字若碰巧通过 Luhn 校验,就成了误报。
  2. 号码格式多样:卡号可能带-或空格分隔,当前逻辑无法识别。

针对性的优化思路:

  • 预处理 OCR 文本:检测前先去掉空格与连字符,把4111 1111 1111 1111还原成完整 16 位再校验;
  • 增加卡 BIN 前缀校验:如 4 开头为 Visa、5 开头为 MasterCard,可大幅减少随机数字误报;
  • 结果二次确认:把credit_card类型的结果单独导出,人工快速复核一遍。

很多用户喜欢把各种凭据存在 Excel 里,这类截图的误报率也偏高,调优时值得重点观察:

调优后的快速检查清单

  • ✅ 根据目标把熵值阈值调整到 5.0 ~ 5.5,并加上长度下限
  • ✅ 明确场景,善用--no-entropy/--no-cc/--no-keyword参数
  • ✅ 信用卡检测前先合并 OCR 拆分出的号码段
  • ✅ 用 findings.csv 汇总结果,定期复盘误报类型

上手体验:先执行git clone https://gitcode.com/gh_mirrors/sh/shotlooter拉取项目,再按 requirements.txt 安装依赖(记得先装好 tesseract-ocr)。调优的核心思路其实很简单:工具负责发现,你负责判断——把阈值、排除参数和预处理三者结合,就能把 Shotlooter 误报率降到可接受的范围。

【免费下载链接】shotlootera recon tool that finds sensitive data inside the screenshots uploaded to prnt.sc项目地址: https://gitcode.com/gh_mirrors/sh/shotlooter

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 15:19:28

AI生成人物如何摆脱僵硬感?Seedance2提示词撰写实战指南

在 AI 生成内容&#xff0c;特别是图像和视频领域&#xff0c;如何让生成的角色或人物具备“活人感”&#xff0c;而不是一眼就能看出的“AI 僵硬感”&#xff0c;是许多创作者面临的共同挑战。Seedance2 作为一个特定的 AI 生成工具或模型&#xff0c;其提示词&#xff08;Pro…

作者头像 李华
网站建设 2026/8/21 15:18:21

告别静态建模!镜像视界带你迈入实时三维重构的“时空计算”新纪元

告别静态建模&#xff01;镜像视界带你迈入实时三维重构的“时空计算”新纪元从事安防与数字孪生工程实施这么多年&#xff0c;跑遍港口码头、武警营区、司法监所、能源电站各类重大项目现场&#xff0c;见过大量耗资巨大的数字孪生平台落地现状。很多项目投入不菲资金&#xf…

作者头像 李华
网站建设 2026/8/21 15:17:25

手写数字识别:线性判别分析与逻辑回归的模型对比与实践

1. 项目概述&#xff1a;从数据到决策的模型试炼场手写数字识别&#xff0c;这个在机器学习领域堪称“Hello World”的经典问题&#xff0c;其魅力远不止于入门教学。它为我们提供了一个近乎完美的沙盒环境&#xff0c;让我们能够在一个结构清晰、问题定义明确的数据集上&#…

作者头像 李华
网站建设 2026/8/21 15:16:55

【storage】

文章目录1、RAM and ROM2、DRAM and SRAM2、Flash Memory&#xff08;闪存&#xff09;4、DDR and SPI NOR Flash5、eMMC6、SPI NOR vs SPI NAND vs eMMC vs SD附录——prototype and demo board附录——U盘、SD卡、TF卡、SSD参考1、RAM and ROM RAM&#xff08;Random Access…

作者头像 李华
网站建设 2026/8/21 15:06:48

build2 构建语言进阶:函数、变量展开、条件与循环完全教程

build2 构建语言进阶&#xff1a;函数、变量展开、条件与循环完全教程 【免费下载链接】build2 build2 build system 项目地址: https://gitcode.com/gh_mirrors/bu/build2 本文是 build2 构建语言的中级教程&#xff0c;从变量展开、内置函数到条件判断与循环控制&#…

作者头像 李华