- Cabextract permite listar, probar, extraer y reparar archivos CAB de Microsoft en sistemas tipo UNIX.
- Es esencial para que Wine, Lutris y winetricks manejen instaladores de Windows que dependen de ficheros .cab.
- Con cabextract se pueden obtener fuentes y recursos de instaladores de Office y PowerPoint para usarlos en Linux.
- lcab complementa a cabextract permitiendo crear archivos CAB desde Linux para distribuir datos a Windows.

Si trabajas con archivos de instalación de Windows desde Linux, tarde o temprano te toparás con los famosos ficheros .CAB (Microsoft Cabinet). Aunque en el ecosistema GNU/Linux no son tan habituales como los .tar.gz o .zip, siguen estando por todas partes en instaladores de programas, controladores y parches de Microsoft. Por suerte, contamos con herramientas en modo texto que permiten manipularlos con bastante soltura.
En este artículo vamos a profundizar en cabextract y lcab, dos utilidades pensadas para tratar archivos CAB en sistemas tipo UNIX. Verás qué son exactamente estos contenedores, cómo instalar las herramientas en distintas distribuciones, qué opciones ofrecen para listar, extraer, probar o incluso reparar gabinetes dañados, y en qué situaciones reales (Wine, fuentes de Windows, visores de PowerPoint, etc.) te pueden sacar de un buen atolladero.
Qué es el formato CAB de Microsoft
El formato CAB (Microsoft Cabinet) fue diseñado por Microsoft como su método nativo de empaquetado y compresión de archivos en Windows. Se utiliza de forma masiva en los motores de instalación de la plataforma: Setup API, Device Installer, AdvPack, Windows Installer y otros componentes del sistema encargados de desplegar software y actualizaciones.
Un fichero con extensión .cab funciona como un contenedor comprimido: agrupa múltiples archivos y directorios, admite diferentes algoritmos de compresión (como MSZIP, LZX o Quantum), y puede incorporar firmas digitales para garantizar la integridad del contenido. Esto explica por qué lo ves acompañando a instaladores típicos tipo setup.exe o install.exe, donde el ejecutable hace de “lanzador” y los datos reales viajan dentro de uno o varios CAB.
Aunque en Windows se gestionan de forma casi transparente gracias a los asistentes de instalación, en GNU/Linux estos contenedores no son tan comunes, por lo que necesitas utilidades específicas para abrirlos, inspeccionarlos o extraer su contenido sin ejecutar el instalador original.
Además de los paquetes clásicos de escritorio, los CAB se encuentran en archivos de instalación de Windows CE, actualizaciones de sistema, fuentes web, codecs de vídeo, plantillas de Office y toda clase de recursos redistribuibles que Microsoft y otros proveedores empaquetan en este formato.
Cabextract: la herramienta clave para extraer archivos CAB
cabextract es un programa de línea de comandos diseñado para extraer archivos desde contenedores CAB de Microsoft en sistemas UNIX y derivados (GNU/Linux, BSD, macOS, etc.). Se distribuye como Software Libre bajo licencia GNU GPL y se apoya en la biblioteca portátil libmspack (licencia LGPL), especializada en formatos de compresión de Microsoft.
La utilidad es capaz de manejar todas las variantes y características habituales de los archivos .CAB, incluidos los gabinetes usados por Windows CE y los armarios “anidados” (cuando un CAB contiene dentro otros CAB). También sabe tratar con gabinetes multipartes, esos instaladores que reparten los datos en varios ficheros consecutivos y que en Windows se reensamblan automáticamente.
Entre sus puntos fuertes, cabextract puede preservar la estructura interna de directorios, mantener fechas y permisos de los ficheros extraídos, realizar pruebas de integridad sin llegar a volcar los datos al disco, e incluso intentar rescatar información de gabinetes corruptos sustituyendo las zonas ilegibles por ceros para poder continuar con el resto de bloques.
Aunque existe desde hace años y ha pasado por distintas versiones, en el ecosistema de muchas distribuciones se encuentra consolidado y cuenta con paquetes precompilados para una gran variedad de plataformas: Debian, Ubuntu, Fedora, Gentoo, Slackware, T2 SDE, FreeBSD, NetBSD, OpenBSD, Solaris, macOS (Fink, MacPorts), Cygwin en Windows, AmigaOS, DOS/FreeDOS y más.
Instalación de cabextract en distintas plataformas
En la mayoría de distribuciones GNU/Linux modernas puedes instalar cabextract desde los repositorios oficiales. Esto simplifica mucho la tarea, ya que te olvidas de compilar a mano o perseguir binarios sueltos en la web.
En sistemas basados en Debian o Ubuntu, la instalación clásica se hace con:
sudo apt-get install cabextract
o, si prefieres aptitude:
sudo aptitude install cabextract
Una vez completada la instalación, Wine y otras herramientas que dependen de esta utilidad podrán descomprimir automáticamente los .cab que encuentren en instaladores y asistentes.
En otras distribuciones, el comando varía pero la idea es exactamente la misma: utilizar el gestor de paquetes del sistema. Por ejemplo, en entornos basados en RPM podrías recurrir a:
sudo rpm -i cabextract-1.6-1.i386.rpm
Y si te interesa compilar desde código fuente (por ejemplo, para probar la versión de desarrollo), el flujo típico sería:
tar zxf cabextract-1.6.tar.gz
cd cabextract-1.6
./configure
make
sudo make install
Dentro del árbol del proyecto encontrarás un archivo INSTALL con indicaciones más detalladas, así como scripts auxiliares como rebuild.sh en el repositorio de desarrollo de libmspack, pensados para regenerar la configuración cuando trabajas directamente con la rama de GitHub.
Opciones básicas de uso de cabextract
Una vez instalado, el punto de partida para entender todas las opciones disponibles es consultar su ayuda integrada y la página de manual. Para ello dispones de dos recursos muy útiles:
cabextract --help
y la documentación clásica en formato man:
man cabextract
El resumen que muestra la opción –help ofrece un vistazo rápido de las banderas más habituales, mientras que la página de manual entra en mayor profundidad y explica casos de uso concretos, notas sobre seguridad, comportamiento con gabinetes multipartes, filtros, etc.
En un uso típico, basta con ejecutar el comando seguido del nombre del archivo CAB o del ejecutable que lo contiene y cabextract se encarga de hacer el trabajo pesado:
cabextract archivo.cab
o bien:
cabextract InstaladorWindows.exe
En este escenario, la herramienta extraerá todos los ficheros contenidos en el gabinete (o gabinetes, si hay varios) en el directorio actual, manteniendo la estructura de carpetas interna y las marcas de tiempo asociadas a cada elemento.
Listar, probar y extraer archivos CAB
Además del uso más sencillo para descomprimir, cabextract incorpora varias opciones que conviene tener muy a mano cuando trabajas con muchos instaladores o cuando sólo quieres inspeccionar qué hay dentro de un .cab sin llegar a extraerlo.
Para probar la integridad de un archivo CAB, es decir, leerlo por completo y descomprimirlo internamente pero sin escribir los ficheros resultantes en disco, se utiliza la opción -t (o –test):
cabextract -t sls.cab
Esta operación realiza todo el proceso de extracción en memoria y, además, calcula e imprime una suma de comprobación MD5 para cada archivo contenido en el gabinete. Resulta especialmente útil cuando quieres verificar si un instalador descargado está íntegro antes de usarlo, o si sospechas que el fichero se ha corrompido al copiarlo entre equipos.
Si en lugar de probar la integridad prefieres listar el contenido del CAB, puedes recurrir a la opción -l o –list:
cabextract -l sls.cab
Con este comando, la utilidad mostrará en pantalla los nombres de todos los ficheros que hay dentro del gabinete, acompañados de información como el tamaño, la ruta relativa o la carpeta lógica a la que pertenecen, según cómo haya sido creado el CAB.
Para una extracción completa a un directorio específico, dispones de la opción -d (o –directory). Por ejemplo, si quieres volcar el contenido de un gabinete a /tmp/cab_files/ puedes ejecutar:
cabextract sls.cab -d /tmp/cab_files/
De este modo, en lugar de llenar el directorio actual de ficheros, tendrás todo el material perfectamente encerrado en una ruta separada, lo cual viene muy bien cuando estás analizando instaladores grandes o realizando tareas de ingeniería inversa.
Si, tras la primera extracción, descubres que uno de los ficheros generados es a su vez otro CAB, el procedimiento para seguir abriéndolo es idéntico. Por ejemplo:
cabextract /tmp/cab_files/environment.cab -d /tmp/cab_files2/
Con esta cadena de pasos vas profundizando en los distintos niveles de empaquetado que muchos instaladores de Microsoft encadenan, hasta acceder por fin a los archivos XML, binarios, fuentes u otros recursos que realmente te interesan.
Opciones avanzadas y control fino sobre la extracción
cabextract no se limita a descomprimir todo sin más; también te permite afinar qué se extrae y cómo, algo especialmente valioso cuando trabajas con gabinetes voluminosos o cuando sólo te interesan ciertos tipos de archivos.
Por un lado, el programa busca de forma automática gabinetes incrustados dentro de otros ficheros y los extrae sin que tengas que indicarlo expresamente. Asimismo, si detecta gabinetes de varias partes, intenta localizar y enlazar todas las piezas para tratarlas como un único conjunto. Si, por cualquier motivo, quieres desactivar este comportamiento, dispones de la opción –single, que fuerza a cabextract a trabajar únicamente con el archivo que le has pasado.
Cuando sólo te interesan ciertos ficheros (por ejemplo, todos los archivos de audio con extensión .wav dentro de un paquete enorme), puedes utilizar la opción –filter para limitar la extracción. Un ejemplo clásico sería:
cabextract --filter '*.wav' music.cab
En este caso, cabextract recorre el contenido de music.cab pero únicamente extrae los archivos cuyo nombre coincide con el patrón indicado, ignorando el resto. Así te ahorras espacio, tiempo de procesamiento y ruido en tu directorio de trabajo.
Otra posibilidad interesante es forzar a que todos los nombres de archivo extraídos se conviertan a minúsculas mediante la opción –lowercase. Esto puede ser útil en entornos donde la distinción entre mayúsculas y minúsculas en rutas da problemas, o si simplemente quieres normalizar los nombres por cuestiones de organización.
En cuanto a la ubicación, ya hemos visto que puedes utilizar –directory (o su atajo -d) para enviar los archivos extraídos a una carpeta concreta. Combinando esta opción con filtros y conversión de nombres obtienes un control bastante fino sobre el resultado final de cada extracción.
Reparación de archivos CAB dañados y seguridad
En el mundo real es relativamente frecuente toparse con archivos CAB corruptos: descargas incompletas, errores en dispositivos de almacenamiento, cortes de red, etc. cabextract incorpora una opción llamada –fix pensada para intentar salvar la mayor cantidad posible de datos cuando se encuentra con un gabinete dañado.
Al usar –fix, las porciones de datos que no se pueden leer se sustituyen por ceros, y la herramienta intenta avanzar hasta los bloques siguientes, con la esperanza de que estén intactos. Este proceso no “repara” el archivo en el sentido estricto (la información corrupta se pierde), pero en muchas ocasiones permite recuperar parte del contenido que de otro modo quedaría inaccesible.
Históricamente, cabextract y la biblioteca libmspack han ido corrigiendo distintas vulnerabilidades de seguridad relacionadas con el manejo de archivos maliciosos o especialmente manipulados. Entre las más destacadas se encuentran problemas de:
- Recorridos de directorios usando secuencias como «../» para intentar escribir fuera del directorio actual (CVE-2004-0916).
- Rutas absolutas y combinaciones de «/» y «\» en Cygwin que podían eludir las comprobaciones de seguridad y forzar la extracción en ubicaciones arbitrarias (CVE-2015-2060).
- Lecturas fuera de rango en ciertos escenarios de descompresión LZX o MSZIP (CVE-2015-4470, CVE-2015-4471).
- Bucle infinitos y accesos de memoria incorrectos en el decodificador Quantum y otros algoritmos al procesar offsets o longitudes inválidas, sobre todo en arquitecturas de 32 bits (CVE-2014-9732, CVE-2014-9556, CVE-2010-2800, CVE-2010-2801).
Las versiones más actuales han ido solventando estos fallos, de modo que siempre es recomendable mantener cabextract actualizado desde los repositorios de tu distribución. Así te aseguras de reducir al máximo el impacto de archivos CAB especialmente diseñados para provocar errores o aprovechar debilidades en el decodificador.
Cabextract y Wine: instaladores de Windows en Linux
Si utilizas Wine o Lutris para ejecutar aplicaciones de Windows en Linux, es muy probable que ya te hayas topado con mensajes de error durante una instalación que mencionan archivos .cab. Esto sucede porque muchos instaladores esperan poder acceder a estos gabinetes de forma nativa, y si el entorno no dispone de una herramienta adecuada para descomprimirlos, el proceso puede fallar a medio camino.
Un caso muy típico es encontrarse con un instalador que incluye un fichero con extensión «.cab» y que, al intentar desplegarlo bajo Wine, arroja un error durante la fase de instalación. Sin cabextract, Wine no sabe cómo manejar correctamente estos contenedores, de modo que el asistente se interrumpe o no llega a copiar todos los componentes necesarios.
La solución en muchos escenarios pasa simplemente por instalar cabextract en el sistema host, de forma que Wine, winetricks o Lutris puedan invocarlo en segundo plano cuando necesitan descomprimir alguno de estos gabinetes. En Ubuntu, por ejemplo, puedes hacerlo desde una terminal con:
sudo apt-get install cabextract
Una vez instalado, es bastante habitual que instaladores que antes fallaban empiecen a funcionar correctamente sin que tengas que cambiar nada más, ya que lo único que les faltaba era la capacidad de extraer los .cab encapsulados.
Uso práctico: fuentes de Windows y visor de PowerPoint
Más allá de los ejemplos académicos, cabextract tiene usos muy concretos y prácticos en el día a día de un usuario de escritorio Linux que convive con documentos de Office o que quiere aprovechar algunos recursos de Windows sin instalar el sistema operativo completo.
Un escenario clásico es el de quienes quieren instalar en GNU/Linux ciertas tipografías de Windows (por ejemplo, las de Vista u Office 2007) para que sus documentos se vean exactamente igual que en equipos con Microsoft Office, o para evitar problemas de maquetación al abrir presentaciones y hojas de cálculo.
Para las fuentes más habituales basta con instalar el paquete msttcorefonts (o su equivalente según la distribución), que incluye un conjunto bastante completo: Arial, Times New Roman, Verdana, Tahoma, etc. Pero si quieres fuentes como Calibri o Cambria, usadas intensivamente en documentos modernos, necesitas ir un paso más allá.
Una opción popular consiste en descargar el visor de PowerPoint 2007 para Windows o el Microsoft Office Compatibility Pack para versiones anteriores de Office. Estos paquetes contienen dentro las tipografías que te interesan, empaquetadas en archivos CAB a los que puedes acceder con cabextract.
El flujo general sería algo similar a esto (adaptado a un entorno Debian/Ubuntu):
- Instalar cabextract si todavía no lo tienes:
sudo apt-get install cabextract - Descargar el ejecutable de PowerPoint Viewer 2007 o el paquete de compatibilidad de Office 2007 al directorio de tu elección.
- Desde la terminal, situarte en esa carpeta y descomprimir el ejecutable con cabextract, por ejemplo:
cabextract PowerPointViewer.exe - Entre los archivos generados aparecerá un CAB intermedio (por ejemplo, ppviewer.cab o similar). Lo vuelves a abrir:
cabextract ppviewer.cab - Crear un directorio donde almacenar de forma limpia las tipografías extraídas. Por ejemplo, para las fuentes de Vista:
sudo mkdir -p /usr/share/fonts/truetype/vista - Mover todos los ficheros de fuentes (extensiones .TTF, .ttf, .ttc, etc.) a esa carpeta:
sudo mv *.TTF /usr/share/fonts/truetype/vista - Actualizar la caché de fuentes del sistema para que las nuevas tipografías queden registradas:
sudo fc-cache -f -v
Con estos pasos, tu entorno de escritorio Linux tendrá disponibles las mismas fuentes que utilizan Windows Vista y Office 2007, lo que ayuda a que los documentos se muestren sin saltos raros ni sustituciones de tipografía.
Existen incluso casos concretos como el de la fuente Calibri, donde se han detectado diferentes versiones (por ejemplo, la 1.02, incluida en ciertas ediciones de Office 2007, puede verse mal en Linux en tamaños entre 10 y 14 píxeles). Una alternativa consiste en obtener una versión anterior (1.0) a través del paquete de compatibilidad de Office, extraerla con cabextract como se ha descrito y registrar únicamente esa versión en el sistema para mejorar el renderizado.
Problemas habituales con cabextract en Lutris y winetricks
Al integrar cabextract con herramientas como Lutris o winetricks, en ocasiones surgen mensajes de error un tanto crípticos, que en realidad se reducen a problemas bastante concretos: archivos CAB que no existen, descargas con suma MD5 incorrecta, o gabinetes que no se consideran válidos por la herramienta.
Imagina un caso en el que intentas instalar un juego de Windows como osu! a través de Lutris. El script de instalación puede necesitar el visor de PowerPoint (ppviewer) para disponer de ciertas fuentes o componentes, y utilizar winetricks en segundo plano para descargar y extraer el ejecutable correspondiente.
En una situación así es posible que veas un error del tipo:
cabextract -q -d /ruta/temp -F ppviewer.cab /home/usuario/.cache/winetricks/PowerPointViewer/PowerPointViewer.exe
/home/usuario/.cache/winetricks/PowerPointViewer/PowerPointViewer.exe: no se encontraron cabinets válidos
y justo después:
advertencia: el comando cabextract ... devolvió el estado 1. Abortando.
Este tipo de mensajes suele indicar que cabextract no ha encontrado ningún archivo CAB válido dentro del ejecutable descargado, normalmente porque la descarga está dañada o porque la versión exacta del instalador que espera winetricks ya no coincide con la que se obtiene desde los servidores de Microsoft.
Un síntoma adicional es que el propio winetricks marque el paquete como fallido en la verificación de md5sum, lo que refuerza la idea de que la descarga no se corresponde con la suma de comprobación esperada por el script. En ese caso, el problema no está en cabextract como tal, sino en la inconsistencia entre el script de winetricks y el archivo realmente descargado.
Ante estos escenarios, los pasos lógicos pasan por forzar la reinstalación del componente desde winetricks (para que vuelva a descargarlo), comprobar manualmente si el archivo existe y se puede abrir con cabextract desde la terminal, o buscar una versión alternativa del instalador que coincida con la suma MD5 esperada por el script.
lcab: crear archivos CAB desde Linux
Hasta ahora nos hemos centrado en cabextract, que sirve para desempaquetar gabinetes. Si lo que necesitas es el proceso inverso, es decir, generar tus propios archivos CAB desde Linux para distribuir software o datos a sistemas Windows, la herramienta que entra en juego es lcab.
lcab es un pequeño programa de línea de comandos diseñado específicamente para construir gabinetes CAB a partir de uno o varios archivos de entrada. Aunque no es tan conocido como cabextract, resulta útil cuando quieres empaquetar contenido respetando el formato nativo de Microsoft, por ejemplo para integrarlo en instaladores o para aprovechar componentes que esperan un CAB concreto.
Su sintaxis general suele ser sencilla: indicas el nombre del gabinete de salida y, a continuación, los archivos que quieres empaquetar. A partir de ahí lcab se encarga de generar la estructura interna requerida por el formato y aplicar la compresión adecuada. Combinado con cabextract, dispones de un flujo completo de ida y vuelta: extraer gabinetes existentes, modificarlos y volver a empaquetarlos si fuese necesario.
En la práctica, lcab no suele incluir tantas opciones avanzadas como cabextract, pero para tareas de distribución, pruebas o emulación de entornos Windows desde Linux suele ser más que suficiente.
En conjunto, disponer de cabextract y lcab en tu caja de herramientas te permite tanto consumir como generar gabinetes Microsoft Cabinet desde un sistema UNIX, lo que abre la puerta a automatizar instalaciones, analizar paquetes de actualización, extraer recursos propietarios (siempre respetando sus licencias) o resolver problemas de compatibilidad con Wine y derivados.
Dominar el uso cotidiano de cabextract, conocer sus opciones para listar, probar y reparar gabinetes, y saber en qué casos te conviene recurrir a lcab para crear tus propios .cab, te coloca en una posición mucho más cómoda cuando tienes que moverte entre el mundo de Windows y GNU/Linux. Se trata de entender bien qué esconden esos archivos .CAB que tantas veces pasan desapercibidos, y de aprovechar estas herramientas libres para que trabajen a tu favor en lugar de convertirse en un obstáculo.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.

