撲克與黑客

Posted by TJ Wei on 星期六, 9月 04, 2004 with No comments

"Anything can be hacked"(什麼東西都有搞頭),這是Hacker圈流傳的一句話。

題外話,Hacker/ 黑客,正體/繁體中文常見的譯名是「駭客」,但是撲克和黑客比較押韻,當然我也可以只說台灣的譯名,但是說正體/繁體中文比較酷/Cool/褲一點,我還 特別把正體放在繁體前面,因為會用正體這個詞的人通常比較在乎正名這回事,夠體貼/政治正確吧!/?/。

回到原來的話題,"Anything can be hacked",所以不但是電腦軟體硬體可以成為Hackers的玩具,真正黑到最高點的玩家是無可不駭的,到達飛花落葉皆可傷人的境界。

所以PDA的紅外線接受器能夠拿來當跑步里程器,相機可以拿來跑大型電動模擬器,幾條水管接一接可以組成水電腦,天竺鼠跑圈圈可以拿來發電,例子不勝枚舉。

更高竿一點的,會發現能搞的對象無非就是人與物兩類,要不然就是利用自然的原理與邏輯來個四兩撥千金,比方阿基米德就算是這方面的始祖之一,他的曹沖秤象與雙頭肌撥地球都是有名的例子。

要不然就是利用人類的弱點拿來玩耍,駭客裡面的社交工程技巧就是典型的例子。

電腦方面一來有邏輯與自然法則可供探索,二來由於人類的設計常常會有疏忽的地方,所以是Hacker們的最佳遊戲場所。

但仔細觀察,還是有很多其它也不錯的遊樂場,我們不需一定要學竹林七賢劉伶的以天地為家,房子為衣褲這樣,或者說到達美酒貴公子佐竹城那樣把世界當成我的外場的境界,到達到最高境界是很難而且很無聊的。一個可以玩的東西是遊戲。

我不是說遊戲破解保護之類的東西,而是破解遊戲本身。

這類的駭客始祖之一不是別人,正是鼎鼎有名的蘇東坡大大。

民 間傳說他發明了所謂「東坡棋」的招數。故事說蘇東坡曾在某國(有說是吐蕃,有說是西夏)圍棋第一高手來訪時吹牛說自己是大宋第一高手,對手絕對下不贏他。 那人不信,兩人立刻便紋枰對局,決一勝負。這時蘇東坡就拿出事先想好的方法,在對稱的位置上模仿對方著手,結果終局時就成了和棋。「決不輸棋」的牛皮也就 沒破了。

也有聽說他是拿這招對付佛印的,也有說他是以一敵二對抗兩個外國高手來個乾坤大挪移,畢竟單以模仿棋是無法獲勝的。不知道怎麼贏的人可以向塔史亮小朋友請教。

又比方用二進位來破解拿石頭遊戲「拈」的基本型,也是一個典型的好例子,看似複雜的狀況,裡面含有竅門。

說到竅門,正所謂江湖一點訣,夫妻不可說。駭客除了駭興趣外,如果能夠獲利通常也沒什麼理由反對的。賭場遊戲自然成為駭客的大目標之一。

古有所謂的聽骰黨,利用骰子落下的聲音的細微差別來破解骰子賭局。而白帽駭客澳門賭聖葉漢則利用在骰鐘底下撲絨布的方式修補漏洞。

法 國數學家巴斯卡首創利用機率來分析賭戲,是一種掃瞄漏洞的方式。他的徒子徒孫美國加州大學教授 Edward Thorp在一九六二年使用改良過的掃描器找出了古代黑傑克二十一點賭戲的漏洞,並且發表了擊敗莊家 Beat the Dealer一書。同書中還列出了掃瞄其它賭戲的結果。而後繼者著名的MIT 黑傑克隊伍,更是發揚光大並且身體力行賺進大把鈔票。其經歷記載於Bring Down the House一書。

他們用的方式主要關鍵是算牌。

可惜這個時代已經過去,賭場已經針對這類攻擊加以防範。

除此之外,著名的漏洞還有對輪盤的物理計算攻擊,計算球的速度來推測可能的落點。對吃角子老虎的電子攻擊等等。另外各式大小老千的作弊攻擊則屬於Cracker一流,不勝枚舉。

也許還有新的攻擊方式,畢竟漏洞無所不在,不過要我選,我會選則破解銀行而不是賭場。

如果是破解網路銀行的話,更容易的選擇是破解銀行的一般客戶著手。因為一般人的電腦保護沒有銀行周全。即使有很多人對自己的電腦保護周全,你的對象也不是他們,而是沒有保護周全的多數人。

同 樣的,與其破解賭場,不如破解賭客。撲克牌局就是這樣一個場所。撲克牌局的規則本身沒有漏洞,就像是一個好的電腦軟體系統沒有漏洞一樣,漏洞在使用者身 上。即使在堅強的防護系統,使用者假如把密碼寫在紙條上貼在螢幕旁,任何一個人也可以順利破解。而牌局中,你所依賴的就是你比別人更瞭解這個遊戲,以及你 比別人更瞭解人性。

Hold'em 遊戲中,假如你手上拿了紅心A,6,桌面上四張牌中有兩張紅心,還剩一張牌,你差不多可以假定最後一張牌是紅心時你就會贏,特別是桌面上沒有可怕的牌的時候,比方桌上有三張A,也許有人已經有full house或者鐵支了。

你要簡單的計算52-4-2=46,你拿紅心的機會是9/46,所以這時如果桌面上有100元籌碼,另外一個人下注20,你簡單的計算如果你跟的話,你的獲利期望值是 (120*9-20*37)/46=7.39>0。所以你應該跟。

又或者你拿到 5,7,桌面上是6,4,A,J,沒有同花的危險,最後一張牌如果是3或者8你會贏,所以同樣的情況下,你的獲利期望值是 (120*8-20*38)/46=4.35>0,所以還是可以跟。

但是如果前面的人下的注是30,那同樣的計算你會發現在抽同花的時候,你有正的期望值,而抽順子的時候,則是負的。

很遺憾的,這個在巴斯卡時代就可以掃瞄到的系統弱點,很多人仍然沒有更新patch。這就好像到現在還有人用98開網路芳鄰,或者一些經典的sendmail exploit 還能用一樣。

相較於電腦來說,人是很難更新軟體的。

另 外一類的漏洞是所謂的Poker Tell,很多人在虛張聲勢的時候會有一些自己不自覺的小動作,這類漏洞比邏輯上的漏洞更難修補。比方某人牌不錯的時候,往往會自然的身體往後,呈現自然 輕鬆的狀況,因為不管你跟或者不跟他都不會輸。如果吹牛時,往往為了掩飾而將身體向前傾斜(看前面的職業巨星邀請賽裡面牌評對於Johnny Chan的評論)等等。當然,這種東西在無賭注上限的遊戲比較有用,因為小賭注的牌局基本上還是跟著機率走的。

撲克牌局就像是一場駭客攻防戰一樣,比誰的漏洞少,比誰對牌局更熟悉,而且很多人就是不會修補漏洞。而當你發現別人的漏洞之後,你要想辦法的就是怎麼exploit了。

Categories: ,