作者laechan (小太保)
看板mud
标题[wizs] 数字图程式
时间Fri Oct 7 10:58:02 2011
※ [本文转录自 mud_sanc 看板 #1EZcght6 ]
作者: laechan (小太保) 看板: mud_sanc
标题: [wizs] 数字图程式
时间: Fri Oct 7 10:57:43 2011
假设底下为显示范围
┌──────────────────────────┐
│1234567890123456789012345678901234567890123456789012│
│2 │
│3 │
│4 │
│5 │
│6 │
│7 │
│8 │
└──────────────────────────┘
2005年时写过类似的东西,不过当时功力还不足,玩家有写出
过辨识程式。
现在的话,要写出程式无法辨识的数字图基本上是办得到的。
基本流程简述如下..
一、r=random(数字范围)
二、进行每个数字的显示大小及字样定义
a.先决定大小
b.再跑出字样
c.储存起来
三、再进行每个数字之间的「起始显示位置设定」,以显示图
范围为例,假设要显示六位数字,那基本上最大宽度公式
max w = 2x2 + 7 x 6 + (7-1) = 52
四、加入杂讯
五、秀图
这支程式并不难写,出来的数字图类似底下...
┌──────────────────────────┐
│1234567890123456789012345678901234567890123456789012│
│2 * **** * * ** * ****** * *** ** ** │
│3 * * ****** * * * * │
│4 *** ** **** ** * * * * ** *** │
│5 * * * ** **** ****** * * │
│6 *** ** *** *** * * * ** * ** * │
│7 * * * * * * * * * *│
│8 * * ***** * ****** │
└──────────────────────────┘
答案:284739
上面的意思就是..
一、数字的大小至少就有三种样式(占5、6、7行)
二、数字的起始显示位置(从左上算起)最多有 3x5 种,不过依
数字的大小最少则是 5 种(平移区间)。
三、数字的字样是随机的,也就是残缺or肿瘤显示,例如4那个
字,左上就出现多余的 *,而中段就缺少一个 *。
四、数字之间是可以交叠的,例如 7 跟 3。
五、数字图搀了一定数量的「杂讯」,例如你会看到空白处有出
现 * 号。
像这种图要破解就有一定难度了。若要做为防机程式,则有几个
原则必须掌握..
一、我们允许程式跑出「真的无法辨识的图」。
然後请玩家等待一段时间等图更新再试一次即可。这时的重
点就放在「这类图的出现机率真的很低」。
二、我们允许玩家输入错误的重试,但是重试必须限制时间及次
数。
然後失败次数超过就要等待一段时间等图更新再试一次。例
如玩家就有可能把上图猜成「28
9739」,这时当然会
显示猜错答案,没关系,玩家这时就会知道答案应该是「2
8
4739」。适度的容错是必要的。
比方容错三次,这样真正手动的玩家才能有机会在三次内猜
到答案。
三、程式无法百分之百防止挂机
这是因为不可能玩家每做什麽就跑出该判断(会被玩家骂死)
,所以这时应该把程式摆在「重点处」,例如说 recall 点
、补品补充店、公会adv/train、以及像是不应该被经常使
用但偶尔必须用到的 en 指令、go 指令(行走)、login 时..
然後设定好周期触发时间即可,例如玩家走动时只要判断时
间到了就自动出现数字图,然後玩家未回答出正确答案前就
不允许其走动、以及做其它相关的指令(en、recall等)。
然後允许玩家即使看到了数字图也可以不必马上回答,有空
时再回答即可(比方它正在战斗中这样)。
也就是说不需要要求 100% 的防堵率,反而才能让防机效率
达到最好。
以上心得跟大家分享。
Laechan@Sanc
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 115.81.23.70
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 115.81.23.70
※ 编辑: laechan 来自: 115.81.23.70 (10/07 11:00)
1F:推 QQmother:免空抓A片常会看到这种(误 10/07 15:45
2F:推 vagniphor:7跟3叠再一起好难认 除非颜色不同 10/08 01:18
3F:推 GhostTW:不说看不出来= =" 10/08 12:07
4F:→ laechan:基本防破解的手段之一就是数字交叠 10/08 12:09
底下是自行在记事本『清除杂讯&残缺填补』後的结果
****** * * ****** ******
* * * ****** * * *
****** ******* * * * * ******
* * * ******* ****** *
****** ******* * * * *
* * * * * *
******* * ******
实际的显示是无边框的。原则上杂讯量跟残缺量的多寡
是可以控制的,但基本原则不变..
一、每个数字的大小不能完全一样
二、每个数字的显示起始位置也不能有规律
三、允许数字交叠显示 <= 重点
这样即便透过 zmud 产生字图图形档,要写该图形档的
解析程式也不是那麽好写的。
(反过来说若不允许交叠,就有被轻易破解的可能)
※ 编辑: laechan 来自: 122.117.11.103 (10/08 23:57)
5F:推 cutecpu:推,第一次看到 mud 引进 captcha 防机器人的作法 10/17 00:51