I. 前文
在一次阅读 captcha 绕过的分析遇到一个独特和有趣的分析 case study,心想也从没在 CSDN 写过博文,所以就当这是一个美好和缘分的开始吧。欢迎来到我的第一篇博文,请多多指教。
II. 目标介绍
我暂时叫它是 websiteX 吧。websiteX 有一个 captcha 认证的功能,可以使用音频收听识别验证码细节。我们的目标是这个功能。
III. 分析
生成验证码图像时,我们注意到它是一个由 6 个字符组成的字符串,这些字符可以是大写字母或数字。许多人可能想知道系统是否有一个机器人可以将其中的每个字符从验证码图像中读取给我们。 我不否认它的可能存在性,但是这样需要一个复杂的程序(机器人)集成到系统中,真的很麻烦!那么,如何让这个功能可以实现更简单呢? 实际上,如果你曾经编写过一些 catpcha 功能,那么给出答案就很容易了。如果没有,请不要气馁,我们现在就一起找出答案。
让我们关注一下验证码图像是如何生成的。 通常,网站会执行一个程序,生成一个随机的字符串,然后根据这个字符串,为用户生成一个验证码图像。 (这里应该没有人问为什么不直接给个随机字符串让用户输入,而是需要额外的生成图像的步骤吧。 如果有那么答案是直接使用字符串可以被程序捕获!) 。 因此,网站可以使用已经生成的随机字符串数据,而不是依赖稍后生成的图像来获取字符。也因为这样,websiteX 已经存储了每个字符对应的录音。 程序员在构建这个功能时的思路很可能是这样的:就存储36条录音,由26个大写字符和10个字母数字字符组成,根据6个随机生成的拼接字符将6条录音组成一条新录音播给用户,功能完全!
使用此功能时,我们观察到发生了同样的事情:
通过尝试不断刷新验证码图片后,发现每个字符恰好对应一条录音(字符相同时文件名相同)。 最终收集到36条记录如下图所示:
所以我们可以简单绕过这个验证码验证机制通过编写一个程序来查找传入的 mp3 文件的信息,根据文件名和字符之间的映射,得到准确的代码字符序列 (验证码)。
结
程序就留给读者吧,本文我只分析想法方向。 感谢您的宝贵时间,祝大家获得有用的知识。