
Shotlooter信用卡检测机制详解Luhn校验算法如何精准识别截图中的卡号【免费下载链接】shotlootera recon tool that finds sensitive data inside the screenshots uploaded to prnt.sc项目地址: https://gitcode.com/gh_mirrors/sh/shotlooterShotlooter 是一款开源的信息收集工具recon tool专门扫描 prnt.scLightShot 截图分享平台上公开的截图借助 OCR 与图像处理技术查找其中的敏感数据。在它内置的多路检测能力中信用卡检测机制最值得深挖当截图文字中出现疑似卡号的 16 位数字串时Shotlooter 会立即调用 Luhn 校验算法又称模10算法验证其真实性让真正的卡号浮出水面同时过滤掉大量无关数字。本文就带大家从源码层面拆解这套截图卡号识别机制。Shotlooter 是什么专攻截图泄露的信息收集工具Shotlooter 的核心思路很简单prnt.sc 的图片 ID 是顺序递增的因此从任意起始 ID 开始就能批量下载截图再用 Tesseract OCR 把图片中的文字转换为可分析的字符串最后通过四条检测通道锁定敏感信息关键词匹配读取 keywords.txt如 access key、mongodbsrv 等高熵字符串检测用于发现 API Key、私钥信用卡卡号检测Luhn 校验算法小图标模板匹配如 LastPass 登录图标其中信用卡检测的完整调用链都集中在 shotlooter.py 这一个主文件里阅读起来非常清晰。截图卡号识别四步流程从下载到 Luhn 校验第一步OCR 提取截图文字下载到本地后Shotlooter 调用 pytesseract 对图片做文字识别得到完整的文本内容image_text pytesseract.image_to_string(Image.open(img_path .png))第二步正则筛选数字串识别结果按空白拆分为单词只保留含数字的片段再用正则表达式\d(?:\.\d)?抽取其中的数字串作为候选卡号。第三步Luhn 校验判定真伪候选数字串交给is_valid_cc()函数依次通过三道关卡长度必须是 16 位、必须是纯数字、末位校验位必须通过 Luhn 算法验证。第四步命中结果落盘校验通过后工具把credit_card、卡号、图片 ID写入 findings.csv同时将截图保留到 output 目录供安全人员人工复核检测逻辑见 shotlooter.py。Luhn 校验算法原理16 位卡号如何快速验真Luhn 算法是国际标准 ISO/IEC 7812 规定的信用卡校验方式几乎所有主流银行卡号Visa、MasterCard、银联等的最后一位都是根据前 15 位计算出来的校验位。Shotlooter 正是利用这一特性做真伪判断核心实现位于 shotlooter.pydef get_check_digit(unchecked): digits digits_of(unchecked) checksum sum(even_digits(unchecked)) sum([ sum(digits_of(2 * d)) for d in odd_digits(unchecked)]) return 9 * checksum % 10 def is_valid_cc(number): if len(number) ! 16: return False n str(number) if not n.isdigit(): return False return int(n[-1]) get_check_digit(n[:-1])计算过程可以拆成三步理解从右往左偶数位的数字直接相加奇数位的数字先乘以 2若结果超过 9 再对各位数字求和例如 7×214 → 145然后统一累加校验位 9 × checksum mod 10若它与卡号最后一位相同则判定为合法卡号。举个例子测试卡号 4111111111111111 的前 15 位为 411111111111111按上述规则计算出的校验位恰好是 1与末位一致因此被成功识别。这套算法实现简单、计算极快还能天然过滤掉订单号、序列号等随机 16 位数字串把信用卡检测的误报率控制在可接受范围。实测案例Shotlooter 发现的敏感数据不止卡号作者用 Shotlooter 连续扫描两周就发现了 300 多张包含敏感数据的截图Postman 请求中的 access token、云端控制台的 API Key、Excel 表格里的数据库密码、甚至比特币钱包私钥应有尽有可以看到信用卡检测只是这套工具的一环它与关键词匹配、高熵检测、模板匹配共同构成了完整的截图敏感信息扫描体系。快速上手Shotlooter 安装与卡号检测命令环境要求为 Python3、pip3 与 Tesseract OCRmacOS 用brew install tesseractDebian 系用apt install tesseract-ocr。克隆并运行git clone https://gitcode.com/gh_mirrors/sh/shotlooter cd shotlooter pip3 install -r requirements.txt python3 shotlooter.py --code sjgmm5--code指定起始图片 ID工具会按 ID 顺序递增逐张扫描。如果只想专注信用卡检测可加上--no-entropy --no-keyword排除其他通道减少无关告警。局限性与误报哪些卡号可能漏网尽管 Luhn 校验很巧妙Shotlooter 的信用卡检测仍有明显边界只认 16 位卡号AMEX 等 15 位卡会被跳过带空格或连字符的卡号无法识别如 4111 1111 1111 1111 会被拆成多个 4 位数字每个单词只取第一个数字串同一词内的多个候选数字可能被忽略Luhn 校验只是格式合法验证理论上随机 16 位数字串约有 1/10 概率恰好通过并不能保证卡号真实可用。理解了这些边界你就能更合理地解读检测结果。想从源码层面彻底吃透这套机制直接对照阅读 shotlooter.py 中的校验函数即可。【免费下载链接】shotlootera recon tool that finds sensitive data inside the screenshots uploaded to prnt.sc项目地址: https://gitcode.com/gh_mirrors/sh/shotlooter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考