精華區beta mud 關於我們 聯絡資訊
※ [本文轉錄自 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。 五、數字圖攙了一定數量的「雜訊」,例如你會看到空白處有出   現 * 號。 像這種圖要破解就有一定難度了。若要做為防機程式,則有幾個 原則必須掌握.. 一、我們允許程式跑出「真的無法辨識的圖」。   然後請玩家等待一段時間等圖更新再試一次即可。這時的重   點就放在「這類圖的出現機率真的很低」。 二、我們允許玩家輸入錯誤的重試,但是重試必須限制時間及次   數。   然後失敗次數超過就要等待一段時間等圖更新再試一次。例   如玩家就有可能把上圖猜成「28739」,這時當然會   顯示猜錯答案,沒關係,玩家這時就會知道答案應該是「2   8739」。適度的容錯是必要的。   比方容錯三次,這樣真正手動的玩家才能有機會在三次內猜   到答案。 三、程式無法百分之百防止掛機   這是因為不可能玩家每做什麼就跑出該判斷(會被玩家罵死)   ,所以這時應該把程式擺在「重點處」,例如說 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)
QQmother:免空抓A片常會看到這種(誤 10/07 15:45
vagniphor:7跟3疊再一起好難認 除非顏色不同 10/08 01:18
GhostTW:不說看不出來= =" 10/08 12:07
laechan:基本防破解的手段之一就是數字交疊 10/08 12:09
底下是自行在記事本『清除雜訊&殘缺填補』後的結果 ****** * * ****** ****** * * * ****** * * * ****** ******* * * * * ****** * * * ******* ****** * ****** ******* * * * * * * * * * * ******* * ****** 實際的顯示是無邊框的。原則上雜訊量跟殘缺量的多寡 是可以控制的,但基本原則不變.. 一、每個數字的大小不能完全一樣 二、每個數字的顯示起始位置也不能有規律 三、允許數字交疊顯示 <= 重點 這樣即便透過 zmud 產生字圖圖形檔,要寫該圖形檔的 解析程式也不是那麼好寫的。 (反過來說若不允許交疊,就有被輕易破解的可能) ※ 編輯: laechan 來自: 122.117.11.103 (10/08 23:57)
cutecpu:推,第一次看到 mud 引進 captcha 防機器人的作法 10/17 00:51