Skip to content

Latest commit

 

History

History
294 lines (222 loc) · 7.86 KB

DOCUMENTATION.md

File metadata and controls

294 lines (222 loc) · 7.86 KB

Antidetect Hyper-V Manager - Vokupt

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.

📋 Mục lục

✨ Tính năng

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

  • Hiển thị danh sách tất cả VMs đang chạy trên 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)
  • Đường dẫn tuyệt đối với định dạng forward slashes

Mạng & VLAN

  • Cấu hình VLAN cho từng VM riêng biệt
  • Kết nối MikroTik RouterOS để lấy IP DHCP
  • Normalization MAC address tự động (XX:XX:XX:XX:XX:XX)
  • Hiển thị trạng thái Online/Offline

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

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

  • Hệ điều hành: Windows 10/11 Pro/Enterprise
  • Hyper-V: Phải bật Hyper-V Role
  • Python: 3.9 trở lên (để chạy development mode)
  • MikroTik: RouterOS với DHCP server và API enabled (tùy chọn)

📦 Cài đặt

Chế độ Development

# Clone repository
git clone <repository-url>
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
python Run_VM_Manager.ps1

Chế độ Portable (EXE)

# Build EXE
.\build_exe.bat

# Hoặc sử dụng script PowerShell
.\create_launcher_exe.ps1

⚙️ 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):

  1. Environment Variable (An toàn nhất)

    $env:MIKROTIK_PASSWORD = "your_password"
  2. File mk_password.txt

    • Đặt trong thư mục gốc project hoặc APPDATA\VMManager\
    • Chứa mật khẩu trên dòng đầu tiên
  3. Direct Config (Không an toàn, chỉ dùng khi develop)

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

1. Khởi động ứng dụng

Chạy Run_VM_Manager.ps1 hoặc file EXE đã build.

Ứng dụng sẽ:

  • Load danh sách VMs từ Hyper-V
  • Kết nối MikroTik (nếu có cấu hình)
  • Hiển thị bảng "Danh sách VMs" với thông tin:
    • Check: Checkbox để chọn VMs
    • ID: Số thứ tự
    • Tên VM: Tên máy ảo
    • Đường dẫn: Đường dẫn tuyệt đối đến thư mục VM
    • Trạng thái: Online (xanh) / Offline (đỏ)
    • IP: Địa chỉ IP từ MikroTik

2. 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:

  • Kiểm tra VM đã tồn tại chưa
  • 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ộ

3. Quản lý máy ảo

  • Boot: Chọn VM(s) → Nhấn "Boot"
  • Shutdown: Chọn VM(s) → Nhấn "Shutdown"
  • Delete: Chọn VM(s) → Nhấn "Delete" (xóa cả folder)

4. Làm mới IP

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

🏗️ Kiến trúc

VmManager/
├── app/
│   ├── main.py                  # Entry point, UI main window
│   ├── clone_worker.py          # Background worker cho VM cloning
│   ├── vm_action_worker.py      # Background worker cho boot/shutdown/delete
│   ├── vm_list_worker.py        # Background worker cho VM list loading
│   ├── core/
│   │   ├── hyperv.py            # Hyper-V PowerShell controller
│   │   ├── hyperv_spoofer.py    # Anti-detect spoofing cho Hyper-V
│   │   ├── mikrotik.py          # MikroTik RouterOS API controller
│   │   ├── database.py          # SQLite database wrapper
│   │   └── spoofer.py           # Generic spoofing utilities
│   └── utils/
│       └── admin_helper.py      # Admin privilege checker
├── data/
│   └── vm_data.db              # SQLite database
├── config.json                  # Configuration file
├── mk_password.txt              # MikroTik password (tùy chọn)
├── requirements.txt             # Python dependencies
└── DOCUMENTATION.md            # Tài liệu này

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

HyperVController

from core.hyperv import HyperVController

controller = HyperVController()

# List all VMs
vms = controller.list_vms()  # List[dict]

# Get MAC addresses
mac = controller.get_vm_mac_address("VM1")  # Optional[str]
all_macs = controller.get_all_vm_mac_addresses()  # dict

# VM operations
controller.start_vm("VM1")
controller.stop_vm("VM1", force=True)
controller.remove_vm("VM1", delete_vhdx=False)

MikrotikController

from core.mikrotik import MikrotikController

mikrotik = MikrotikController(
    host="192.168.88.1",
    username="admin",
    password="password",
    port=8511,
    use_api=True
)

# Connection
mikrotik.ping()  # bool
leases = mikrotik.get_leases()  # List[dict]

# IP lookup
ip = mikrotik.get_ip_by_mac("AA:BB:CC:DD:EE:FF")  # Optional[str]

# Lease management
mikrotik.add_static_lease("AA:BB:CC:DD:EE:FF", "192.168.1.100")
mikrotik.remove_static_lease("AA:BB:CC:DD:EE:FF")

Database

from core.database import Database

db = Database("data/vm_data.db")

# CRUD
db.add_vm("VM1", "E:/Farm/VM1", profile={}, vlan_id=236)
vms = db.get_all_vms()  # List[dict]
db.delete_vm_by_name("VM1")

🐛 Troubleshooting

App không khởi động

Vấn đề: App crash khi mở Giải pháp:

  • Chạy PowerShell với Admin
  • Kiểm tra Hyper-V đã bật chưa: Get-VM
  • Xem log trong console

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

Vấn đề: Lỗi "MikroTik connection failed" Giải pháp:

  • Kiểm tra file mk_password.txt
  • Verify environment variable MIKROTIK_PASSWORD
  • Đảm bảo MikroTik API enabled: /api ip service enable port=8511
  • User cần permission /rest read

IP không hiển thị

Vấn đề: Cột IP hiển thị "-" Giải pháp:

  • Kiểm tra MikroTik connection
  • Đảm bảo DHCP server đang chạy
  • MAC address phải khớp (uppercase, format XX:XX:XX:XX:XX:XX)

VM không tạo được

Vấn đề: Lỗi "Base VM folder not found" Giải pháp:

  • Kiểm tra đường dẫn VHDX trong config
  • VHDX path sẽ tự động chuyển thành VM folder path
  • Đảm bảo file .vmcx tồn tại trong thư mục

Đường dẫn bị lặp

Vấn đề: Path hiển thị E:/Farm/37/37 thay vì E:/Farm/37 Giải pháp:

  • Đã được sửa trong code
  • Nếu vẫn gặp, kiểm tra vm_path_input không trùng với VM name

📝 License

Internal use - VMManager Project