网络安全监控工具 - 轻量级进程网络活动监控
- 🔍 网络连接监控 - 实时查看所有进程的TCP/UDP连接
- 📊 流量统计 - 系统级上传/下载速率显示
- 🔎 进程搜索 - 按进程名或PID快速查找
- 🎨 双主题支持 - 暗色/亮色主题一键切换
- 🛡️ 风险判断 - 自动识别可疑进程和恶意连接
- 📋 威胁库更新 - 在线拉取最新威胁情报
⚠️ 风险等级 - 正常/低风险/中风险/高风险/威胁
- 💻 悬浮窗设计 - 简洁时尚,不干扰工作
- 🧲 磁吸隐藏 - 拖到屏幕边缘自动隐藏
- 📱 可调整大小 - 拖拽边缘调整窗口尺寸
- 从 Releases 下载最新版本
- 解压发布包
- 确保
config文件夹与NetSentry.exe在同一目录 - 双击
NetSentry.exe运行
NetSentry/
├── NetSentry.exe
└── config/
└── threats/
└── threat_db.json
- Python 3.10 或更高版本
- uv 包管理器
Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Linux / macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh# 克隆仓库
git clone https://github.com/freadz/NetSentry.git
cd NetSentry
# 安装依赖并运行(uv 会自动处理所有依赖)
uv run python run.pyLinux 上主题切换按钮显示文字(Dark/Light)而非 emoji,这是为了兼容性。
cd NetSentry
uv run python build_exe.py生成的 NetSentry.exe 位于 dist/ 目录下。
cd NetSentry
# 安装依赖
uv sync
# 打包(需要安装 PyInstaller)
uv run pyinstaller run.py \
--name=NetSentry \
--onefile \
--windowed \
--clean \
--noconfirm \
--hidden-import=PyQt6 \
--hidden-import=psutil \
--collect-all=PyQt6
# 生成的可执行文件在 dist/ 目录注意:Linux 打包需要系统已安装相关图形库(如 PyQt6 的依赖)。
| 操作 | 方法 |
|---|---|
| 移动窗口 | 拖拽标题栏 |
| 调整大小 | 拖拽窗口边缘 |
| 切换主题 | 点击 🌙/☀️ 按钮 |
| 更新威胁库 | 点击 "🛡 更新" 按钮 |
| 退出程序 | 右键标题栏 → 退出 |
┌────────────────────────────────────────────┐
│ 📡 NetSentry - Designed by Fread.Z │
│ [更新] [⏱2s] [排序] [🌙] │
├────────────────────────────────────────────┤
│ 🔍 搜索进程名或PID... ✕ │
├────────────────────────────────────────────┤
│ ↑ 上传 ↓ 下载 活动进程 威胁库 │
│ 12 KB/s 45 KB/s 5 2026-03-24 │
├────────────────────────────────────────────┤
│ 🌐 chrome.exe [正常] [3] ▼ │
│ 📦 unknown.exe [低风险] [1] ▼ │
│ ⚙️ xmrig.exe [威胁] [2] ▼ │
└────────────────────────────────────────────┘
| 等级 | 颜色 | 说明 |
|---|---|---|
| 正常 | 🟢 绿色 | 已知安全进程 |
| 低风险 | 🟡 黄色 | 未知进程 |
| 中风险 | 🟠 橙色 | 可疑行为 |
| 高风险 | 🔴 红色 | 连接可疑端口 |
| 威胁 | 🟣 紫色 | 已知恶意软件/恶意IP |
| 判断项 | 数据来源 |
|---|---|
| 恶意IP | 在线拉取(约3万条) |
| 进程可信度 | 内置规则(高信任/低信任分级) |
| 端口风险 | 内置规则(危险/可疑/正常分级) |
| IP类型 | 实时判断(本地/内网/公网) |
| 优先级 | 来源 | URL |
|---|---|---|
| 1 | Emerging Threats | rules.emergingthreats.net/blocklists/... |
| 2 | FireHol Level1 | raw.githubusercontent.com/firehol/... |
| 3 | FireHol CDN镜像 | cdn.jsdelivr.net/gh/firehol/... |
| 4 | Blocklist.de | lists.blocklist.de/lists/all.txt |
点击"更新" → 按优先级尝试各源 → 解析IP列表 → 去重替换 → 保存到本地
注意:采用替换式更新,与远程源保持同步,防止本地文件无限膨胀。
- 拉取内容:恶意IP地址列表(约3万条)
- 更新频率:建议每周更新一次
- 数据来源:全球威胁情报社区
config/
├── threats/
│ └── threat_db.json # 威胁库
└── settings.json # 用户设置(自动生成)
{
"version": "2026-03-26",
"source": "FireHol Level1, Blocklist.de...",
"malicious_ips": ["1.2.3.4", ...], // 恶意IP列表
"process_trust": { // 进程可信度分级
"high": ["chrome.exe", "msedge.exe", ...], // 高信任进程
"low": ["xmrig.exe", "nc.exe", ...] // 低信任进程
},
"port_risk": { // 端口风险分级
"dangerous": [4444, 5555, ...], // 危险端口
"suspicious": [7897, 1080, ...], // 可疑端口
"normal": [80, 443, ...] // 正常端口
},
"suspicious_connections": { // 可疑连接类型
"tor_nodes": [9001, 9050, ...],
"miner_pools": [3333, 4444, ...]
}
}进程综合风险 = max(进程本身风险, 所有连接的最高风险)
判断因素:
- 进程可信度:高信任(正常) / 未知(低风险) / 低信任(高风险)
- IP类型:本地(正常) / 内网(需结合其他因素) / 公网(需结合其他因素)
- 端口风险:正常端口 / 可疑端口 / 危险端口
- 恶意IP:直接判定为威胁
点击 ⏱ 2s 按钮,可选择 0.5s ~ 5s 刷新间隔
点击 排序 按钮,可选择:
- 按连接数排序
- 按进程名排序
- 按PID排序
| 组件 | 技术 |
|---|---|
| UI框架 | PyQt6 |
| 网络监控 | psutil |
| 打包工具 | PyInstaller |
NetSentry/
├── main.py # 主入口
├── run.py # 启动脚本
├── build_exe.py # 打包脚本
├── pyproject.toml # 项目配置
├── core/
│ ├── monitor.py # 网络监控核心
│ └── threats/ # 威胁检测模块
├── ui/
│ ├── main_window.py # 主窗口
│ └── styles.py # 样式定义
├── utils/
│ ├── formatters.py # 格式化工具
│ └── geoip.py # 端口服务识别
└── config/
└── threats/ # 威胁库配置
- ✅ 更新 pyproject.toml,添加项目元数据
- ✅ 更新 README,细化安装和运行说明
- ✅ 添加 Linux 打包说明
- ✅ 修复 Windows 上拖动窗口导致程序闪退的问题
- ✅ 优化跨平台代码结构,确保 Windows 使用原有逻辑
- ✅ Linux 平台兼容性修复
- 使用系统级窗口移动/调整大小 API(解决 GNOME 下无法拖动窗口的问题)
- 主题切换按钮在 Linux 上显示文字而非 emoji(解决图标不显示的问题)
MIT License
Fread.Z © 2026