Skip to content

ngoviet/VmManager

Repository files navigation

🖥️ 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

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors