Skip to content

ngoviet/VmManager

🖥️ Antidetect Hyper-V Manager - Vokupt

Python PyQt6 License

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.


✨ Tính năng chính

📋 Quản lý Máy ảo Hyper-V

  • ✅ 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

🌐 Mạng & VLAN

  • ✅ 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

🛡️ Chống phát hiện (Anti-detect)

  • ✅ Spoofing thông tin phần cứng (MAC, Serial, UUID)
  • ✅ Random hóa computer name
  • ✅ Hỗ trợ Template Spark cho Chrome/Firefox

📸 Screenshots

┌─────────────────────────────────────────────────────────────────┐
│         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...]   ││                 │
└──────────────────────┴──────────────────────┴─────────────────┘

🖥️ Yêu cầu hệ thống

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

📦 Cài đặt

Phương thức 1: Development Mode

# 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

Phương thức 2: Sử dụng file BAT

# Chạy trực tiếp (tự động tìm Python)
.\Run_VM_Manager.bat

⚙️ Cấu hình

File config.json

{
  "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
  }
}

🔐 Bảo mật mật khẩu MikroTik

Ứ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

📖 Hướng dẫn sử dụng

1️⃣ Khởi động ứng dụng

.\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"

2️⃣ 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

3️⃣ Nhân bản máy ảo

  1. Chọn file Master VM VHDX
  2. Nhập tên/number range (ví dụ: 36-40 hoặc 36,37,38)
  3. (Tùy chọn) Nhập VLAN ID base
  4. (Tùy chọn) Nhập đường dẫn storage
  5. 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ộ

4️⃣ Quản lý máy ảo

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

5️⃣ Làm mới IP

Nhấn nút "Refresh IPs" để tải lại địa chỉ IP từ MikroTik.


🏗️ Kiến trúc project

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

Luồng dữ liệu

[Hyper-V] ──→ VMListWorker ──→ Table Display
                        ↓
[MikroTik] ──→ IP Lookup ──→ MAC Match ──→ Update IP Column

[User Input] ──→ CloneWorker ──→ Hyper-V Import ──→ Database ──→ Add to Table

🔧 API Reference (Quick Start)

HyperVController

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)

MikrotikController

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")

🐛 Troubleshooting

Không kết nối được MikroTik?

[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

IP không hiển thị?

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

VM không tạo được?

Giải pháp:

  • ✅ Kiểm tra file .vmcx tồ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


📝 License

Internal use - VMManager Project


👤 Tác giả

  • GitHub: ngoviet
  • Project: VmManager - Antidetect Hyper-V Manager

⭐ Nếu project hữu ích, hãy star repository!

📄 Documentation | 🐛 Troubleshooting | ⚙️ Configuration

About

Hyper-V VM Manager with anti-detection — PyQt6 GUI for cloning, managing, and hardware spoofing Windows VMs for bandwidth farming

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors