Interoperabilidad
Qué verifica interop.sh frente a unzip, tar y 7-Zip.
Actualizado el
Un archivador solo es útil si otras herramientas pueden abrir lo que escribe.
interop.sh compara hashes tras recorridos de ida y vuelta y comprueba rechazos
y limpieza. El resumen final da el número según la compilación y las herramientas.
Qué comprueba interop.sh
- Lo que escribe Arca lo lee
unzip,tary 7-Zip, en los cuatro niveles. - Lo que escriben
zip,tary 7-Zip lo lee Arca sin perder un byte. - Un archivo que Arca cifró con AES-256 se abre en 7-Zip, y al revés.
- Añadir y quitar la contraseña de un archivo ZIP existente, sea de Arca o de 7-Zip.
- Un byte ZIP alterado lo detecta el CRC o el HMAC de AE-2 si está cifrado.
- 7z Copy/LZMA2 en todos los niveles, contraseñas y cabeceras ocultas en ambas direcciones.
- Entradas externas sólidas LZMA/LZMA2, nombres Unicode, entradas vacías y conflictos.
- Extraer 7z con contraseña incorrecta deja el destino ausente o intacto.
- Una entrada con
../../se rechaza en lugar de escribir fuera del destino. - Los fixtures del lector RAR/CBR, también con UnRAR oficial cuando
UNRARapunta a él (ARCA_TEST_RAR=0los omite). .tar.xzen los cuatro niveles y con uno o cuatro hilos se abre conxz -tytar -J, y Arca lee lo que escribetar -cJf, también con el nombre.txz.- Un
.xzsuelto va y vuelve conxz, con todos los tipos de--checky con flujos concatenados. Dos entradas se rechazan. - Un TAR dentro de un fichero llamado
.xzse lista como TAR.XZ; un.xzdañado falla sin publicar nada, y un.tar.xztruncado falla.
bash interop.shLos archivos RAR que crea Arca se comprueban con un harness aparte con semilla: construye árboles en todos los niveles, calcula el hash del origen y de los árboles extraídos por Arca, UnRAR oficial y 7-Zip, y guarda el resultado en JSON. Sin los dos decodificadores informa omisiones explícitas; la CI descarga copias fijadas por hash y falla si faltan.
cargo build --release -p arca-cliUNRAR=/ruta/a/unrar SEVENZIP=/ruta/a/7zz python3 arca-rar/tests/create-stress.py --require-toolsZstandard en ZIP
Zstandard es el método 93 de ZIP: registrado en la especificación, pero todavía no lo lee el unzip clásico. Por eso -c auto usa Deflate en un .zip, para que cualquier cosa pueda abrirlo. Zstandard se pide a mano, y será el predeterminado en cuanto exista un formato nativo.
Cifrado
ZIP AES-256 usa WinZip AE-2. Los ZIP ZipCrypto se pueden actualizar con
arca password. 7z usa AES-256-CBC/SHA-256 y CRC, no cifrado autenticado: un fallo
de CRC cifrado también puede indicar corrupción.
7z t -p"a password" secret.zip # 7-Zip lee lo que Arca cifróRegresiones del parser
cargo test -p arca-7zcargo test -p arca-cli --test sevenzcargo test -p arca-xzcargo test -p arca-cli --test xzcargo test -p arca-7z --test interop -- --ignoredcargo test -p arca-gui -- --ignoredLas pruebas ignoradas requieren 7z. Las suites recorren todos los prefijos
truncados de ejemplos sin cifrar, sólidos, cifrados y con cabeceras ocultas y
exigen errores, no panics. También prueban cabeceras malformadas y límites de
recursos. Son regresiones, no una garantía sobre todo archivo malicioso.
No se publican nuevas cifras de rendimiento 7z. Las pruebas de plataforma e
interfaz deben realizarse por separado.