Bhagyarajbheesetty/LLDP-Scanner

GitHub: Bhagyarajbheesetty/LLDP-Scanner

一款基于 Python 和 Tkinter 的 Windows LLDP 网络设备发现工具,通过图形界面实时显示链路层邻居设备信息。

Stars: 0 | Forks: 0

# LLDP 网络设备扫描器(带 GUI) 一个轻量级的 Windows 应用程序,使用链路层发现协议(LLDP)发现网络设备,并通过图形用户界面实时显示其信息。 ## 功能 - **现代化、响应式 GUI**:使用 Tkinter 构建;窗口在启动时最大化打开,但仍可完全自由调整大小。 - **双面板布局**: - *左侧面板*:网络接口选择器 – 仅显示友好的接口名称(没有 `[NPF]` 杂乱字符),支持垂直展开,并自动选择第一个可用接口。 - *右侧面板*:控制按钮(开始/停止扫描、导出结果、清除结果)以及显示最新 LLDP 邻居的实时结果表。 - **实时 LLDP 发现**:显示 Chassis ID、Port ID、TTL、System Name、Port Description、System Capabilities 和 Management Address。 - **智能 Management Address 处理**: - 自动解析 LLDP Management Address TLV。 - 以点分十进制格式(例如 `192.168.1.1`)提取并显示 IPv4 地址。 - 对于 IPv6 或其他地址类型,会平滑回退到原始数据。 - **结果导出**:在扫描期间或之后点击 **导出结果**,将整个表格保存为 CSV 文件(UTF-8 编码),文件名由用户选择。 - **结果过滤**:在结果表上方的 **搜索** 框中输入内容,可以根据任意列(接口、chassis ID、system name 等)实时过滤行。搜索框现在位于工具栏右侧,使布局更加整洁。 - **修复了接口选择器滚动条**:网络接口列表框现在包含可用的垂直和水平滚动条,方便在存在大量接口时进行平滑导航。 - **列可见性控制**:点击 **列** 按钮(或右键点击任意列标题),通过复选框菜单显示/隐藏列;可见性和列宽会在不同会话之间持久保存。 - **深色/浅色主题切换**:使用 **切换主题** 按钮在浅色(原生 Windows)和深色主题之间切换;偏好设置会被保存和恢复。 - **持久化设置**:应用程序会记住您上次选择的接口、窗口大小/位置、列宽、隐藏列、主题选择和搜索文本,并在下次启动时恢复它们。 - **内存高效**:将显示的表格限制为最近的 100 条记录,以避免无限制增长。 - **即插即用**:只需在 WinPcap-API 兼容模式下安装 Npcap。 - **单一可执行文件**:可使用 PyInstaller 打包,便于分发。 - **命令行界面**:原始 CLI(`python lldp_scanner.py`)仍然可供喜欢使用终端的用户使用。 ## 前置条件 - **Windows 10/11** - **Npcap** 需在 *WinPcap API 兼容模式* 下安装 (从 https://nmap.org/npcap/ 下载,并确保勾选 **"Install Npcap in WinPcap API-compatible Mode"** 选项) - 应用程序必须**以管理员身份**运行,才能访问原始网络套接字。 ## 构建说明 1. 将此仓库克隆或复制到 Windows 计算机。 2. **以管理员身份**打开命令提示符,并导航到项目文件夹。 3. 安装 Python 依赖: pip install -r requirements.txt 4. 构建可执行文件: build_exe.bat 这将创建 `dist\LLDP-scanner.exe`(GUI 版本)。 ## 用法 ### 使用 GUI(推荐) 1. 以管理员身份运行 `dist\LLDP-scanner.exe`。 窗口启动时会最大化,但您可以自由调整其大小。 2. 左侧面板列出所有可用的网络接口(仅显示友好名称)。默认会预选第一项。 3. 点击 **开始扫描** 以开始捕获所选接口上的 LLDP 数据包。 - 按钮会变灰,**停止扫描** 变为活动状态,状态栏会显示 `Scanning on `。 4. 发现的设备会显示在右侧的表格中,最新记录位于顶部。 - **Management Address** 列在可用时会显示可读的 IP 地址(例如 `192.168.1.1`)。 5. 使用表格上方的 **搜索** 框可以根据任意列即时过滤结果。搜索框现在位于工具栏右侧。 6. 点击 **列** 按钮(或右键点击任意列标题)以显示或隐藏列;您的可见性选择和列宽会被记住。 7. 点击 **切换主题** 以在浅色和深色外观之间切换;您的偏好设置将被保存。 8. 要停止捕获,请点击 **停止扫描**。控件将返回其初始状态。 9. 在扫描时或停止后(如果存在结果),点击 **导出结果** 将表格保存为您选择的 CSV 文件。 10. 点击 **清除结果** 以删除所有显示的记录。 11. 关闭窗口以退出应用程序。 ### 使用命令行界面 原始命令行界面仍然可用: 1. 确保已安装 Python 3.8+。 2. 安装依赖:`pip install -r requirements.txt` 3. 运行脚本:`python lldp_scanner.py` 4. 按照提示选择接口并在控制台中查看 LLDP 信息。 ## 工作原理 应用程序使用 Npcap/wpcap.dll 库(通过 Python 的 `ctypes`)捕获 EtherType 为 `0x88CC`(LLDP)的以太网帧。它会解析 LLDPDU(链路层发现协议数据单元)以提取设备信息。 GUI 版本运行一个简单的 Tkinter 界面,该界面会在接收到 LLDP 帧时实时更新。 ## 注意事项 - LLDP 是一种链路层协议;您只能看到直接连接到所选接口的设备(不能跨路由器)。 - 如果未检测到 LLDP 流量,应用程序将保持空闲状态,直到有帧到达或您停止扫描。 - 可执行文件捆绑了 Python 解释器和必需的库;目标机器上不需要单独安装 Python(前提是已安装 Npcap)。 ## 许可证 本项目按“原样”提供,用于教育目的。欢迎随意修改和重新分发。 *使用 Python、Tkinter 和 PyInstaller 构建。*
标签:LLDP, Python, Tkinter, 无后门, 桌面应用, 漏洞挖掘, 网络工具, 逆向工具