Quản lý máy ảo Hyper-V với tính năng chống phát hiện, tích hợp MikroTik DHCP server.
- ✅ Hiển thị danh sách tất cả VMs từ Hyper-V
- ✅ Khởi động, tắt, xóa máy ảo hàng loạt
- ✅ Nhân bản máy ảo từ template VHDX
- ✅ Hỗ trợ cả Gen 1 (BIOS) và Gen 2 (UEFI)
- ✅ Hiển thị đường dẫn tuyệt đối với forward slashes
- ✅ Kết nối MikroTik RouterOS để lấy IP DHCP
- ✅ Normalization MAC address tự động (XX:XX:XX:XX:XX:XX)
- ✅ Cấu hình VLAN cho từng VM riêng biệt
- ✅ Hiển thị trạng thái Online/Offline real-time
- ✅ Spoofing thông tin phần cứng (MAC, Serial, UUID)
- ✅ Random hóa computer name
- ✅ Hỗ trợ Template Spark cho Chrome/Firefox
┌─────────────────────────────────────────────────────────────────┐
│ Antidetect Hyper-V Manager - Vokupt │
├──────────────────────┬──────────────────────┬─────────────────┤
│ Danh sách VMs │ Cấu hình VM │ Console Log │
│ ┌────┬──┬──────────┬││ Base VHDX: ││ [INFO] Loading..│
│ │ ☑ │ 1│ 37 │││ [D:\VMs\Base.vhdx││ [OK] Loaded 5 │
│ ├────┼──┼──────────┤││ [Browse...] ││ [INFO] Connect..│
│ │ ☐ │ 2│ 38 │││ ││ [OK] MikroTik..│
│ │ ☑ │ 3│ 39 │││ VLAN ID: 236 ││ │
│ └────┴──┴──────────┘││ Storage: E:\Farm ││ │
│ ││ [Browse...] ││ │
│ Trạng thái: Ready ││ [Tạo máy ảo...] ││ │
└──────────────────────┴──────────────────────┴─────────────────┘
| Thành phần | Yêu cầu | Ghi chú |
|---|---|---|
| Hệ điều hành | Windows 10/11 Pro/Enterprise | Bắt buộc |
| Hyper-V | Đã bật Hyper-V Role | Get-VM phải hoạt động |
| Python | 3.9 trở lên | Để chạy development mode |
| RAM | 8GB tối thiểu | 16GB khuyến nghị |
| MikroTik | RouterOS + DHCP + API | Tùy chọn, nếu cần lấy IP |
# Clone repository
git clone https://github.com/ngoviet/VmManager.git
cd VmManager
# Tạo virtual environment
python -m venv venv
venv\Scripts\activate
# Cài đặt dependencies
pip install -r requirements.txt
# Chạy ứng dụng
.\Run_VM_Manager.ps1# Chạy trực tiếp (tự động tìm Python)
.\Run_VM_Manager.bat{
"hypervisor": "hyperv",
"base_vhdx": "D:\\VMs\\BaseVM\\Virtual Hard Disks\\2.vhdx",
"vm_storage_path": "E:\\Farm",
"mikrotik": {
"enabled": true,
"host": "192.168.88.1",
"port": 8511,
"username": "admin",
"password_env": "MIKROTIK_PASSWORD",
"use_api": true
},
"vlan": {
"enabled": true,
"base_id": 236,
"auto_assign": true
}
}Ứng dụng hỗ trợ 3 phương thức lấy mật khẩu (theo ưu tiên bảo mật):
| Thứ tự | Phương thức | Mức độ an toàn | Ghi chú |
|---|---|---|---|
| 1️⃣ | Environment Variable | ⭐⭐⭐⭐⭐ Cao nhất | $env:MIKROTIK_PASSWORD |
| 2️⃣ | File mk_password.txt |
⭐⭐⭐⭐ Tốt | Đặt trong thư mục project |
| 3️⃣ | Direct Config | ⭐ Thấp nhất | Chỉ dùng khi develop |
.\Run_VM_Manager.ps1Ứng dụng sẽ tự động:
- Load danh sách VMs từ Hyper-V (lazy loading)
- Kết nối MikroTik (nếu có cấu hình)
- Hiển thị bảng "Danh sách VMs"
| Cột | Mô tả | Ghi chú |
|---|---|---|
| Check | Checkbox chọn VM | Chọn để boot/shutdown/delete |
| ID | Số thứ tự | Tự động tăng |
| Tên VM | Tên máy ảo | Từ Hyper-V |
| Đường dẫn | Đường dẫn tuyệt đối | Format: E:/Farm/37 |
| Trạng thái | Online/Offline | 🟢 Online / 🔴 Offline |
| IP | Địa chỉ IP từ MikroTik | Tự động lookup theo MAC |
- Chọn file Master VM VHDX
- Nhập tên/number range (ví dụ:
36-40hoặc36,37,38) - (Tùy chọn) Nhập VLAN ID base
- (Tùy chọn) Nhập đường dẫn storage
- Nhấn "Tạo máy ảo..."
Quy trình tự động:
- ✅ Kiểm tra VM đã tồn tại chưa → Skip nếu có
- ✅ Import VM từ template với ID mới
- ✅ Cấu hình Network Switch và VLAN
- ✅ Lưu vào database
- ✅ Thêm vào bảng mà không reload toàn bộ
| Thao tác | Cách thực hiện | Ghi chú |
|---|---|---|
| Boot | Chọn VM(s) → Nhấn "Boot" | Khởi động VM |
| Shutdown | Chọn VM(s) → Nhấn "Shutdown" | Tắt mạnh (force) |
| Delete | Chọn VM(s) → Nhấn "Delete" | Xóa cả folder |
Nhấn nút "Refresh IPs" để tải lại địa chỉ IP từ MikroTik.
VmManager/
├── README.md # File này
├── DOCUMENTATION.md # Tài liệu chi tiết
├── TROUBLESHOOTING.md # Hướng dẫn khắc phục lỗi
├── config.json # Cấu hình
├── mk_password.txt # Mật khẩu MikroTik (tùy chọn)
├── requirements.txt # Dependencies
├── Run_VM_Manager.ps1 # Launcher PowerShell
├── Run_VM_Manager.bat # Launcher Batch
│
├── app/
│ ├── main.py # Entry point, UI chính
│ ├── clone_worker.py # Background worker - Clone VM
│ ├── vm_action_worker.py # Background worker - Boot/Shutdown/Delete
│ ├── vm_list_worker.py # Background worker - Load VM List
│ ├── icon.ico # Icon ứng dụng
│ ├── icon.png # Icon PNG
│ │
│ ├── core/
│ │ ├── hyperv.py # Hyper-V PowerShell controller
│ │ ├── hyperv_spoofer.py # Anti-detect spoofing
│ │ ├── mikrotik.py # MikroTik RouterOS API
│ │ ├── database.py # SQLite database
│ │ └── spoofer.py # Generic spoofing utilities
│ │
│ └── utils/
│ └── admin_helper.py # Admin privilege checker
│
└── data/
└── vm_data.db # SQLite database
[Hyper-V] ──→ VMListWorker ──→ Table Display
↓
[MikroTik] ──→ IP Lookup ──→ MAC Match ──→ Update IP Column
[User Input] ──→ CloneWorker ──→ Hyper-V Import ──→ Database ──→ Add to Table
from app.core.hyperv import HyperVController
controller = HyperVController()
# List all VMs
vms = controller.list_vms()
# Get MAC addresses
mac = controller.get_vm_mac_address("VM1")
all_macs = controller.get_all_vm_mac_addresses()
# VM operations
controller.start_vm("VM1")
controller.stop_vm("VM1", force=True)from app.core.mikrotik import MikrotikController
mikrotik = MikrotikController(
host="192.168.88.1",
username="admin",
password="password",
port=8511,
use_api=True
)
# Connection & lookup
mikrotik.ping()
leases = mikrotik.get_leases()
ip = mikrotik.get_ip_by_mac("AA:BB:CC:DD:EE:FF")[ERROR] MikroTik connection failed!
Giải pháp:
- ✅ Kiểm tra file
mk_password.txt - ✅ Set environment variable:
$env:MIKROTIK_PASSWORD = "your_password" - ✅ Enable MikroTik API:
/api service enable - ✅ Kiểm tra firewall port 8511
Giải pháp:
- ✅ Nhấn nút "Refresh IPs"
- ✅ Kiểm tra DHCP server đang chạy
- ✅ MAC address phải khớp format uppercase
Giải pháp:
- ✅ Kiểm tra file
.vmcxtồn tại trong thư mục template - ✅ Cấu trúc thư mục đúng:
E:/Farm/BaseVM/ ├── Virtual Machines/{guid}.vmcx ← Bắt buộc └── Virtual Hard Disks/2.vhdx
📖 Xem thêm: TROUBLESHOOTING.md - Hướng dẫn chi tiết khắc phục lỗi
Internal use - VMManager Project
- GitHub: ngoviet
- Project: VmManager - Antidetect Hyper-V Manager
⭐ Nếu project hữu ích, hãy star repository!