第5章
工具鏈------------------------------------------,星期三。,林凱接了七單。,PHP小腳本兩單,幫一個開網店的人寫了個自動生成商品描述的工具一單。總收入:317元。。他在草稿紙上寫下這個數字,看了一會兒。在前世,這個數字是他某個下午喝咖啡的零頭。在現在,這是他五天工作的全部所得,也是他目前最主要的生存資金。,從同一個跳蚤市場攤主那里,砍到九十塊一條。攤主姓王,五十來歲,擺了個折疊桌,上面堆著各種二手硬件——老式鍵盤、壞掉的光驅、拆機的顯卡。林凱蹲下來翻了一會兒,把兩條內存條捏在手里掂了掂,隨口說了句“八十五一條”,攤主咧嘴笑,說“九十,少一分不賣”,兩人就成交了。,機器明顯流暢了。打開XP的時候,桌面加載速度快了將近一半。他的那臺賽揚D處理器本來就偏弱,內存瓶頸一消除,整體性能提升肉眼可見。?十六核、128G*內存、NVMe固態——那臺機器的冷啟動時間以秒計,代碼補全實時響應。現在他盯著眼前這臺屏幕泛黃、風扇嗡嗡作響的老爺機,心里沒有任何抱怨,只是把它當成一個需要被精確理解和利用的約束條件。。,他可以開始做真正想做的事了。---,第一個模塊:網絡掃描器。。那個是草稿,是在陌生環境下的即興偵察。他需要的是一個可以給小龍蝦用的結構化工具——輸入目標,輸出格式化的結果,結果可以被小龍蝦讀取、存儲、比對。:小龍蝦的接口是什么?,打開記事本。宿舍里陳浩在玩紅警,音響里放著那時候流行的游戲音樂,鍵盤噼里啪啦響。另一個室友在看碟,筆記本屏幕上是某部港片,對白很大聲。林凱在這片嘈雜里劃出一塊安靜區域,只看自己面前的屏幕。——他看到懸浮的字,小龍蝦看到……什么?他不確定。小龍蝦能看到他的屏幕嗎?還是只能接收他主動輸入的內容?這個問題他思考了好幾天,始終沒有把握。
他決定直接問。
“你能看到我的屏幕嗎?”
小龍蝦沉默了幾秒。
能。模糊。像很遠的地方。
“能讀文件嗎?”
如果你指向它。
“指向”是個有意思的詞。小龍蝦的詞匯量只有一百來個,但它選詞有時候很準確——不是生硬的機器語言,而是某種簡潔的直覺。“指向”意味著需要某種主動的操作,不是被動接收,而是林凱的注意力引導。就像聚光燈,林凱看哪里,小龍蝦就能勉強看見哪里。
這個機制很奇怪,但暫時夠用。
林凱想了想。“我把結果寫進一個固定的文件,你去讀。”
可以。
“文件叫什么名字你能識別?”
小龍蝦:名字不重要。你看著它的時候我就能看到。
林凱在D盤新建了一個文件夾:“shell**ta”。這是工具鏈的輸出目錄,所有模塊的結果都寫到這里來。他用記事本打開這個空文件夾,看了幾秒,然后關上,當作一次確認儀式。
---
他開始寫掃描器。
核心邏輯不復雜:給定一個IP段,對每個IP的指定端口發起TCP連接嘗試,記錄響應,輸出結果。復雜的是細節——超時控制、并發、結果格式化、異常處理,這些東西在紙面上看起來簡單,真正寫起來每一塊都有坑。
2008年,Python 2.5沒有concurrent.futures,沒有asyncio,線程池要手動實現。他用Queue和threading模塊搭了一個簡單的工作池,二十個線程并發,超時兩秒,結果寫入**ON文件。內網的2M*ps網速對于這種掃描任務來說勉強夠用,但要掃**段就會很慢。他在腦子里過了一遍可能的瓶頸,把超時參數設計成可配置的,留了接口。
寫了兩個小時,中間被陳浩打斷了一次——問他借橡皮,林凱頭也沒抬,指了指桌角的筆袋。陳浩拿走橡皮,在他身后站了幾秒,大概是想看看他在寫什么,然后悄悄走了。林凱注意到了,但沒說話。
寫到第一百行的時候,他停下來重新審視了整個結構。在前世,他會用IDE、有代碼提示、有自動重構工具。現在他用的是記事本,一行行手打,靠自己的記憶檢查語法。這不是什么特別大的障礙,只是一種細微的、持續的摩擦感——就像穿著稍微小了一號的鞋走路,不是走不了,但每一步都能感覺到。
他按照前世的習慣,在每個關鍵函數前寫了注釋。不是給別人看的,是給自己的——也是給小龍蝦的。如果小龍蝦能讀文件,那它也應該能讀注釋,能理解代碼的意圖,而不只是輸入輸出。
最后的代碼大約180行。他跑了一次測試,目標是學校內網的一個小段:192.168.10.1到192.168.10.50。
終端窗口里,進度點一個接一個地跳動。這臺機器的風扇聲加重了一點,光驅指示燈偶爾閃爍——不是在讀盤,只是某種隨機的硬件反應。學校機房的***可能正坐在某個地方喝茶,完全不知道有人在輕輕摸他的內網邊界。
結果在兩分鐘內出來了,寫進了“shell**ta/scan_result.json”。
他打開文件,對著屏幕看了三十秒。格式整齊,數據干凈,每個活躍節點帶著端口列表和響應時間。
小龍蝦:我看到了。31個活躍節點。端口分布正常。沒有那個。
“那個”——林凱明白它指的是什么。機房里發現的那個異常端口,那個“不像2008年的東西”。他當時沒有記錄,只是在腦子里存了個印象,但小龍蝦顯然也記得。
“這段IP里本來就不會有,”林凱說,“先跑內網摸底,建基準線,再去查那個。”
基準線。這是他從前世帶來的工作習慣:先知道“正常”是什么樣的,才能識別“異常”。在一個自己不了解的環境里貿然尋找目標,成功率極低,而且容易誤判。2008年的校園網有它自己的拓撲邏輯,他需要先把這張圖摸清楚。
小龍蝦:明白。
林凱保存文件,靠回椅背上。椅子發出一聲輕微的塑料摩擦聲。
第一個模塊完成了。功能不復雜,但它是工具鏈的第一塊磚。接下來要做的:*anner識別,服務指紋,結果比對,異常檢測。每一塊單獨看都不難,組合起來才有意義。
他在草稿紙上列了一個簡單的清單,圈掉第一項。
窗外天已經黑了,宿舍走廊里有人在打電話,聲音很大,說的是方言,大概在跟家里人報平安。諾基亞手機的外放聲音有種特有的金屬質感,穿過薄薄的木門傳進來。
他看了眼時鐘:21:47。
去食堂的窗口已經關了,宵夜攤要到十點才開。他從桌屜里翻出兩包榨菜,就著白開水吃了。熱水瓶是宿舍公用的,每天早晨打滿,到晚上已經不怎么燙了,只是溫熱。
味道還行。他盯著那個列了四項待辦的草稿紙,心里沒有焦慮,只是一種平靜的、流水線式的推進感。
一塊磚一塊磚壘。
他決定直接問。
“你能看到我的屏幕嗎?”
小龍蝦沉默了幾秒。
能。模糊。像很遠的地方。
“能讀文件嗎?”
如果你指向它。
“指向”是個有意思的詞。小龍蝦的詞匯量只有一百來個,但它選詞有時候很準確——不是生硬的機器語言,而是某種簡潔的直覺。“指向”意味著需要某種主動的操作,不是被動接收,而是林凱的注意力引導。就像聚光燈,林凱看哪里,小龍蝦就能勉強看見哪里。
這個機制很奇怪,但暫時夠用。
林凱想了想。“我把結果寫進一個固定的文件,你去讀。”
可以。
“文件叫什么名字你能識別?”
小龍蝦:名字不重要。你看著它的時候我就能看到。
林凱在D盤新建了一個文件夾:“shell**ta”。這是工具鏈的輸出目錄,所有模塊的結果都寫到這里來。他用記事本打開這個空文件夾,看了幾秒,然后關上,當作一次確認儀式。
---
他開始寫掃描器。
核心邏輯不復雜:給定一個IP段,對每個IP的指定端口發起TCP連接嘗試,記錄響應,輸出結果。復雜的是細節——超時控制、并發、結果格式化、異常處理,這些東西在紙面上看起來簡單,真正寫起來每一塊都有坑。
2008年,Python 2.5沒有concurrent.futures,沒有asyncio,線程池要手動實現。他用Queue和threading模塊搭了一個簡單的工作池,二十個線程并發,超時兩秒,結果寫入**ON文件。內網的2M*ps網速對于這種掃描任務來說勉強夠用,但要掃**段就會很慢。他在腦子里過了一遍可能的瓶頸,把超時參數設計成可配置的,留了接口。
寫了兩個小時,中間被陳浩打斷了一次——問他借橡皮,林凱頭也沒抬,指了指桌角的筆袋。陳浩拿走橡皮,在他身后站了幾秒,大概是想看看他在寫什么,然后悄悄走了。林凱注意到了,但沒說話。
寫到第一百行的時候,他停下來重新審視了整個結構。在前世,他會用IDE、有代碼提示、有自動重構工具。現在他用的是記事本,一行行手打,靠自己的記憶檢查語法。這不是什么特別大的障礙,只是一種細微的、持續的摩擦感——就像穿著稍微小了一號的鞋走路,不是走不了,但每一步都能感覺到。
他按照前世的習慣,在每個關鍵函數前寫了注釋。不是給別人看的,是給自己的——也是給小龍蝦的。如果小龍蝦能讀文件,那它也應該能讀注釋,能理解代碼的意圖,而不只是輸入輸出。
最后的代碼大約180行。他跑了一次測試,目標是學校內網的一個小段:192.168.10.1到192.168.10.50。
終端窗口里,進度點一個接一個地跳動。這臺機器的風扇聲加重了一點,光驅指示燈偶爾閃爍——不是在讀盤,只是某種隨機的硬件反應。學校機房的***可能正坐在某個地方喝茶,完全不知道有人在輕輕摸他的內網邊界。
結果在兩分鐘內出來了,寫進了“shell**ta/scan_result.json”。
他打開文件,對著屏幕看了三十秒。格式整齊,數據干凈,每個活躍節點帶著端口列表和響應時間。
小龍蝦:我看到了。31個活躍節點。端口分布正常。沒有那個。
“那個”——林凱明白它指的是什么。機房里發現的那個異常端口,那個“不像2008年的東西”。他當時沒有記錄,只是在腦子里存了個印象,但小龍蝦顯然也記得。
“這段IP里本來就不會有,”林凱說,“先跑內網摸底,建基準線,再去查那個。”
基準線。這是他從前世帶來的工作習慣:先知道“正常”是什么樣的,才能識別“異常”。在一個自己不了解的環境里貿然尋找目標,成功率極低,而且容易誤判。2008年的校園網有它自己的拓撲邏輯,他需要先把這張圖摸清楚。
小龍蝦:明白。
林凱保存文件,靠回椅背上。椅子發出一聲輕微的塑料摩擦聲。
第一個模塊完成了。功能不復雜,但它是工具鏈的第一塊磚。接下來要做的:*anner識別,服務指紋,結果比對,異常檢測。每一塊單獨看都不難,組合起來才有意義。
他在草稿紙上列了一個簡單的清單,圈掉第一項。
窗外天已經黑了,宿舍走廊里有人在打電話,聲音很大,說的是方言,大概在跟家里人報平安。諾基亞手機的外放聲音有種特有的金屬質感,穿過薄薄的木門傳進來。
他看了眼時鐘:21:47。
去食堂的窗口已經關了,宵夜攤要到十點才開。他從桌屜里翻出兩包榨菜,就著白開水吃了。熱水瓶是宿舍公用的,每天早晨打滿,到晚上已經不怎么燙了,只是溫熱。
味道還行。他盯著那個列了四項待辦的草稿紙,心里沒有焦慮,只是一種平靜的、流水線式的推進感。
一塊磚一塊磚壘。
閱讀下一章(解鎖全文)
點擊即可暢讀完整版全部內容
相關書籍
友情鏈接