<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

      高效端口掃描:SpringBoot + nmap4j 獲取端口神器!

      0
      分享至

      Java精選面試題(微信小程序):5000+道面試題和選擇題,真實(shí)面經(jīng)簡歷模版,包含Java基礎(chǔ)、并發(fā)、JVM、線程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架構(gòu)設(shè)計(jì)、大廠真題等,在線隨時刷題!

      序言

      今天在工作的時候,領(lǐng)導(dǎo)突然安排和我說一個需求,就是根據(jù)一個 ip 和 端口去獲取對應(yīng)服務(wù)上對應(yīng)端口的信息,當(dāng)時主要是為了確定數(shù)據(jù)庫的版本和型號,比如 MySQL、Oracle 這些數(shù)據(jù)庫,我后面嘗試發(fā)現(xiàn)其他端口也可以獲取信息。

      這個在公司里之前是通過 python 來寫的,python 里面剛好有這個模塊,但是 Java 沒有,所以寫這篇文章記錄一下,幫助大家以后避免踩坑。

      代碼已經(jīng)提交到了我的GitHub:

      https://github.com/maoshengyzx/SpringBoot

      nmap4j

      nmap4j 是一個用于 Java 語言的 Nmap 端口掃描器的包裝庫,它允許 Java 開發(fā)者在自己的項(xiàng)目中方便地調(diào)用 Nmap 的功能進(jìn)行網(wǎng)絡(luò)掃描和探測。

      GitHub地址:

      https://github.com/narkisr/nmap4j

      在運(yùn)行這個代碼之前,我們是需要下載 nmap 的可執(zhí)行文件,地址為:

      https://nmap.org/download.html#windows


      這里下載第一個,下載后安裝就行了。

      代碼說明

      接下來和大家說一下 nmap4j 中的測試代碼,這里面有個坑,我當(dāng)時找了好久,代碼在test/org/nmap4j/Nmap4jTest.java

      publicclassNmap4jTest{ @Test publicvoidbasicNmap4jUsageTest(){ try {                // 這里的路徑要改為剛才 nmap 軟件的安裝路徑    String path = "/usr/local" ;        Nmap4j nmap4j = new Nmap4j( path ) ;                // 這地方使用了 -oX 后面要跟文件名稱    nmap4j.addFlags( "-sV -T5 -O -oX -" ) ;    nmap4j.includeHosts( "localhost" ) ;    nmap4j.execute() ;    if( !nmap4j.hasError() ) {                              NMapRun nmapRun = nmap4j.getResult() ;  // 這一行一定要注釋掉,不然會一直報錯     String output = nmap4j.getOutput() ;  // 這一樣代碼意義也不大,我直接刪掉了     if( output == null ) {      fail() ;     }     String errors = nmap4j.getExecutionResults().getErrors() ;     if (errors == null ) {      fail() ;     }    }   } catch (NMapInitializationException e) {    // TODO Auto-generated catch block    e.printStackTrace();    fail() ;   } catch (NMapExecutionException e) {    // TODO Auto-generated catch block    e.printStackTrace();    fail() ;   }  } }
      參數(shù)說明:

      目標(biāo)選擇參數(shù):

      • -iL從文件中讀取掃描目標(biāo)列表。例如,nmap -iL targets.txt,會從targets.txt文件中讀取每行一個的 IP 地址或域名作為掃描目標(biāo)。

      • -iR隨機(jī)選擇指定數(shù)量的主機(jī)進(jìn)行掃描。如nmap -iR 100,會隨機(jī)選取 100 個主機(jī)進(jìn)行掃描。

      • --exclude 排除指定的主機(jī)或網(wǎng)絡(luò)不進(jìn)行掃描。例如,nmap 192.168.1.0/24 --exclude 192.168.1.100,192.168.1.200,將掃描192.168.1.0/24網(wǎng)段,但排除192.168.1.100192.168.1.200這兩臺主機(jī)。

      • --excludefile 從文件中讀取要排除的主機(jī)或網(wǎng)絡(luò)列表。

      掃描類型參數(shù):

      • -sSTCP SYN 掃描,也稱為半開放掃描。它發(fā)送 SYN 包到目標(biāo)端口,如果收到SYN/ACK響應(yīng),就表示端口開放;如果收到 RST 響應(yīng),則表示端口關(guān)閉。這種掃描方式速度快,且不容易被目標(biāo)系統(tǒng)記錄,相對隱蔽,例如nmap -sS 192.168.1.100

      • -sTTCP 連接掃描,通過完整的 TCP 三次握手來確定端口是否開放。這種掃描方式最準(zhǔn)確,但也最容易被檢測到,如nmap -sT 192.168.1.100。

      • -sUUDP 掃描,用于檢測目標(biāo)主機(jī)上的 UDP 端口是否開放。因?yàn)?UDP 是無連接協(xié)議,所以判斷端口狀態(tài)相對復(fù)雜,nmap -sU 192.168.1.100可對指定主機(jī)進(jìn)行 UDP 掃描。

      • -sF、-sX、-sN分別是 FIN 掃描、XMAS 掃描和 NULL 掃描。這些掃描方式通過發(fā)送特殊標(biāo)志位的 TCP 包來判斷端口狀態(tài),常用于繞過一些簡單的防火墻檢測。

      端口指定參數(shù):

      • -p指定要掃描的端口范圍??梢允菃蝹€端口,如-p 80;也可以是多個端口,如-p 80,443,8080;還可以是端口范圍,如-p 1-1000表示掃描 1 到 1000 號端口。

      • --top-ports掃描最常用的指定數(shù)量的端口。例如,nmap --top-ports 100 192.168.1.100會掃描目標(biāo)主機(jī)上最常用的 100 個端口。

      • -F快速掃描模式,只掃描一些常見的端口,相當(dāng)于-p 1-1024加上一些其他常用端口。

      服務(wù)探測參數(shù):

      • -sV啟用服務(wù)版本探測,嘗試確定目標(biāo)主機(jī)上運(yùn)行的服務(wù)及其版本信息。例如,nmap -sV 192.168.1.100可以掃描出目標(biāo)主機(jī)開放端口上運(yùn)行的服務(wù)名稱和版本號。

      • --version-intensity設(shè)置服務(wù)版本探測的強(qiáng)度,級別越高,探測越全面,但耗時也越長,取值范圍是 0 到 9。

      操作系統(tǒng)探測參數(shù):

      • -O啟用操作系統(tǒng)探測,嘗試識別目標(biāo)主機(jī)的操作系統(tǒng)類型和版本。如nmap -O 192.168.1.100

      • --osscan-limit限制操作系統(tǒng)探測只對可能的目標(biāo)進(jìn)行,這樣可以加快掃描速度,但可能會降低準(zhǔn)確性。

      • --osscan-guess更積極地猜測操作系統(tǒng)類型,當(dāng) Nmap 不確定時會給出更寬泛的猜測結(jié)果。

      輸出參數(shù):

      • -oN將掃描結(jié)果以正常格式保存到指定文件。例如,nmap -oN scan_results.txt 192.168.1.100會把掃描結(jié)果保存到scan_results.txt文件中。

      • -oX將掃描結(jié)果以 XML 格式保存到指定文件,方便后續(xù)使用腳本或其他工具進(jìn)行解析和處理。

      • -oG將掃描結(jié)果以 Grep 格式保存,這種格式便于使用文本處理工具進(jìn)行分析。

      • -oA以多種格式(包括正常、XML 和 Grep 格式)保存掃描結(jié)果,文件名為指定的基本名稱加上相應(yīng)的擴(kuò)展名。

      • -v詳細(xì)輸出模式,顯示更多的掃描過程信息,如發(fā)送的數(shù)據(jù)包、收到的響應(yīng)等。使用多個v可以增加詳細(xì)程度,如-vv-vvv。

      這里給大家看一下改造后的代碼:

      /**  * 使用 nmap4j 工具進(jìn)行掃描  *  * @param ip    目標(biāo) ip  * @param ports 目標(biāo)端口  * @return 端口信息列表  */ @RequestMapping("/querydb") public List   querydb(@RequestParam(value = "ip") String ip, @RequestParam("ports") List ports)  {     ArrayList portInfos =  new ArrayList<>();     // 1.拼接端口     String portStr = StrUtil.join(",", ports);     //2. 指定 nmap 路徑     String path = "D:/StudyApps/nmap";     String fileName = "temp_result.xml";     Nmap4j nmap4j = new Nmap4j(path);     //3.讀取端口耗時較長,可以使用異步     CompletableFuture future = CompletableFuture.runAsync(() -> {         nmap4j.addFlags("-sV -p " + portStr + " -T5 -O -oX " + fileName);         nmap4j.includeHosts(ip);         try {             nmap4j.execute();         } catch (Exception e) {             thrownew RuntimeException(e);         }     }, threadPoolExecutor);     future.join();     //4. 獲取端口信息     return getPortInfo(portInfos, fileName); }

      /**      * 獲取 ip + 端口信息,封裝為集合返回前端      *      * @param portInfos 返回前端集合      * @param fileName  臨時的 xml 文件      * @return 信息列表      */     @SneakyThrows     private List   getPortInfo(List portInfos, String fileName) {         // 獲取項(xiàng)目所在路徑         String projectPath = System.getProperty("user.dir");         // 拼接文件路徑         String filePath = projectPath + FileUtil.FILE_SEPARATOR + fileName;         log.info("文件路徑:{}", filePath);         // nmap 返回 xml 格式固定,使用 dom4j 解析         SAXReader reader = new SAXReader();         org.dom4j.Document document = reader.read(FileUtil.file(filePath));         org.dom4j.Element rootElement = document.getRootElement();         org.dom4j.Element element = rootElement.element("host");         org.dom4j.Element xmlPorts = element.element("ports");         List port = xmlPorts.elements( "port");         for (org.dom4j.Element port1 : port) {             Element service = port1.element("service");             String product = service.attributeValue("product");             String version = service.attributeValue("version");             NmapPortInfo nmapPortInfo = new NmapPortInfo(product, version);             portInfos.add(nmapPortInfo);         }         // 刪除臨時文件         FileUtil.del(filePath);         return portInfos;     } }

      我這里就是沒有去按照官網(wǎng)上的寫法,我的思路是文件已經(jīng)下載了我直接去讀取 xml 文件解決會更快,這里是使用 dom4j 來讀取的 xml 文件。代碼就這么多,最后請求是可以獲取到數(shù)據(jù)的:


      補(bǔ)充

      由于這段代碼是在windows上運(yùn)行的,而在實(shí)際的環(huán)境中項(xiàng)目都會部署到 Linux 環(huán)境匯總,所以我不得不在 Linux 上去運(yùn)行調(diào)試這段代碼。代碼如下:

      /**  * 使用 nmap4j 工具進(jìn)行掃描, linux系統(tǒng)  *  * @param ip    目標(biāo) ip  * @param ports 目標(biāo)端口  * @return 端口信息列表  */ @GetMapping("/linux/querydb") @SneakyThrows public List   linuxQuerydb(@RequestParam(value = "ip") String ip, @RequestParam("ports") List ports)  {     ArrayList portInfos =  new ArrayList<>();     // 1.拼接端口     String portStr = StrUtil.join(",", ports);     String fileName = "temp_result.xml";     //2. linux namp 命令     String nmapCommand = "nmap -sV -p " + portStr + " -T5 -O -oX " + fileName + " " + ip;     //3. 讀取端口耗時較長,可以使用異步     CompletableFuture future = CompletableFuture.runAsync(() -> {         Process nampProcess = null;         try {             // 3. 運(yùn)行命令             nampProcess = Runtime.getRuntime().exec(nmapCommand);             // 4. 等待命令執(zhí)行完成             nampProcess.waitFor();         } catch (Exception e) {             thrownew RuntimeException(e);         }     }, threadPoolExecutor);     future.join();     // 5. 獲取端口信息     return getPortInfo(portInfos, fileName); }

      這里的初步思路是直接調(diào)用 Linux 的命令執(zhí)行 nmap (Linux系統(tǒng)中必須下載 nmap)。至于下載這里就不多說了,大家只需要注意下載的版本最好也為 7.95,其他版本下載的 xml 文件有問題,無法解析。

      總結(jié)

      忘記和大家說了,nmap4j 在maven倉庫是搜不到的,所以只通過 jar 包的方式來引入,地址為:

      https://master.dl.sourceforge.net/project/nmap4j/1.1.0/org.nmap4j-1.1.0-RELEASE.zip?viasf=1

      作者:發(fā)憤圖強(qiáng)的羔羊

      來源:https://juejin.cn/post/7458189303063035958

      公眾號“Java精選”所發(fā)表內(nèi)容注明來源的,版權(quán)歸原出處所有(無法查證版權(quán)的或者未注明出處的均來自網(wǎng)絡(luò),系轉(zhuǎn)載,轉(zhuǎn)載的目的在于傳遞更多信息,版權(quán)屬于原作者。如有侵權(quán),請聯(lián)系,筆者會第一時間刪除處理!

      最近有很多人問,有沒有讀者交流群!加入方式很簡單,公眾號Java精選,回復(fù)“加群”,即可入群!

      文章有幫助的話,點(diǎn)在看,轉(zhuǎn)發(fā)吧!

      特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關(guān)推薦
      熱點(diǎn)推薦
      癌癥去世的人越來越多?醫(yī)生反復(fù)提醒:寧可打打牌,也別做這5事

      癌癥去世的人越來越多?醫(yī)生反復(fù)提醒:寧可打打牌,也別做這5事

      蜉蝣說
      2025-12-19 22:01:31
      我外交部突然發(fā)出警告,如果外媒消息屬實(shí),中日事態(tài)將會相當(dāng)嚴(yán)重

      我外交部突然發(fā)出警告,如果外媒消息屬實(shí),中日事態(tài)將會相當(dāng)嚴(yán)重

      影孖看世界
      2025-12-19 19:14:04
      寧波小洛熙尸檢報告披露,大量內(nèi)幕遠(yuǎn)超想象,法醫(yī)一句話信息量大

      寧波小洛熙尸檢報告披露,大量內(nèi)幕遠(yuǎn)超想象,法醫(yī)一句話信息量大

      博士觀察
      2025-12-20 22:59:58
      拔“刺”高手,伊薩克對熱刺打入7球?yàn)橛⒊淖疃?>
    </a>
        <h3>
      <a href=懂球帝
      2025-12-21 03:04:14
      羅素:愚蠢的四大特征

      羅素:愚蠢的四大特征

      尚曦讀史
      2025-12-19 09:55:05
      除了戰(zhàn)敗認(rèn)輸,已經(jīng)無路可走?洪森軍隊(duì)遭重創(chuàng):柬埔寨或爆發(fā)內(nèi)亂

      除了戰(zhàn)敗認(rèn)輸,已經(jīng)無路可走?洪森軍隊(duì)遭重創(chuàng):柬埔寨或爆發(fā)內(nèi)亂

      策前論
      2025-12-20 23:12:53
      柬埔寨電詐分子上演大逃亡,場面震撼!

      柬埔寨電詐分子上演大逃亡,場面震撼!

      環(huán)球熱點(diǎn)快評
      2025-12-20 07:53:18
      “邪修大法”做家務(wù)就是快!一分錢不花,家里就窗明幾凈~

      “邪修大法”做家務(wù)就是快!一分錢不花,家里就窗明幾凈~

      裝修秀
      2025-12-19 11:30:03
      馬云預(yù)言或?qū)?yīng)驗(yàn)了?未來5年,比開藥店還要暴利的4個方向

      馬云預(yù)言或?qū)?yīng)驗(yàn)了?未來5年,比開藥店還要暴利的4個方向

      百態(tài)人間
      2025-12-20 05:25:03
      向高市早苗示好不到24小時,張本底細(xì)被扒,父母的黑歷史也被翻出

      向高市早苗示好不到24小時,張本底細(xì)被扒,父母的黑歷史也被翻出

      天天熱點(diǎn)見聞
      2025-12-20 06:08:30
      民進(jìn)黨支持者竟造謠“嫌犯是大陸籍” 蔣萬安駁斥

      民進(jìn)黨支持者竟造謠“嫌犯是大陸籍” 蔣萬安駁斥

      看看新聞Knews
      2025-12-21 00:07:04
      55歲鐘麗緹中年發(fā)福太多!胖到180斤 胸大腚圓 滿身肥肉穿吊帶

      55歲鐘麗緹中年發(fā)福太多!胖到180斤 胸大腚圓 滿身肥肉穿吊帶

      廣西阿妹香香
      2025-12-20 15:58:58
      上海一對情侶戀愛時男方說“我養(yǎng)你”,分手后女方以此為證,拒絕返還40余萬元!測謊實(shí)驗(yàn)后,法院判了

      上海一對情侶戀愛時男方說“我養(yǎng)你”,分手后女方以此為證,拒絕返還40余萬元!測謊實(shí)驗(yàn)后,法院判了

      都市快報橙柿互動
      2025-12-20 09:35:12
      克林頓與愛潑斯坦案受害者共浴照片披露

      克林頓與愛潑斯坦案受害者共浴照片披露

      揚(yáng)子晚報
      2025-12-20 11:50:57
      快扔掉!戴一天,輻射量相當(dāng)于拍117次胸片

      快扔掉!戴一天,輻射量相當(dāng)于拍117次胸片

      FM93浙江交通之聲
      2025-10-28 00:01:43
      同仁堂集團(tuán)就南極磷蝦油事件致歉:全面開展品牌清理行動

      同仁堂集團(tuán)就南極磷蝦油事件致歉:全面開展品牌清理行動

      界面新聞
      2025-12-20 09:03:27
      北京阿姨20年守茅臺股票:90萬本金,分紅326萬,成本歸零!

      北京阿姨20年守茅臺股票:90萬本金,分紅326萬,成本歸零!

      趣文說娛
      2025-12-20 18:29:20
      歐爾班抨擊歐盟向?yàn)跆峁┵J款,波蘭外長向歐爾班頒發(fā)列寧勛章

      歐爾班抨擊歐盟向?yàn)跆峁┵J款,波蘭外長向歐爾班頒發(fā)列寧勛章

      山河路口
      2025-12-20 19:17:58
      歐盟動用俄資產(chǎn)的方案未獲通過

      歐盟動用俄資產(chǎn)的方案未獲通過

      環(huán)球時報國際
      2025-12-20 09:31:53
      轉(zhuǎn)發(fā)野三坡隧道事故視頻被要求刪除,還有網(wǎng)友稱發(fā)生了爆炸

      轉(zhuǎn)發(fā)野三坡隧道事故視頻被要求刪除,還有網(wǎng)友稱發(fā)生了爆炸

      映射生活的身影
      2025-12-20 19:18:13
      2025-12-21 03:44:49
      Java精選
      Java精選
      一場永遠(yuǎn)也演不完的戲
      1764文章數(shù) 3859關(guān)注度
      往期回顧 全部

      科技要聞

      許四清:具身智能的"ChatGPT時刻"還未到來

      頭條要聞

      臺北致4人身亡嫌犯被指是"大陸籍" 蔣萬安回應(yīng)

      頭條要聞

      臺北致4人身亡嫌犯被指是"大陸籍" 蔣萬安回應(yīng)

      體育要聞

      我開了20年大巴,現(xiàn)在是一名西甲主帥

      娛樂要聞

      2026央視跨年晚會陣容曝光,豪華陣仗

      財(cái)經(jīng)要聞

      求解“地方財(cái)政困難”

      汽車要聞

      嵐圖推進(jìn)L3量產(chǎn)測試 已完成11萬公里實(shí)際道路驗(yàn)證

      態(tài)度原創(chuàng)

      家居
      時尚
      親子
      健康
      藝術(shù)

      家居要聞

      高端私宅 理想隱居圣地

      最顯腿細(xì)的騎士靴,誰穿誰是腿精

      親子要聞

      邊牧和德牧帶娃在外面挖坑,三個小朋友加起來800個心眼子!

      這些新療法,讓化療不再那么痛苦

      藝術(shù)要聞

      投資26億!廣州“獨(dú)角獸”的總部大樓,躍出地面!

      無障礙瀏覽 進(jìn)入關(guān)懷版 主站蜘蛛池模板: 久久久久99精品成人片毛片| 精品一区二区三区四区| 无码专区—va亚洲v天堂麻豆| 秀山| 亚洲精品自拍| 西西444www高清大胆| 国产欧美久久一区二区| 日韩人妻无码专区| 99在线精品国自产拍不卡| 国产av最新一区二区| 最近最新中文字幕高清免费| 人妻体内射精一区二区三区| 潮喷视频免费| 久久国产东京热加勒比| 91成人社区| 狠狠干| 日本熟妇hdsex视频| 少妇人妻综合久久中文字幕| 亚洲Av秘?无码一区二区下载| 日韩无码系列| 加勒比久久AV| 中文字幕在线视频不卡一区二区| 欧美mv日韩mv国产网站app | 人妻少妇av中文字幕乱码 | 成人欧美一区二区三区1314| 乱中年女人伦av二区 | 婷婷四虎东京热无码群交双飞视频 | 麻豆精品一区综合av在线| 377人体粉嫩噜噜噜| 一卡二卡三| 91小电影| 3PAV乱伦视频| 国产播放91色在线观看| 人妻有码中文字幕在线| 早起邻居人妻奶罩太松av| 国产精品污www在线观看| 国产乱人伦av在线无码| 密云县| 另类一区| 丝袜国产在线| 国产人妻|