陳青峰和趙長安在咖啡館說完了正事之後,陳青峰便轉身離開了。
一路上,他乘坐地鐵回到了家裏,剛一回到家,一種難以形容的難受的感覺就突然襲來。以至于陳青峰一時不慎跌倒在地。
于是他艱難的在地闆上挪動着。
直到慢慢的挪進了卧室,然後他連忙打開抽屜,拿出了幾片從帝都回來時醫生開給他的鎮痛藥。
随後直接幹咽了下去。
一直過了好一會兒,陳青峰才終于緩過勁兒來。
沒事,他餓着肚子慢慢的走到了廚房,給自己煮了一碗清湯挂面。
因爲身體極度難受,他吃不下任何的東西。
隻有不用咀嚼的挂面,他還勉強吃得下。
就這樣,他煮好了面之後端着鍋來到了自己熟悉的書房。
随後打開電腦,做起了每天都要做的事情,那就是閱讀代碼。
作爲一名程序員,陳青峰一直喜歡閱讀那些知名的開源代碼。
而最近這些日子,他一直在研究openSSL。
因爲這個項目是全球最知名的加密協議。而且同時它也是一個開源項目。
SSL本來是一個連接協議,但後來使用的人多了,于是便有人想到了加密的手段來阻止黑客進行破壞。
于是openSSL這個項目便誕生了。
現在陳青峰要做的是黑客類型的外挂,如果能夠了解一些openSSL的原理。那對于他的外挂事業會很有幫助,最起碼他能夠知道哪些程序員犯了緻命的錯誤,而自己該如何下手?
陳青峰一邊吃着挂面,一邊在自己的項目工程文件裏閱讀着代碼。
調試代碼是一件繁瑣的事情,但這也是程序員和程序員之間的對話。
你可以通過學習别人的程序來提高自己。
并且這個過程隻有懂技術的人才會樂在其中。
除此之外,陳青峰還發現了另外一個好處,那就是在調試代碼享受樂趣的時候,身體和大腦會暫時忘記關于自己體内癌症的事情。
這對于減緩因爲疾病帶來的不适有很好的幫助。
“心跳檢測!”
這是一個用來做時間同步的功能,雖然很重要,但很多程序之間都有心跳檢測,因此這段代碼讀起來大同小異。
陳青峰慢慢的在代碼中間打着節點,他自己構建了一個可以測試open SSL的小型測試程序。
通過斷點,可以看清楚到底内存中存儲了什麽東西?
陳青峰先是按常規的策略,将心跳包發送了過去。
很快他的斷點就收到了回應!
這一切都在他的意料之中,不過就在這時,他的手不小心碰到了筷子,筷子在鍵盤上碰了一下,陳青峰手忙腳亂,一下子又碰到了鼠标點了一下編譯按鈕,看着漫長的編譯程序,他不由的感到一陣頭疼。
還好,編譯器隻是編譯他修改部分的代碼。
可就在這時,斷點又一次被觸發了。
陳青峰驚訝的看着這一切。
然後他又回過頭來,看着代碼裏被自己修改的部分。
原本應該發送的一段内容,已經超出了64KB應有的範圍,剛才陳青峰不小心在後面多加了一個0。
按理說,這段非法報文發送出去之後,斷點是不會被觸發的。
可現在它居然被觸發了?
這到底是怎麽回事?
陳青峰覺得有點奇怪,程序不應該走到這裏。
于是他重新試驗了一下,又多加了幾個斷點。
于是程序便開始一步一步的被陳青峰跟随着。
當陳青峰看到一處if判斷的時候,他突然發現,這段程序的指針竟然違反常規的跳到了if爲真的代碼段!
陳青峰驚訝的看着上下這一段程序代碼。
他睜大眼睛重複了一遍又一遍。
最終他不由的深吸了一口氣。
然後他覺得自己發現了一個難以形容的重大事實。
Open SSL的程序員居然犯錯誤了?
一段非法訪問的報文居然被認爲是正确的。
這也就意味着,自己獲取了服務器内部一段不知區域的内存儲的消息。
越界訪問?
知名的開源加密項目居然會出問題?
全世界那麽多程序員,無數雙眼睛都盯着的基礎程序,居然被自己親手調出了bug。
這意味着什麽?
陳青峰還是有點不敢相信,因爲按照常理來說,這根本是不可能的事情。
可是眼下卻明明白白的發生了。
于是陳青峰耐着性子,悄悄的打開了某大廠的頁面。
OpenSSL協議,現在最常用的,就是這些大廠,尤其是在電商領域更是常見。
現在陳青峰要試驗一下。
于是他端起來喝了一口已經涼掉的面湯。然後活動了一下手指,在鍵盤上迅速的敲擊了起來。
他僞造了一段和剛才類似的超出限制的非法報文。
然後懷着顫抖的心情發送給了電商網站的服務器。
緊接着,他就在程序裏等待着對方的回應。
幾乎不到一秒的時間,他就收到了一段信息。
陳青峰打開一看,臉上頓時露出了一種欣喜之後釋然的笑容。
他沒有錯, Open SSL的程序員的确犯了一個緻命的錯誤。
它通過超長的報文拿到了服務器内返回的64KB的數據。
而這段數據裏甚至還包含着一個陌生人的用戶名和密碼。
一個用來心跳檢測的模塊,居然讓程序洩露出了内存裏的信息。
而重要的數據,被一點一點的從漏洞裏滲透出來。仿佛在心髒的主動脈上漏出了一個滲血的出血口,一點一點的流着血。
而陳青峰可以确定,掌握了這個漏洞,起碼在這一夜間,全世界所有采用openSSL協議加密的網站,都會在他的面前門洞大開。
這意味着什麽?
這意味着上帝突然在剛才那一刻,爲他打開了一扇财富的大門。
但是他不确定這個漏洞什麽時候會被程序員發現。
不過如果他早動手的話,起碼有一點是肯定的,他的治療費用應該不用發愁了!
陳青峰難以抑制的從桌子前站了起來。
他走到了自家的書櫃前,把上面一瓶五糧液直接拿下來。
随後擰開之後,大口的灌進了自己的胃裏。
不過平日裏不怎麽喝酒的陳青峰很快就咳嗽了起來。
然而此刻他卻遇到了人生中最開心的時刻。
他從來都沒有感覺到像今天這樣有成就感。
原來全世界最優秀的程序員,全世界最嚴謹的開源項目也有犯錯誤的時候。
(本章完)