網絡安全(Java語言)簡單腳本匯總 (一)

文章目錄

  • 敏感信息探測腳本
    • 源代碼
    • 思路
  • URL批量存活探測器
    • 源代碼
    • 思路
  • 端口掃描器
    • 源代碼
    • 思路

敏感信息探測腳本

源代碼


/*** @description 該腳本通過分析HTTP響應頭,來檢測可能暴露服務器信息的安全隱患*/import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;
import java.util.Scanner;public class HeaderLeakScanner {public static void main(String[] args) throws IOException {Scanner scanner = new Scanner(System.in);System.out.print("請輸入要掃描的URL(例如:http://example.com):");String urlString = scanner.nextLine();URL url = new URL(urlString);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");connection.setConnectTimeout(5000);connection.setReadTimeout(5000);// 發起請求int responseCode = connection.getResponseCode();System.out.println("HTTP響應狀態碼: " + responseCode);// 獲取響應頭Map<String, List<String>> headers = connection.getHeaderFields();//就是標簽和值的組合的集合 headers.entrySet()就是逐個查看每個標簽和對應的筐子boolean found = false;System.out.println("\n響應頭信息如下:");for (Map.Entry<String, List<String>> entry : headers.entrySet()) {String key = entry.getKey();List<String> values = entry.getValue();//Map.entry可以將鍵和值一起抓取,方便直接獲取其相關信息,但是如果不是用就需要先找到key,再通過key找valueif (key != null) {System.out.println(key + ": " + String.join(", ", values));// 檢查是否包含敏感字段if (key.equalsIgnoreCase("Server") ||key.equalsIgnoreCase("X-Powered-By") ||key.equalsIgnoreCase("X-AspNet-Version")) {found = true;}}}if (found) {System.out.println("\n? 該站點存在潛在的HTTP頭信息泄露!");} else {System.out.println("\n? 未發現明顯的HTTP頭信息泄露。");}connection.disconnect();}
}

思路

接收用戶輸入的字符串 ---- > 將字符串轉換為URL類型 -----> 向此URL發起連接
----> 設置連接的請求頭 ------> 發起請求并獲取響應碼和響應體 ------> 將屬性及對應的值使用Map類型進行存儲 -----> 對其中的屬性進行敏感信息的匹配 ,如果匹配成功,則提示,如果未成功則提示匹配失敗

URL批量存活探測器

源代碼

/***  腳本功能:URL批量存活探測器*  @function:1.輸入一個包含一堆URL的txt文件*             2.腳本自動嘗試連接這些URL*             3.輸出響應碼和是否存活*             4,將結果輸出到文件result.txt*/
//引入Java標準庫中的類
import java.io.*;   //導入文件讀寫相關的類,比如BufferedReader,FileReader,BufferedWriter,FileWriter
import java.net.HttpURLConnection;  //用于發送HTTP請求
import java.net.URL;   //用來處理網址對象,比如創建URL,打開連接等//主類和主方法
public class URLScanner {public static void main(String[] args) {String inputFile = "urls.txt";String outputFile = "result.txt";//定義兩個字符串,分別表示要讀取的網址列表文件(輸入) 和 要保存結果的文件//打開文件,逐行讀取try(BufferedReader reader = new BufferedReader(new FileReader(inputFile));BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile))) {//從url.txt中一行行讀取URL//BufferedWriter 將檢測結果寫入到result.txtString line;//定義好讀取內容的字符串對象 在下方進行賦值while ((line = reader.readLine()) != null) {String url = line.trim();//去除首尾空格,跳過空行if (url.isEmpty()) continue;int status = getHttpStatus(url);String result = url + "=>" + status + "[" + (status == 200 ? "存活" : "異常") + "]";System.out.println(result);writer.write(result);writer.newLine();//同時打印結果到控制臺和寫入到結果文件中}System.out.println("\n掃描完成,結果已寫入result.txt。");} catch (IOException e) {System.out.println("文件讀取/寫入出錯:" + e.getMessage());}}public static int getHttpStatus(String urlStr) {try {URL url = new URL(urlStr);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(3000);//設置連接服務器的超時conn.setReadTimeout(3000);//設置讀取數據的超時時間為3秒conn.setRequestMethod("GET");//指導HTTP請求方法為GETreturn conn.getResponseCode();} catch (IOException e) {return -1;}}
}

思路

  1. 首先分別定義好要存放掃描的URL和存放掃描結果的文件
  2. 創建文件讀取和文件寫入對象
  3. 對存放的URL進行讀取進行首尾去空,非空等判斷
  4. 對進行處理后的URL進行請求連接
  5. 連接思路和上方敏感信息泄露探測腳本思路一樣
  6. 將由響應碼組成的結果存入相對應的文件中

端口掃描器

源代碼

/*** @description 端口掃描器* 在該程序中,for循環負責循環將任務提交給線程池進行*/
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class MultiThreadedPortScanner {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 獲取用戶輸入System.out.print("請輸入目標 IP 地址:");String targetIP = scanner.nextLine();System.out.print("請輸入起始端口(如 1):");int startPort = scanner.nextInt();System.out.print("請輸入結束端口(如 65535):");int endPort = scanner.nextInt();System.out.print("請輸入線程數(建議 100~500):");int threadCount = scanner.nextInt();System.out.println("\n開始掃描主機 " + targetIP + " 的端口 " + startPort + " 到 " + endPort + "...\n");ExecutorService executor = Executors.newFixedThreadPool(threadCount);// 創建一個線程池,最多同時執行threadCount個任務,這避免了手動管理線程,同時提高掃描效率for (int port = startPort; port <= endPort; port++) {//從起始端口(startPort) 循環到結束端口 (endPort) , 一個個端口地掃描int finalPort = port;executor.execute(() -> {// 提交一個任務給線程池try (Socket socket = new Socket()) {//使用Socket試圖連接目標主機的finalPortsocket.connect(new InetSocketAddress(targetIP, finalPort), 100); // 100ms 超時//System.out.println("? 端口 " + finalPort + " 是開放的");} catch (IOException ignored) {// 忽略關閉端口}});}executor.shutdown();// 告訴線程池: 不再接受新任務,但要把已提交的任務全部執行完while (!executor.isTerminated()) {// 等待所有任務完成}System.out.println("\n? 掃描完成。");}
}
/**

思路

  1. @mind
  2. 對用戶要探測的IP地址以及端口范圍進行接收
  3. 創建線程池,對應相當數字的線程數
  4. 從起始到結束端口,將每個端口的掃描任務分配到線程中
  5. 設置任務具體內容為向目標IP以及對應端口發起連接請求,并設置超時時間
  6. 設置如果連接失敗,那么忽略
  7. .關閉線程池 executor.shutdown()
  8. 通過while循環來達到當所有端口及任務完成之后再結束的效果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/95566.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/95566.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/95566.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

buuctf_NSBlogin_http_upload(極客2019+ACTF2020新生賽)

今天做三1個web 題目&#xff1a;NSB_login用戶名有admin&#xff0c;看源碼&#xff1a;I like rockyou&#xff01;今天學習到&#xff0c;kali里面有密碼爆破的文件叫rockyou.txt&#xff08;/usr/share/wordlists/&#xff09;&#xff08;沒kali也可以去https://gitcode.c…

IDEA如何引用brew安裝的openjdk

因為 brew 安裝的 openjdk@21 目錄結構和 IDEA 期望的 JDK 目錄不一樣。所以默認brew安裝的jdk,在IDEA中是無法識別到的。 一、創建軟連接 sudo mkdir -p /Library/Java/JavaVirtualMachines sudo ln -sfn /usr/local/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/Java…

【Unity3D】Spine黑線(預乘問題)、貼圖邊緣裁剪問題

一、黑線問題 Spine正確的導出和Unity導入設置&#xff08;解決黑邊/彩條帶問題&#xff09;_spine導出的圖片有黑邊-CSDN博客 采用&#xff08;已解決問題&#xff09; Texture 打包器啟用 Premultiply alpha ,禁用Bleed Unity Texture 設置中禁用 sRGB (Color Texture) 和…

嵌入式系統學習Day18(文件編程-系統調用文件IO)

- open#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); 功能:打開文件 參數:pathname --- 文件名 flags 必選:O_RDONLYO_WRONLY…

Vue淺學

概述在最近的學習任務中了解了 Vue&#xff0c;并對其產生了濃厚的興趣&#xff0c;現在分享一下我的學習所得關鍵字其一statestate 是 Vuex 存儲中的“狀態對象”&#xff0c;用于存儲整個應用的共享數據&#xff08;如用戶信息、令牌、權限等&#xff09;&#xff0c;比如&am…

機器翻譯:Hugging Face庫詳解

文章目錄一、Hugging Face概述1.1 Hugging Face介紹1.2 核心理念&#xff1a;模型即服務&#xff0c;但以開源形式二、核心架構2.1 Transformers庫&#xff1a;模型交互的統一接口2.2 Datasets庫&#xff1a;高效的數據處理引擎2.3 Tokenizers庫&#xff1a;文本與模型的“翻譯…

服務器安裝gielab社區版

第一步&#xff1a;安裝Gitlab 1,使用的是CentOs鏡像(服務器最低配置為4核8g內存才行要不然帶不動) 登錄目標實例。 2,執行如下命令&#xff0c;安裝所需依賴。 1 sudo yum install -y curl policycoreutils-python openssh-server 3,執行如下命令&#xff0c;啟動SSH服務…

C#報錯:System.NullReferenceException:“未將對象引用設置到對象的實例。”

C#使用自定義的類創建數組時&#xff0c;使用時報錯&#xff0c;報錯內容如下圖&#xff1a;原因&#xff1a;C#中的數組是引用類型。當聲明自定義類數組時&#xff0c;數組本身會被創建&#xff0c;但其元素&#xff08;即自定義類的實例&#xff09;默認未被實例化&#xff0…

Maven 的 module 管理

一、Maven 的 module 管理 1. 什么是 Maven module&#xff1f; Maven module&#xff08;模塊&#xff09;&#xff0c;是 Maven 多模塊項目結構&#xff08;multi-module project&#xff09;中的核心概念。它允許你將一個大型項目拆分為若干獨立的小項目&#xff08;模塊&am…

現在都是APP,小程序搶購,支持瀏覽器不支持 SSE

在 APP 和小程序搶購場景中&#xff0c;通常不原生支持SSE&#xff08;Server-Sent Events&#xff09;&#xff0c;這與瀏覽器對 SSE 的支持情況不同&#xff0c;具體如下&#xff1a;APP&#xff1a;一般情況下&#xff0c;APP 端不支持原生 SSE。若使用 UniApp 開發&#xf…

Spring Boot 深度解析:從原理到實踐

一、Spring Boot 本質與核心價值 1.1 什么是 Spring Boot&#xff1f; Spring Boot 是 Spring 生態的革命性框架&#xff0c;旨在解決傳統 Spring 開發的復雜性。它通過"約定優于配置"&#xff08;Convention Over Configuration&#xff09;理念&#xff0c;提供開箱…

WebSocket-java篇

問題引入消息推送的方式我們要實現&#xff0c;服務器把消息推送到客戶端&#xff0c;可以輪訓&#xff0c;長輪訓還有sseWebSocket理論WebSocket 的由來與核心價值誕生背景&#xff1a;解決 HTTP 協議在實時通信中的固有缺陷&#xff08;單向請求-響應模式&#xff09;核心驅動…

用Python從零開始實現神經網絡

反向傳播算法用于經典的前饋人工神經網絡。 它仍然是訓練大型深度學習網絡的技術。 在這個教程中&#xff0c;你將學習如何用Python從頭開始實現神經網絡的反向傳播算法。 完成本教程后&#xff0c;您將了解&#xff1a; 如何將輸入前向傳播以計算輸出。如何反向傳播錯誤和…

算法148. 排序鏈表

題目&#xff1a;給你鏈表的頭結點 head &#xff0c;請將其按 升序 排列并返回 排序后的鏈表 。示例 1&#xff1a;輸入&#xff1a;head [4,2,1,3] 輸出&#xff1a;[1,2,3,4] 示例 2&#xff1a;輸入&#xff1a;head [-1,5,3,4,0] 輸出&#xff1a;[-1,0,3,4,5] 示例 3&a…

在騰訊云CodeBuddy上實現一個AI聊天助手

在騰訊云CodeBuddy上實現一個AI聊天助手項目 在當今數字化時代&#xff0c;AI聊天助手已經成為一種非常流行的應用&#xff0c;廣泛應用于客戶服務、智能助手等領域。今天&#xff0c;我們將通過騰訊云CodeBuddy平臺&#xff0c;實現一個基于Spring Boot和OpenAI API的AI聊天助…

JavaScript Array.prototype.flatMap ():數組 “扁平化 + 映射” 的高效組合拳

在 JavaScript 數組處理中&#xff0c;我們經常需要先對每個元素進行轉換&#xff08;映射&#xff09;&#xff0c;再將結果 “鋪平”&#xff08;扁平化&#xff09;。比如將數組中的每個字符串按空格拆分&#xff0c;然后合并成一個新數組。傳統做法是先用map()轉換&#xf…

區塊鏈與元宇宙:數字資產的守護者

1 區塊鏈支撐元宇宙數字資產的底層邏輯1.1 不可篡改性構建信任基石區塊鏈的不可篡改性為元宇宙數字資產提供了堅實的信任基礎。其核心在于分布式賬本技術&#xff0c;當一筆數字資產交易發生時&#xff0c;會被打包成區塊并廣播至網絡中的所有節點。每個節點都會對這筆交易進行…

Linux軟件編程:進程和線程(進程)

進程一、基本概念進程&#xff1a;是程序動態執行過程&#xff0c;包括創建、調度、消亡程序&#xff1a;存放在外存的一段數據的集合二、進程創建&#xff08;一&#xff09;進程空間分布每個進程運行起來后&#xff0c;操作系統開辟0-4G的虛擬空間進程空間&#xff1a;用戶空…

Mybatis學習筆記(五)

分頁插件與性能優化 分頁插件配置 簡要描述&#xff1a;MybatisPlus分頁插件是基于物理分頁實現的高性能分頁解決方案&#xff0c;支持多種數據庫的分頁語法&#xff0c;能夠自動識別數據庫類型并生成對應的分頁SQL。 核心概念&#xff1a; 物理分頁&#xff1a;直接在SQL層面進…

企業可商用的conda:「Miniforge」+「conda-forge」

文章目錄一、徹底卸載現有 Anaconda/Miniconda二、安裝 Miniforge&#xff08;推薦&#xff09;macOS/Linux檢查Windows檢查三、將通道固定為 conda-forge&#xff08;嚴格優先&#xff09;四、驗證是否仍引用 Anaconda 源五、常見問題&#xff08;FAQ&#xff09;六、參考命令…