完成了這30天的試煉,回頭看這整個過程,我不只學會了技術細節,更養成了面對真實問題時分析與解決的習慣。一開始的目標很簡單:用純 Java 嘗試掃描指定的 IP...
TCP/IP 堆疊的差異是 port scanner 判斷目標「是什麼操作系統 / 裝置 / network middlebox」的主要線索之一。掃描器透過主動...
1.為什麼要掃描 Port?每個 Port 就像是電腦「門口」不同服務會聽在不同 Port,例如:80 → HTTP (網站)443 → HTTPS (加密網站...
今天嘗試把之前的「Port Scanner 專案」加上 Console Summary(掃描總結報告)。掃描完所有的 port,不只是一行一行輸出結果,還會在最...
今天我接觸到了一個比較進階的主題:用 ThreadPoolExecutor + Bounded Queue 來優化 Port Scanner。以往我寫的程式都是...
服務辨識 (Service Identification / Service Fingerprinting)在網路安全與滲透測試中,服務辨識指的是:確定目標主機...
Wireshark基本使用,今天的目標是,觀察 TCP 三次握手 (3-way handshake)。三次握手是電腦之間用 TCP 協定建立連線的基本步驟:Cl...
Wireshark:網路封包分析工具(Packet Analyzer)可以監聽網卡,把經過的資料包(Packet)擷取下來用圖形介面顯示 → 讓你看到:誰在跟誰...
Nmap 是一個功能完整的網路掃描工具,用於發現主機、掃描 port、辨識服務版本、做 OS 指紋辨識,還有可擴充的 Nmap Scripting Engine...
今天要使用 System.nanoTime() 量測程式執行時間,比較同步掃描 和 多執行緒掃描 的效能差異,學會用「數據」而不是「感覺」來判斷程式快或慢 Sy...
JSON (JavaScript Object Notation) = JavaScript 物件標記法。1.是一種資料交換格式(data format),用來...
CLI 全名是 Command Line Interface(命令列介面)。 package day1.day1; import java.io.IOExcep...
ConcurrentLinkedQueue:一種「併發安全」的 Queue(佇列),多個執行緒可以同時寫入而不會互相干擾。這樣就不用再加 synchronize...
限制併發 (Concurrency Limiting)在 Day16 是用固定大小的執行緒池 (FixedThreadPool) 去同時掃 port。但是如果開...
昨天練習的輸出結果是沒有序的,因為Java 的多執行緒是非同步(asynchronous)的。每個 Thread 自己跑,主程式不等它。不同的執行緒完成時間不同...
Race Condition(競爭條件):當多個執行緒(Threads)同時存取或修改同一個共享資源,因為「執行順序不確定」,導致程式結果不可預期的問題。多執行...
命令列參數(Command-line arguments):從 main(String[] args) 取得外部輸入,例如:java Day13Demo loc...
今天將昨天學到的CSV寫入Port 掃描器 package day1;import java.util.Scanner;import java.io.*;imp...
.csv 全名是 Comma-Separated Values(逗號分隔值)簡單來說,它是一種文字檔的表格格式,每一行是一筆資料,每一個欄位用「逗號 ,」隔開,...
Scanner 是 Java 內建的輸入工具,用來讀取使用者輸入。 String host = readHost(scanner);int[] range =...
try-with-resources形式是 try (Resource r = ...) { ... },編譯器會自動在區塊結束時呼叫 r.close()。任何...
在前面day6有稍微提到IOException,今天在做多一點的延伸學習回顧一下IO 是 Input / Output 的縮寫,意思是:輸入(Input)與輸出...
執行緒(Thread)是在程式裡同時做多件事的最小單位。單執行緒 vs 多執行緒--單執行緒,一次只能做一件事 --多執行緒,多件事同時進行執行緒 = 讓程式「...
Socket(通訊端)是網路中「電腦對電腦」溝通的基礎機制。簡單來說:Client(客戶端):主動連線的一方Server(伺服器):等待連線的一方通訊使用 IP...
Enum(列舉型別)用途:定義一組固定常數值,讓程式更清楚且安全。不用靠數字或字串表示狀態,程式更安全。避免拼字錯誤或使用無效值。 Exception(例外)例...
1 類別(Class):類別是「模板/藍圖」,用來描述一種物件的屬性和行為。屬性 → 變數(fields)行為 → 方法(methods)2 物件(Object...
函數方法定義public static int square(int num)這是一個「平方函數」,接收一個整數 num 作為參數,回傳它的平方。public...
day21 if / else 的語法與用途(條件分支)2 for 與 while 迴圈來重複執行工作3 把使用者輸入的 startPort、endPort 做...
day3今天學到1 學習網路基礎:使用 Socket 做 TCP 連線嘗試,理解 OPEN/CLOSED/TIMEOUT 的差別。2 對實務有用:系統管理、資安...