libguestfs

Описание libguestfs

libguestfs (libguestfs.org) — это набор инструментов для доступа и изменения образов дисков виртуальных машин (ВМ). Вы можете использовать его для просмотра и редактирования файлов внутри гостей, создания сценариев для изменений виртуальных машин, мониторинга статистики использования/свободного диска, создания гостей, P2V, V2V, выполнения резервного копирования, клонирования виртуальных машин, создания виртуальных машин, форматирования дисков, изменения размера дисков и многого другого.

libguestfs может получить доступ практически к любому образу диска, который только можно вообразить. Он может делать это безопасно — без необходимости root и с несколькими уровнями защиты от вредоносных образов дисков. Он может получить доступ к образам дисков на удалённых машинах или на компакт-дисках/USB-накопителях. Он может получить доступ к проприетарным системам, таким как VMware и Hyper-V.

Все эти функции доступны через оболочку с поддержкой сценариев под названием guestfish или интерактивную спасательную оболочку virt-rescue.

libguestfs — это библиотека C, которая может быть связана с программами управления C и C++ и имеет привязки примерно для десятка других языков программирования. Используя модуль FUSE, вы также можете монтировать гостевые файловые системы на хосте.

libguestfs — это способ создания, доступа и изменения образов дисков. Вы можете заглядывать внутрь образов дисков, изменять файлы, которые они содержат, создавать их с нуля, изменять их размер и многое другое. Это особенно полезно из сценариев и программ, а также из командной строки.

Домашняя страница: https://libguestfs.org/

Автор: Richard W.M. Jones, Red Hat Inc.

Лицензия: GPLv2

Справка по libguestfs

Данный пакет включает в себя большое количество утилит:

  • guestfs — главная документация по API
  • guestfish — интерактивный шелл
  • guestmount — монтирует файловую систему гостевой машины в основную
  • guestunmount — размонтирует гостевую файловую систему
  • virt-alignment-scan — проверить выравнивание разделов виртуальной машины
  • virt-builder — быстрый построитель образов
  • virt-builder-repository — создаёт репозитории virt-builder
  • virt-cat — показывает файл
  • virt-copy-in — копирует файлы и директории в виртуальную машину
  • virt-copy-out — копирует файлы и директории из виртуальной машины
  • virt-customize — настраивает виртуальные машины
  • virt-df — показывает свободное место на виртуальных дисках
  • virt-dib — безопасный diskimage-builder
  • virt-diff — показывает разницу между виртуальными дисками
  • virt-edit — редактирует файл
  • virt-filesystems — показывает информацию о файловых системах, устройствах, LVM
  • virt-format — стирает и делает пустые диски
  • virt-get-kernel — получает ядро с диска
  • virt-inspector — инспектирует образы виртуальных машин
  • virt-list-filesystems — выводит список файловых систем
  • virt-list-partitions — выводит список разделов дисков
  • virt-log — показывает файлы журналов
  • virt-ls — показывает список файлов
  • virt-make-fs — создаёт файловую систему
  • virt-p2v — конвертирует физическую машину для запуска на KVM
  • virt-p2v-make-disk — делает P2V ISO
  • virt-p2v-make-kickstart — делает P2V kickstart
  • virt-rescue — спасательный шелл
  • virt-resize — изменяет размер виртуальных машин
  • virt-sparsify — сделать виртуальные машины разреженными (с тонким предоставлением)
  • virt-sysprep — отключает виртуальную машину перед клонированием
  • virt-tail — показывает изменения в файле журнала
  • virt-tar — архивирует и выгружает файлы
  • virt-tar-in — архивирует и выгружает файлы
  • virt-tar-out — архивирует и загружает файлы
  • virt-v2v — конвертирует гостевую машину для запуска на KVM
  • virt-win-reg — экспортирует и объединяет ключи реестра Window
  • libguestfs-test-tool — тест libguestfs
  • libguestfs-make-fixed-appliance — сделать libguestfs фиксированным устройством
  • hivex — извлекает куст реестра Windows
  • hivexregedit — объединяет и экспортирует изменения в реестре из файлов в формате regedit
  • hivexsh — оболочка кустов реестра Windows
  • hivexml — конвертирует куст реестра Windows в XML
  • hivexget — извлекает данные из куста реестра Windows
  • supermin — инструмент для создания supermin. Это крошечные устройства (похожие на виртуальные машины), обычно размером около 100 КБ, которые полностью создаются на лету за доли секунды, когда вам нужно загрузить одно из них.
  • guestfsd — демон guestfs

Ключевыми являются программы:

  • guestmount — монтирует файловую систему гостевой машины в основную
  • guestunmount — размонтирует гостевую файловую систему

Программа guestfish (интерактивный шелл) требует глубокого изучения, но позволит вам работать с содержимым виртуальных дисков в интерактивном режиме, или писать скрипты для автоматической обработки последовательности действий.

Многие из перечисленных программ являются скриптами, автоматизирующими действия. То есть они выполняют монтирование образа виртуального диска, делают указанное действие и размонтируют.

Типичная команда монтирования виртуального диска:

guestmount -a '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА' -i --ro /ТОЧКА/МОНТИРОВАНИЯ

После опции -a нужно указать виртуальный диск для монтирования.

Рассмотрим ещё несколько опций:

Опция -i (--inspector) означает использовать код virt-inspector для проверки дисков в поисках операционной системы и монтирование файловых систем, как если бы они были смонтированы на реальной виртуальной машине.

Опция --live позволяет подключиться к работающей виртуальной машине, эта опция является экспериментальной.

Опция -r (--ro) добавляет устройство и монтирует всё только для чтения. Также запрещает запись и делает диск доступным только для чтения для FUSE. Это настоятельно рекомендуется, если вы не собираетесь редактировать гостевой диск. Если гость работает, а эта опция не указана, существует высокий риск повреждения диска в гостевой системе.

Опция -w (--rw) изменяет параметры -a, -d и -m, так что диски добавляются, а монтирование выполняется для чтения-записи.

Чтобы просмотреть справку по любой из перечисленных утилит, запустите её с ключом --help, например:

virt-ls --help

Руководство по libguestfs

Для каждой из перечисленных утилит имеется страница man с подробным описанием опций. Документация очень объёмная.

Примеры запуска libguestfs

Смонтируем диск виртуальной машины Windows Server 2019.vdi.

Создадим точку монтирования:

mkdir /tmp/guest

Монтируем диск /mnt/disk_d/Виртуальные машины/Windows Server 2019.vdi в папку /tmp/guest:

guestmount -a '/mnt/disk_d/Виртуальные машины/Windows Server 2019.vdi' -i --ro /tmp/guest

Смотрим содержимое смонтированного диска:

ls -l /tmp/guest

Теперь посмотрим содержимое папки C:/Users/Администратор/Downloads/:

ls -l /tmp/guest/Users/Администратор/Downloads/

Для размонтирования используется команда вида:

guestunmount /ТОЧКА/МОНТИРОВАНИЯ

Например:

guestunmount /tmp/guest

Извлечение кустов реестра Windows

С помощью virt-win-reg можно извлекать кусты реестра Windows, в том числе те, которые доступны только для учётной записи System.

Общий вид команды:

virt-win-reg '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА' 'ИМЯ\КУСТА'

По умолчанию содержимое будет выведено на экран, поэтому для сохранения данных в файл нужно воспользоваться перенаправлением вывода.

Например, команда для извлечения куста HKEY_LOCAL_MACHINE\SYSTEM из операционной системы Windows, чей виртуальный диск расположен в /mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi и сохранение полученных данных в файл SYSTEM.reg:

virt-win-reg '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi' 'HKEY_LOCAL_MACHINE\SYSTEM' > SYSTEM.reg

Ещё один пример, извлечение куста реестра HKEY_LOCAL_MACHINE\SAM из образа диска /mnt/disk_d/Виртуальные машины/Windows Server 2019.vdi и сохранение данных в файл SAM.reg:

virt-win-reg '/mnt/disk_d/Виртуальные машины/Windows Server 2019.vdi' 'HKEY_LOCAL_MACHINE\SAM' > SAM.reg

Смотрите также «Анализ реестра Windows».

Просмотр свободного места

Программа virt-df покажет разделы дисков и количество свободного места на них.

Общий вид команды:

virt-df '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА'

Пример команды:

virt-df '/mnt/disk_d/Виртуальные машины/Linux LMDE.vdi'

Пример вывода для ОС Linux:

Файловая система     Блоки 1К Использовано Доступно Использование, %
Linux LMDE.vdi:/dev/sda1                292272       5220     287052    2%
Linux LMDE.vdi:/dev/sda3              96241020    6280016   85029116    7%

Ещё один пример команды:

virt-df '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi'

Пример вывода для ОС Windows:

Файловая система     Блоки 1К Использовано Доступно Использование, %
Windows 10 (en).vdi:/dev/sda1           541692     436548     105144   81%
Windows 10 (en).vdi:/dev/sda2            97280      27139      70141   28%
Windows 10 (en).vdi:/dev/sda4        156624892   26634932  129989960   18% 

Обратите внимание, что разделы в Windows названы по аналогии с разделами Linux.

Анализ виртуальных дисков

Команда virt-inspector проведёт анализ файловых систем и покажет установленные программы, а также некоторую другую информацию об операционных системах.

Общий вид команды:

virt-inspector -a '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА'

Примеры команд:

virt-inspector -a '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi'
virt-inspector -a '/mnt/disk_d/Виртуальные машины/Linux LMDE.vdi'

Вывод списка файлов

Вы можете посмотреть содержимое любой папки на виртуальном диске с помощью virt-ls.

Общий вид команды:

virt-ls -a '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА' '/ПАПКА'

Обратите внимание, что даже в Windows путь начинается с / (обозначение корневой папки).

Следующая команда покажет содержимое корня диска C: для виртуального диска /mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi:

virt-ls -a '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi' '/'

Пример вывода:

$Recycle.Bin
$WinREAgent
Documents and Settings
DumpStack.log.tmp
PerfLogs
Program Files
Program Files (x86)
ProgramData
Recovery
System Volume Information
Users
Windows
pagefile.sys
swapfile.sys

Просмотр содержимого файла

Программа virt-cat покажет содержимое любого файла. Файл будет выведен прямо на экран (в стандартный вывод), поэтому если это бинарный файл, то используйте перенаправление вывода для его сохранения.

Общий вид команды:

virt-cat -a '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА' '/ПАПКА/ФАЙЛ'

Обратите внимание, что даже в Windows путь начинается с / (обозначение корневой папки).

Следующая команда покажет содержимое файла C:\DumpStack.log.tmp из виртуального диска /mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi:

virt-cat -a '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi' '/DumpStack.log.tmp'

Просмотр разделов дисков

Программа virt-filesystems просто покажет количество разделов дисков и их номера.

Общий вид команды:

virt-filesystems -a '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА'

Пример команды и вывода для Windows:

virt-filesystems -a '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi'
/dev/sda1
/dev/sda2
/dev/sda4

Пример команды и вывода для Linux:

virt-filesystems -a '/mnt/disk_d/Виртуальные машины/Linux LMDE.vdi' 
/dev/sda1
/dev/sda3

Установка libguestfs

Установка в Kali Linux

sudo apt install libguestfs-tools

Установка в BlackArch

sudo pacman -S libguestfs

Установка в Debian, Linux Minut, Ubuntu

sudo apt install libguestfs-tools

Установка в Arch Linux, Manjaro

sudo pacman -S libguestfs

Информация об установке в другие операционные системы будет добавлена позже.

Скриншоты libguestfs

Инструкции по libguestfs

Близкие программы:

  • RegRippy (100%)
  • RegRipper (100%)
  • Registry Explorer (100%)
  • creddump (100%)
  • regipy (100%)
  • Bro (RANDOM - 55.7%)
  • Рекомендуется Вам:

    Comments are Closed