domingo, 12 de mayo de 2013

Extraer la BIOS Rom de un VMware ESXi 4 / 5 y Editar la tabla DMI

A continuación explicare como extraer el BIOS rom de VMware y luego editar la tabla DMI a fin de cambiar los string de System Manufacture, System Product Name y System Serial Number, luego con el BIOS modificado explicare como hacer para que una Virtual Machine arranque con nuestro custom BIOS rom.

Antes de proceder con los pasos voy a explicar porque he llegado a realizar  mi custom BIOS aunque seguro ya imaginaran el porque y de su utilidad.

En mi caso he buscado modificar los strings mencionados de la BIOS ya que necesitaba realizar una maqueta con un producto de la marca Juniper y las licencias de prueba limitaban al producto para solo uno días de uso y en otros casos la licencia de prueba habilitaba solo algunos features con lo cual me limitaba para poder realizar mis labs.

Es el caso de Juniper como de otras muchas marcas la manera que tienen sus productos de validar una licencia es macheando contra el System Serial Number que suele ser el Sserial Number del Producto, así que si tienes la licencia mas el numero de serie del producto con esta molificación ya sea en la rom de una VM o la rom propia de una caja podrás tener n cantidad de productos full para jugar.

Estas modificaciones fueron probadas en los productos: STRM, IC, SA Juniper, tomando los valores de cajas físicas y pasando los mismos a la rom de una VM para los productos en formato Virtual, y he podido comprobar que los BIOS Rom de ESXi 4 son compatibles con ESXi 5 y las versiones de VMware Workstation.

Nota: Nadie pierda el tiempo en pedirme o intentar comprarme licencias y serials ya que no respondere a tal solicitud por mas gustosa que sea la oferta.


Se requiere:

Una PC con Linux.
Phoenix BIOS Editor Pro v2.2.1.3.tgz (6.5 MB) o mas reciente
Una PC o VM con Windows para instalar el BIOS Editor


Pasos:

Para revisar la tabla DMI del BIOS de nuestra PC o de cualquier otra podemos usar el comando de linux dmidecode.


# dmidecode | more
# dmidecode 2.7
SMBIOS 2.51 present.
34 structures occupying 1064 bytes.
Table at 0xE7EEA000.

Handle 0x0000, DMI type 0, 24 bytes.
BIOS Information
Vendor: Phoenix Technologies LTD
Version: 1.13
Release Date: 10/06/2008
Address: 0xE6B70
Runtime Size: 103568 bytes
ROM Size: 1024 kB
Characteristics:
ISA is supported
PCI is supported
PNP is supported
BIOS is upgradeable
BIOS shadowing is allowed
ESCD support is available
Boot from CD is supported
Selectable boot is supported
EDD is supported
3.5"/2.88 MB floppy services are supported (int 13h)
ACPI is supported
USB legacy is supported
LS-120 boot is supported
ATAPI Zip drive boot is supported
BIOS boot specification is supported

Handle 0x0001, DMI type 1, 27 bytes.
System Information
Manufacturer: Juniper Networks
Product Name: STRM 2500
Version: 1.0
Serial Number: 025006201000····
UUID: 80491C00-AD90-DF11-9F77-FD4FFE01····
Wake-up Type: Power Switch
SKU Number: Not Specified
Family: Not Specified

Handle 0x0002, DMI type 2, 8 bytes.
Base Board Information
Manufacturer: Supermicro
Product Name: PDSMP-JN1
Version: PCB Version
--More--

  1. Tomamos nota de la sección System Information:

    Manufacturer: Juniper Networks
    Product Name: STRM 2500
    Version: 1.0
    Serial Number: 025006201000····
    UUID: 80491C00-AD90-DF11-9F77-FD4FFE01····
  2. Pasos para extraer el BIOS Rom de VMware:
     
    En un ESXi 4 el archivo que debemos buscar es s.z y en ESXi 5 es s.v00
    Copiar el archivo a nuestra maquina por scp el archivo s.v00 que se encuentra en /bootbank (ESXi5):

    mkdir -p ~/tmp/BIOS

    scp root@172.16.1.10:/bootbank/s.v00 ~/tmp/BIOS

    Descomprimir el archivo s.v00

    cd ~/tmp/BIOS

    file s.v00

    tar xfv s.v00




    Para chequear si se encuentra el bios440 en versiones de ESXi 4 debemos buscar el archivo vmx y para ESXi 5 el archivo se llama vmware-vmx

    objdump --headers vmware-vmx | grep -i 440


    Extraer el bios440

    objcopy vmware-vmx --output-target=binary --only-section=bios440 --set-section-flags bios440=alloc bios440.rom.zl


    Descomprimir el .zl

    perl -e 'use Compress::Zlib; my $v; read STDIN, $v, '$(stat -c%s "./bios440.rom.zl")'; $v = uncompress($v); print $v;' < bios440.rom.zl > bios440.rom

  3. Ahora que tenemos el archivo bios440.rom vamos a editarlo con el Phoenix BIOS Editor

    Abrir el Phoenix BIOS Editor
    Abrir el bios440.rom e ir a la tabla DMI



    Modificar los strings: System Manufacture, System Product Name y System Serial Number, UUID.
    Luego de realizar los cambios hacer clic en File y Build BIOS... para guardar nuestro custom BIOS.


  4. Para indicar a la VM que arranque con el BIOS custom hay que copiar nuestro BIOS rom por scp al ESXi junto al archivo .vmx de la VM que busquemos customizar.

    Editar con el vi el .vmx de la VM elegida y agregar las siguientes lineas:

    bios440.fileName = "BIOS440_STRM_JUNIPER.ROM"
    isolation.tools.PatchSMBIOS.disable = "TRUE"
    isolation.tools.getUUId.disable = "TRUE"
  5. Para los que quieran un bios440 rom sin modificar les dejo un link:

    bios440.rom ESXi5.tgz (207 KB)
    bios440.rom ESXi4.tgz (207 KB)

    Nota: Para los que quiera hacer un backup de su BIOS pueden usar la tool flashrom
    # flashrom -r BkpBios.rom
    # flashrom -wv UpdateBios.rom
Saludos!

Hernan

No hay comentarios:

Publicar un comentario