Nmap 原始碼學習二 整體架構

2021-07-03 09:38:21 字數 1492 閱讀 1443

docs :相關文件

libdnet-stripped :開源網路介面庫

liblinear:開源大型線性分類庫

liblua:開源lua指令碼語言庫

libnetutil:基本的網路函式

libpcap:開源抓包庫

libpcre:開源正規表示式庫

macosx:xcode專案檔案

mswin32:vs專案檔案

nbase:nmap封裝的基礎使用函式庫

ncat:netcat網路工具,由nmap實現

ndiff:比較nmap掃瞄結果的實用命令

nmap-update:負責nmap更新操作

nping:nmap專案組實現的新版的hping,探測與構建包

nselib:nmap的lua指令碼

nsock:nmap實現的並行的socketevent處理庫

scripts:nmap提供常用的掃瞄檢查的lua指令碼

todo:開發任務

zenmap:python的圖形介面程式

入口程式在main.cc,主要功能

然後是根據傳入引數去呼叫 nmap.cc的nmap_main()函式。下面是精簡後的原始碼:

int main(int argc, char *argv) 

/* copy rest of command-line arguments */

for (i = 1; i < argc && strlen(command) + strlen(argv[i]) + 1

< sizeof(command); i++)

myargc = arg_parse(command, &myargv);

if (myargc < 1)

ret = nmap_main(myargc, myargv);

arg_parse_free(myargv);

return ret;

} if (argc == 3 && strcmp("--resume", argv[1]) == 0)

return nmap_main(myargc, myargv);

} return nmap_main(argc, argv);

}

然後程式教育nmap_main().

nmap_main裡,表面看起來掃瞄的迴圈是從2065行開始:

for (targetno = 0; targetno < targets.size(); targetno++) {

currenths = targets[targetno];

前後的**都比較多,下次再抽時間細緻分析。

這裡引用乙個別人做的流程圖:

引用**:

jquery原始碼 整體架構

對外提供了jquery。可以通過jquery或者 來找到jquery function window,undefined window.jquery window.jquery 對外介面 window jquery本身是乙個建構函式,包括了很多靜態方法 工具方法 和例項方法。靜態方法更底層。func...

jQuery原始碼學習(版本1 11) 整體架構

如下,首先整個 結構看上去就是乙個閉包自執行,閉包執行的好處在於閉包擁有私有的作用域,不會汙染全域性作用域,最終再將jquery作為乙個命名空間匯出到window下,這樣 管理起來非常方便,相容性好。jquery整個閉包執行,實際是執行了factory 方法,而factory 是作為引數傳進去的,因...

Flume架構與原始碼分析 整體架構

最近在學習flume原始碼,所以想寫乙份flume原始碼學習的筆記供需要的朋友一起學習參考。flume是cloudera公司開源的一款分布式 可靠地進行大量日誌資料採集 聚合和並轉移到儲存中 通過事務機制提供了可靠的訊息傳輸支援,自帶負載均衡機制來支撐水平擴充套件 並且提供了一些預設元件供直接使用。...