成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

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

一、項目概述

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

二、關(guān)鍵模塊與庫

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

三、代碼實現(xiàn)

1. 初始化GUI界面

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

class NetworkScannerGUI:
    def __init__(self, master):
        self.master = master
        master.title("網(wǎng)絡(luò)掃描器 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)建結(jié)果顯示表格
        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í)行掃描任務(wù),避免阻塞主線程。掃描過程中,程序會啟動進度條,提示用戶掃描進度:

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("完成", "掃描任務(wù)已完成!")

四、打包exe軟件包

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

1. 安裝PyInstaller

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

pip install pyinstaller

2. 打包Python腳本

假設(shè)你的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)掃描,如下圖所示:

五、總結(jié)

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

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

2011-09-05 12:36:08

路由器限速linux路由器

2017-01-19 21:08:33

iOS路由構(gòu)建

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

2010-08-12 10:02:16

路由器NAT

2009-08-14 11:35:01

Scala Actor

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-08-30 08:30:29

CPU操作系統(tǒng)寄存器
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产一区二区三区免费 | 亚洲欧美综合 | 色综合天天综合网国产成人网 | 91久久国产精品 | 日韩精品一区二区三区在线观看 | 日韩精品免费 | 久久久久成人精品免费播放动漫 | 欧美成人精品激情在线观看 | 国产成人精品一区二区三区在线 | 欧美乱操 | 99久久久久久99国产精品免 | а天堂中文最新一区二区三区 | 欧美美女被c| 成人亚洲性情网站www在线观看 | 欧美日韩在线精品 | 在线观看国产网站 | 欧美视频一区二区三区 | 伦理午夜电影免费观看 | 成人在线免费电影 | 国产精品日产欧美久久久久 | 国产精品久久国产精品久久 | 国产精品久久久久久久久久久久冷 | 新超碰97| 在线视频中文字幕 | 色又黄又爽网站www久久 | 国产高潮好爽受不了了夜色 | 亚洲一区亚洲二区 | 欧美a区| 中文字幕精品一区久久久久 | 91精品久久久久久久久久入口 | 天堂久久av| 国产高清视频在线 | 国产精品免费视频一区 | 剑来高清在线观看 | 最新黄色在线观看 | 国产精品1区2区 | 国产成人精品999在线观看 | 久久中文字幕一区 | 日本中文字幕在线观看 | 黄色片在线 | 国产精品自产拍在线观看蜜 |