[packaging] kvm-fpr KVM 虚拟机硬件指纹刷新工具 (防检测)
Tofloor
poster avatar
深圳市耀影科技有限公司
deepin
2026-10-06 22:02
Author

KVM 虚拟机硬件指纹刷新工具KVM 虚拟机硬件指纹刷新工具

总是敲命令挺烦的,于是生产了这么个玩意有需要的拿去玩。

初步成型,后期慢慢更新

在deepin v25.2.2中构建的,其它系统没测试

源码主页:https://github.com/yaoyingkeji/kvm-fpr

开源协议:GPL-3.0

主页:www.yaoying.vip

截图_选择区域_20261007001652.png

kvm-fpr — KVM 虚拟机硬件指纹刷新工具

一个基于 C 语言 + NAppGUI 开源图形库 的图形化工具,用于刷新现有 KVM 虚拟机的
硬件指纹与机器码:为虚拟机生成全新的 UUID、网卡 MAC 地址、SMBIOS 序列号,
并可选重置 guest 内部 machine-id(机器码),让虚拟机以"全新机器"的身份呈现给系统和应用。

纯开源实现:GUI 使用 NAppGUI(MIT License,与 GPLv3 兼容),本项目源码以 GPLv3 发布,
后端调用系统 libvirt/virsh,无任何闭源组件,无法律风险。

主界面

✨ 功能特性

功能 说明
虚拟机列表 一键列出本机 libvirt 管理的全部 KVM 虚拟机
刷新硬件指纹 生成全新 UUID、所有网卡 MAC、SMBIOS 序列号/系统 UUID
智能关机 运行中的虚拟机可选择优雅关机(virsh shutdown)或强制关机(virsh destroy)
机器码重置 可选重置 guest 内部 /etc/machine-id 等机器码(需 virt-customize)
自动备份 刷新前自动备份原始 XML 到 ~/kvm-fpr-backups/,可随时恢复
保留自启 自动保留并恢复虚拟机的开机自启设置
UEFI 支持 含 UEFI nvram 的虚拟机自动重建 nvram

📦 下载安装

提供 三种 GUI 实现,功能一致(见 Releases):

版本 特点 安装包
NAppGUI 版 单文件、体积最小 kvm-fpr_1.0.1_amd64.deb / kvm-fpr-1.0.1-x86_64.AppImage
GTK3 版 依赖系统 GTK3 kvm-fpr-gtk_1.0.1_amd64.deb / kvm-fpr-gtk-1.0.1-x86_64.AppImage
Qt5 版 依赖系统 Qt5 kvm-fpr-qt_1.0.1_amd64.deb / kvm-fpr-qt-1.0.1-x86_64.AppImage

Debian / Deepin / Ubuntu(.deb)

sudo dpkg -i kvm-fpr_1.0.1_amd64.deb        # NAppGUI 版
sudo dpkg -i kvm-fpr-gtk_1.0.1_amd64.deb    # GTK3 版
sudo dpkg -i kvm-fpr-qt_1.0.1_amd64.deb     # Qt5 版

任意发行版(.AppImage)

chmod +x kvm-fpr-1.0.1-x86_64.AppImage      # NAppGUI 版
./kvm-fpr-1.0.1-x86_64.AppImage
chmod +x kvm-fpr-gtk-1.0.1-x86_64.AppImage  # GTK3 版
./kvm-fpr-gtk-1.0.1-x86_64.AppImage
chmod +x kvm-fpr-qt-1.0.1-x86_64.AppImage   # Qt5 版
./kvm-fpr-qt-1.0.1-x86_64.AppImage

🚀 快速开始

  1. 打开程序,点击 「刷新列表」 加载虚拟机;
  2. 在下拉框中选择要刷新的虚拟机;
  3. 输入 sudo 密码(root 用户可留空;程序需要 root 权限执行 virsh define);
  4. (可选)勾选 「重置 guest 内部 machine-id」;
  5. 点击 「刷新硬件指纹 / 机器码」;
  6. 日志区显示新旧 UUID / MAC 对比及备份路径,即刷新完成。

⚠️ 刷新过程会短暂 关闭虚拟机(自动或强制),请提前保存 guest 内的工作。

📚 文档

🛠 从源码构建

详见 技术说明 · 构建与打包。本项目提供三个 GUI 实现,共用同一后端:

./build.sh          # NAppGUI 版:编译、生成 .deb 与 .AppImage
gtk/build_gtk.sh    # GTK3 版:编译 kvm-fpr-gtk
qt/build_qt.sh      # Qt5 版:编译 kvm-fpr-qt

📄 许可证

本项目源码采用 GNU GPLv3 协议发布(SPDX: GPL-3.0-or-later)。
GUI 库 NAppGUI 为 MIT 许可(与 GPLv3 兼容),
可放心用于商业与个人项目。

作者信息

  • 作者:彭刚要
  • 邮箱:pgy866@163.com | yaoying@yaoying.vip
  • 主页:www.yaoying.vip
Reply Favorite View the author
All Replies
avatar
𰻞𰻝面
deepin
2026-10-07 00:07
#1

实体机都能改,别说虚拟机了

Reply View the author
avatar
深圳市耀影科技有限公司
deepin
2026-10-07 00:18
#2

https://github.com/yaoyingkeji/kvm-fpr/releases/tag/v1.1.0

✨ v1.1.0 新功能

  • 指纹全项显示:表格显示全部可定义硬件指纹(缺失显示"无",可手动填写注入)
  • 品牌伪装模板:联想/戴尔/惠普/华硕/宏碁/小米 + 用户自定义模板
  • 防虚拟机检测:隐藏 KVM 标志、隐藏 hypervisor CPU 标志、禁用 vmport、HyperV 厂商 ID
  • 备份历史:查看该虚拟机全部历史备份,一键恢复 / 删除
  • 查看文件:直接打开 XML 配置编辑查看并保存应用
  • 三版本(NAppGUI / GTK3 / Qt5)功能一致

安装包(三种 GUI 实现)

版本 .deb .AppImage
NAppGUI 版 kvm-fpr_1.1.0_amd64.deb kvm-fpr-1.1.0-x86_64.AppImage
GTK3 版 kvm-fpr-gtk_1.1.0_amd64.deb kvm-fpr-gtk-1.1.0-x86_64.AppImage
Qt5 版 kvm-fpr-qt_1.1.0_amd64.deb kvm-fpr-qt-1.1.0-x86_64.AppImage

技术

  • 协议:GPLv3(GPL-3.0-or-later)
  • 后端:fpr_get_items 全项显示 / fpr_apply_items_ext(防检测)/ fpr_apply_xml / 备份恢复

文档

Reply View the author
avatar
深圳市耀影科技有限公司
deepin
2026-10-07 00:20
#3
𰻞𰻝面:

实体机都能改,别说虚拟机了

😂 没必要去弄实体机,弄虚拟机就行了,这是給懒得敲命令的人用的

Reply View the author
avatar
深圳市耀影科技有限公司
deepin
2026-10-07 12:44
#4

图片.png

✨ v1.1.1 更新

  • GTK4 / Qt6 双引擎升级:支持 X11/Wayland,适配 Deepin 25 (V25.2.2)
  • 主题系统:跟随系统亮暗 + 内置皮肤(星云蓝/暗夜黑/青翠绿/樱粉/晨曦金)+ 用户自建(~/.config/kvm-fpr/themes.conf)
  • 统一色板精校:对比度 ≥4.5:1,参考 Deepin DDE,修复 GTK 按钮/下拉白底白字问题
  • 科技感 UI:三版统一布局(菜单栏/品牌栏/圆角控件/渐变按钮)
  • 查看文件:调用系统文本编辑器编辑 XML(xdg-open)
  • Qt6 版 LGPLv3 动态链接,合规无侵权风险

安装包(三种 GUI 实现)

版本 .deb .AppImage
NAppGUI 版 kvm-fpr_1.1.1_amd64.deb kvm-fpr-1.1.1-x86_64.AppImage
GTK4 版 kvm-fpr-gtk_1.1.1_amd64.deb kvm-fpr-gtk-1.1.1-x86_64.AppImage
Qt6 版 kvm-fpr-qt_1.1.1_amd64.deb kvm-fpr-qt-1.1.1-x86_64.AppImage

功能

  • 指纹全项显示(缺失显示"无",可手动填写注入)
  • 品牌伪装模板(联想/戴尔/惠普/华硕/宏碁/小米 + 自定义)
  • 防虚拟机检测(隐藏 KVM/hypervisor、vmport、HyperV 厂商 ID)
  • 备份历史(查看/恢复/删除)
  • 查看文件(系统编辑器编辑 XML)

技术

  • 协议:GPLv3(GPL-3.0-or-later)

文档

Reply View the author