自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一步步教你用 Python 構建一個網(wǎng)絡掃描工具,快速識別網(wǎng)絡中的設備

開發(fā) 網(wǎng)絡
今天將介紹如何用Python創(chuàng)建一個簡易的圖形界面網(wǎng)絡掃描器,該工具結合了ping命令、nmap掃描以及ARP協(xié)議,用于掃描目標IP,收集如MAC地址和操作系統(tǒng)類型等信息。

在網(wǎng)絡運維和安全中,網(wǎng)絡掃描工具能幫助管理員快速發(fā)現(xiàn)網(wǎng)絡問題、檢測設備連通性和安全漏洞。今天將介紹如何用Python創(chuàng)建一個簡易的圖形界面網(wǎng)絡掃描器,該工具結合了ping命令、nmap掃描以及ARP協(xié)議,用于掃描目標IP,收集如MAC地址和操作系統(tǒng)類型等信息。

之前我們已經(jīng)分享過一篇關于如何使用Python腳本掃描局域網(wǎng)IP并獲取在線設備MAC地址的文章。為了讓大家日后使用起來更加方便,這次我們將這個腳本通過Python的第三方庫Tkinter封裝成了一個簡單易用的小軟件。

一、項目概述

本項目創(chuàng)建了一個圖形化界面的網(wǎng)絡掃描工具,用戶可以輸入目標IP或網(wǎng)段,點擊開始掃描按鈕,程序會自動掃描指定的IP地址,檢測哪些主機在線,并展示其MAC地址和操作系統(tǒng)信息。工具使用了Python中的tkinter庫創(chuàng)建GUI界面,并通過多線程提高掃描效率。

二、關鍵模塊與庫

  • tkinter:用于創(chuàng)建圖形界面,包括文本框、按鈕、標簽、進度條等控件。
  • subprocess:用于執(zhí)行系統(tǒng)命令(如ping、arp、nmap),并獲取命令的輸出。
  • re:用于正則表達式匹配,提取IP地址、MAC地址和操作系統(tǒng)信息。
  • concurrent.futures:通過線程池執(zhí)行并發(fā)任務,提高掃描效率。

三、代碼實現(xiàn)

1. 初始化GUI界面

首先,我們通過tkinter創(chuàng)建一個窗口,窗口中包括輸入框、按鈕和一個表格來顯示掃描結果:

class NetworkScannerGUI:
    def __init__(self, master):
        self.master = master
        master.title("網(wǎng)絡掃描器 v1.0")
        
        # 創(chuàng)建輸入?yún)^(qū)域
        input_frame = ttk.Frame(master, padding="10")
        input_frame.pack(fill=tk.X)
        
        ttk.Label(input_frame, text="目標IP/網(wǎng)段:").grid(row=0, column=0, sticky=tk.W)
        self.ip_entry = ttk.Entry(input_frame, width=25)
        self.ip_entry.grid(row=0, column=1, padx=5)
        self.scan_button = ttk.Button(input_frame, text="開始掃描", command=self.start_scan)
        self.scan_button.grid(row=0, column=2, padx=5)
         # 新增提示標簽
        ttk.Label(input_frame, text="輸入示例:192.168.1.100(單個IP)或 192.168.1(網(wǎng)段)", 
                 foreground="gray").grid(row=1, column=0, columnspan=3, pady=5, sticky=tk.W)
        # 創(chuàng)建結果顯示表格
        self.result_tree = ttk.Treeview(master, columns=('IP', 'MAC', '平臺'), show='headings')
        self.result_tree.heading('IP', text='IP地址')
        self.result_tree.heading('MAC', text='MAC地址')
        self.result_tree.heading('平臺', text='操作系統(tǒng)')
        self.result_tree.pack(expand=True, fill=tk.BOTH, padx=10, pady=5)
        
        # 進度條
        self.progress = ttk.Progressbar(master, mode='indeterminate')

2. 驗證輸入和生成掃描目標

我們添加了輸入驗證功能,確保用戶輸入的是有效的IP或網(wǎng)段格式,并根據(jù)輸入生成需要掃描的IP地址列表:

def validate_input(self, ip_str):
    """驗證輸入的IP格式"""
    if re.match(r"^\d{1,3}\.\d{1,3}\.\d{1,3}(\.\d{1,3})?$", ip_str):
        returnTrue
    messagebox.showerror("錯誤", "無效的IP地址格式!")
    returnFalse

def generate_targets(self, ip_str):
    """生成要掃描的目標列表"""
    if ip_str.count('.') == 3:  # 單個IP
        return [ip_str]
    # 添加網(wǎng)段格式驗證
    if re.match(r"^\d{1,3}\.\d{1,3}\.\d{1,3}$", ip_str):
        return generate_ip_range(ip_str)
    messagebox.showerror("錯誤", "無效的網(wǎng)段格式!")
    return []

3. 開始掃描

點擊開始掃描按鈕后,我們創(chuàng)建一個新的線程來執(zhí)行掃描任務,避免阻塞主線程。掃描過程中,程序會啟動進度條,提示用戶掃描進度:

def start_scan(self):
    """啟動掃描線程"""
    target = self.ip_entry.get().strip()
    ifnot self.validate_input(target):
        return

    self.scan_button.config(state=tk.DISABLED)
    self.progress.pack(fill=tk.X, padx=10)
    self.progress.start()
    self.result_tree.delete(*self.result_tree.get_children())

    # 創(chuàng)建掃描線程
    scan_thread = threading.Thread(
        target=self.run_scan,
        args=(target,),
        daemnotallow=True
    )
    scan_thread.start()

4. 執(zhí)行單個IP的掃描

通過ping命令檢查IP是否在線,如果在線,再通過arp獲取MAC地址,并通過nmap獲取操作系統(tǒng)信息:

def scan_single_ip(ip):
    if ping_ip(ip):
        mac = get_mac(ip)
        platform_info = get_platform(ip)
        return {"ip": ip, "mac": mac, "platform": platform_info}
    return None

5. 掃描完成

當掃描完成后,我們停止進度條,并顯示完成信息:

def scan_complete(self):
    """掃描完成處理"""
    self.progress.stop()
    self.progress.pack_forget()
    self.scan_button.config(state=tk.NORMAL)
    messagebox.showinfo("完成", "掃描任務已完成!")

四、打包exe軟件包

將Python腳本打包成.exe可執(zhí)行文件,可以使用多種工具,其中最常用的工具是PyInstaller。下面是使用PyInstaller將Python腳本打包成Windows可執(zhí)行文件的步驟。

1. 安裝PyInstaller

首先,確保你已安裝了PyInstaller。你可以通過pip來安裝:

pip install pyinstaller

2. 打包Python腳本

假設你的Python腳本名為network_scanner.py,你可以通過以下命令將其打包成.exe文件:

pyinstaller --onefile network_scanner.py
  • --onefile:表示將所有內(nèi)容打包成一個單獨的.exe文件。
  • network_scanner.py:是你的Python腳本文件。

如果你不使用--onefile,PyInstaller會創(chuàng)建一個文件夾,其中包含多個文件和依賴庫,而不是一個單獨的可執(zhí)行文件。

3. 生成的可執(zhí)行文件

在打包完成后,你可以在當前目錄下找到一個dist文件夾,里面會包含你打包的network_scanner.exe文件。

  • 默認情況下,打包后的文件位于 dist/ 文件夾下。
  • 你可以在dist文件夾中找到生成的.exe文件。

雙擊運行.exe文件即可進行局域網(wǎng)掃描,如下圖所示:

五、總結

通過本項目,我們成功地創(chuàng)建了一個基于Python的網(wǎng)絡掃描器,具備掃描單個IP、IP網(wǎng)段、獲取MAC地址、操作系統(tǒng)信息等功能。利用Tkinter打造了簡潔的GUI界面,借助多線程技術提高了掃描效率,進度條的加入則大大改善了用戶體驗。

責任編輯:趙寧寧 來源: 攻城獅成長日記
相關推薦

2011-09-05 12:36:08

路由器限速linux路由器

2017-01-19 21:08:33

iOS路由構建

2017-12-25 11:50:57

LinuxArch Linux

2023-12-20 18:06:33

STOMP協(xié)議ActiveMQ

2018-06-11 15:30:12

2024-10-30 16:01:31

2019-04-01 10:15:02

2019-03-05 14:09:27

Docker存儲容器

2019-07-09 15:23:22

Docker存儲驅(qū)動

2018-12-24 10:04:06

Docker存儲驅(qū)動

2009-04-15 09:29:07

2010-08-10 11:31:36

路由器配置NAT

2021-07-05 10:33:55

開發(fā)技能Go

2009-08-14 11:35:01

Scala Actor

2010-08-12 10:02:16

路由器NAT

2023-12-26 07:59:01

2018-04-23 14:23:12

2010-03-04 16:28:17

Android核心代碼

2016-11-02 18:54:01

javascript

2024-09-30 09:56:59

點贊
收藏

51CTO技術棧公眾號