美國一位宅宅工程師將車牌申請為「NULL」,結果全國辨識不清的違規罰單都找到了一個家

美國一位宅宅工程師將車牌申請為「NULL」,結果全國辨識不清的違規罰單都找到了一個家

美國一位宅宅工程師將車牌申請為「NULL」,結果全國辨識不清的違規罰單都找到了一個家



資料來源:https://www.techbang.com/posts/72145-us-man-sends-all-of-his-license-plate-applications-to-his-home-as-null-result-of-nationwide-unrecognizable-illegal-license-plate-tickets


「NULL」這個字串在程式設計中主要代表一個「空值」,意思就是沒有這個內容。比如說當你在撰寫程式的時候,想要在一篇文章中尋找一個叫做「T客邦」的關鍵字,但是這篇文章中從頭到尾都沒有出現這三個字,那麼這時程式就會傳回一個「NULL」,表示沒有找到這個關鍵字,答案為「空」。


Droogie身為一個工程師,將自己的車牌註冊這個號碼,第一是覺得身為一個工程師開一台「NULL」的車子很酷,感覺好像自己在實體世界隱形起來。其次,他也想說不定會發現一個系統漏洞:就算他的車子超速違規了,系統也會因為車牌為「NULL」,所以他也收不到罰單。





結果,還真的給他發現了系統漏洞……只是結果跟他想的不大一樣。甚至可以說,結果剛好相反。

Droogie是在出席拉斯維加斯的DEF CON世界駭客年會時,向大家報告這件事的。他表示,他申請完車牌之後,幾乎每天都會收到一張以上的罰單。到他出席駭客年會的這一天為止,累計已經收到超過1.2049萬美元的罰單。




原來,根據美國的交通系統,後台將所有識別不清車牌號碼的罰單,都會將車牌指派為「NULL」,意思就是空值。原理與前面所說找不到關鍵字的原理是一樣的,這是設計師的普遍思維。不過,過去「NULL」這個空值意思就是空值,但是現在「NULL」這幾個字串已經被Droogie註冊了,因此,這些無主的罰單現在通通找到了主人,全部寄來他的信箱。


其實在程式設計中,「空值」與字串「NULL」是不一樣的,原則上應該會有一些防護的機制,就可以避免這種情況發生,但實際上還是有些環節有出錯的可能。比方說,系統將辨識不清的罰單輸出成EXCEL表格,然後以「NULL」代表辨識不清的車牌。然後監理單位依照這個輸出報表去開罰單,卻沒有檢查這個欄位的型態,當成字串去處理。


Droogie表示,他向設計罰單的系統公司 Citation Processing Center 反映了這個問題,對方要求他把罰單寄回。但他怕寄出罰單後他連能證明不是他違規的證據都沒有。於是,他轉而向美國的監理單位求助,監理單位答應幫他去撤銷這些罰單。


問題是,撤銷他收到的罰單並沒有解決他的問題,因為新的罰單還是駱繹不絕的寄來。他只能持續在去找監理單位幫他銷單。


更不幸的是,他想要更改持車牌號碼,但是因為積欠罰款太多,無法去更換車牌資料。


Droogie的故事給我們一個啟示:有些時候,寫程式用到的名詞,還是讓他們保持在程式裡頭就好。別跑到實體世界出來害人(或是害自己)。


心得: 別小看這世界上程式設計師寫BUG的能力

One thought on “美國一位宅宅工程師將車牌申請為「NULL」,結果全國辨識不清的違規罰單都找到了一個家

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *