¿Qué es el formato de archivo AR?
El formato de archivo .ar se remonta a Unix Versión 1 (1971), creado en Bell Labs como el archivador original de Unix. Un archivo .ar concatena múltiples archivos miembros, cada uno precedido por una cabecera ASCII fija de 60 bytes que registra el nombre del miembro, la hora de modificación, los permisos y el tamaño en bytes. Cada archivo comienza con la cadena mágica de 8 bytes !<arch> seguida de un salto de línea (0x0A).
El formato almacena los miembros sin comprimir por defecto. Existen dos variantes principales:
- La variante BSD (utilizada en macOS) extiende los nombres de archivo largos de forma integrada después de cada cabecera de miembro.
- La variante System V/GNU (utilizada en Linux) almacena los nombres largos en un miembro especial
//y antepone una entrada de índice de símbolos/para una búsqueda eficiente durante el tiempo de enlace.
Hoy en día, .ar se encuentra más comúnmente como bibliotecas estáticas .a en Linux y macOS, donde la herramienta ar de GNU binutils es la implementación estándar. Los paquetes Debian .deb también son archivos ar; renombrar un .deb y extraerlo revela los miembros internos control.tar y data.tar. Comandos comunes de ar: ar rcs libfoo.a *.o crea un archivo, ar t archivo.ar enumera los miembros y ar x archivo.ar los extrae.
Seguridad y protección
RIESGO: LOWLos archivos AR en sí mismos son contenedores sin semántica ejecutable; no pueden ejecutar código automáticamente. Sin embargo, los miembros internos pueden ser archivos de objetos compilados o ejecutables que podrían ser maliciosos. Al extraer un archivo ar de una fuente no confiable, inspeccione los archivos extraídos antes de ejecutarlos. Las bibliotecas estáticas vinculadas a sus binarios se convierten en parte de esos binarios; una biblioteca estática manipulada es un vector de ataque a la cadena de suministro (por ejemplo, archivos de cadena de herramientas comprometidos). Verifique siempre las sumas de comprobación al descargar paquetes de herramientas que contengan bibliotecas .a/.ar.
Detalles del formato
en pocas palabras- Paquete Debian (.deb) - Un archivo .deb es un archivo ar que contiene los miembros control.tar.* y data.tar.*; el contenedor ar es transparente para los usuarios finales (dpkg se encarga de ello).
- Biblioteca estática .a (mismo formato, diferente extensión) - En Linux/macOS .a es la extensión convencional para bibliotecas estáticas en formato ar; .ar es menos común pero idéntico.
Programas que abren archivos AR
Detalles técnicos
especificación profunda| Bytes mágicos | 21 3C 61 72 63 68 3E 0A - cadena ASCII !<arch> más salto de línea (0x0A) en el desplazamiento 0 |
| Tipo MIME | application/x-archive |
| Tamaño de cabecera por miembro | 60 bytes (campos de ancho fijo codificados en ASCII) |
| Diseño de campos de cabecera | Nombre de archivo 16 B, hora de modificación 12 B, UID 6 B, GID 6 B, modo 8 B, tamaño 10 B, magia 2 B |
| Alineación de miembros | Límite de 2 bytes; los miembros de longitud impar se rellenan con un solo carácter de salto de línea (0x0A) |
| Compresión | Ninguna por defecto - los archivos miembros se almacenan textualmente y sin comprimir |
| Comprobación de integridad | No hay sumas de comprobación por miembro ni a nivel de archivo en el formato ar |
| Límite de nombre de archivo | 16 caracteres en la cabecera fija; ilimitado mediante la extensión integrada BSD o la tabla de miembros // de System V |
| Variantes del formato | BSD (macOS): nombres extendidos integrados; System V/GNU (Linux): tabla de miembros // para nombres largos |
| Índice de símbolos GNU | GNU ar antepone un miembro de tabla de símbolos / a los archivos .a para una búsqueda eficiente de símbolos en tiempo de enlace |
| Soporte para archivos delgados (thin) | Los archivos delgados de GNU usan la magia 21 3C 74 68 69 6E 3E 0A (!<thin>) y almacenan rutas de archivos, no datos |
| Usos principales | Bibliotecas estáticas .a (Linux, macOS), paquetes Debian .deb, paquetes OpenWrt .ipk |
| Plataformas | Linux, macOS, FreeBSD, Solaris, AIX, Windows (MinGW/Cygwin/WSL) |
| Lanzado | 1971 (Unix v1, as the original Unix archiver) |
| Última versión | POSIX.1-2017 specifies the format; GNU ar (binutils) is current implementation |
| Estándar abierto | Sí · libre de regalías |
| Especificación | pubs.opengroup.org |
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos AR.