小学生进!黑客手把手教你制霸小猿口算天梯榜

本文已获得公众号”重生之成为赛博女保安”授权发布

小蹭热度,本来不想写的,属实是在颤音上一天刷到三四十次刷腻了+小猿这边确实有API泄露,哈哈

大一也是一

最近互联网上最火的游戏可能就是上小猿口算跟小学生比做题速度啦——各位“大学牲”们在一个小小的做题APP上奋笔疾书,用“大一也是一”、“老弟还得练”等抽象ID吊打小学生们。

2c5868cc7620241011143849

由于涌入APP的大学生们太多,“揍哭熊孩子”,一时之间小猿口算的应用商店评论区也被“受害”小学生和学生家长打了差评。这游戏是不是有挂啊(你的怀疑是真的):

d7f69d6c8b20241011143920

大学生打碎了我的口算梦(怜爱了):

65b0db2d7c20241011143942

我家子涵都哭了:

5fe25bc06820241011144009

真的有挂吗?

那确实是有哒。

首先我们需要知道小猿口算的这个PK模式本质上是在做比大小题,也就是很简单的小学一二年级数学题,用户在收到题目后使用触屏手写写出大于号或小于号作为答案。

那么:

1. 题目为文字印刷体,且位置固定

2. 答案为手写,且位置固定

于是我们可以得出以下两种开挂方式:

开挂方式1:OCR

如果我们作为一个粗通编程的大学生,或者是天天翘课的大学生,那么能想到最容易的作弊方式就是OCR——图像识别技术。大学刷慕课的脚本里不少就用了这个技术,还有神铁道等游戏的日常周常脚本。

OCR的工作原理顾名思义,识别屏幕固定部分的文字(这里如果要探讨细节,最好是把两个比较数分别识别),然后用程序计算后在答题区域模拟书写即可。

再具体落实到脚本处,以比大小为例,写一写伪代码:

while(1){
    pic_first=snapshoot(first_number_x,size_x,first_number_y,size_y)
    pic_second=(second_number_x,size_x,second_number_y,size_y)
    number_first=OCR(pic_first)
    number_second=OCR(pic_second)
    jumpif(number_first==null or number_second==null) #跳过条件
    number_first>number_second?draw_greater_than():draw_less_than()
    sleep() #平滑操作
}
func: draw_less_than(){...}
func: draw_greater_than(){...}

而截屏和模拟书写函数一般语言都有,现成不用训练的OCR库则有ddddocr等。

开挂方式2:抓流量

这也应该是本公众号所属领域的朋友们最先想到的解法。由于不想吃绿湿寒本公众号只放一张网上的截图:

7ac78c40fc20241011144257

给非专业的朋友们还有点进来的小朋友们解释一下它的原理:APP在PK过程中是一定会存在类似获取试题的网络通讯过程的,而小猿口算的通讯流量包是明文的且已经给出了答案,所以只需要通过提取接口进行爬取,并筛选出答案然后模拟书写即可~

信安要从娃娃抓起,现在放弃小猿口算改学信息安全还来得及^ ^。

小猿这边的预期应对方案

也没啥好说的,整点人机判断体力条反爬混淆就老实了,本质还是成本博弈。

我本质是不支持打小登的,不过人机互殴除外:

e40f9c47a520241011144402

 

 

原文链接:https://mp.weixin.qq.com/s/xLdns_sGGm3HSy8-Fe4Bug

© 版权声明
THE END
喜欢就支持一下吧
点赞7赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容