# 7-Zip

7-Zip è un programma open source per la creazione e gestione di file compressi. Usa il proprio formato archivio 7z ma può leggere e scrivere in molti altri formati. È attivamente sviluppato da Igor Pavlov sin dalla prima versione del 1999.
Progettato originariamente per Microsoft Windows, è disponibile anche per i sistemi Linux e MacOS con interfaccia a riga di comando, rispettivamente dalle versioni 21.01 alpha e 21.02 alpha.
La maggior parte del codice sorgente di 7-Zip è distribuito sotto la GNU Lesser General Public License. È disponibile un porting multipiattaforma per sistemi Unix-like chiamato p7zip.

## Formati
### Il formato archivio 7z

Come impostazione predefinita, 7-Zip crea archivi di formato 7z, con l'estensione .7z. Ciascun archivio può contenere più file e cartelle. La compressione, sicurezza e la riduzione di grandezza sono raggiunte utilizzando una combinazione di filtri impilati. Questi possono essere preprocessori, algoritmi di compressione e filtri di cifratura. Il nucleo della compressione dei file .7z usa vari algoritmi, i più comuni sono bzip2, LZMA2 e LZMA.
Sviluppato da Igor Pavlov, LZMA è un software relativamente nuovo che fa il suo debutto come parte del formato 7z. LZMA è costituito da un grande dizionario scorrevole basato su pacchetti LZ di grandezza fissata a 4Gb, e utilizzante un range coder. Il formato nativo dei file formato 7z è aperto e modulare. Tutti i nomi dei file sono memorizzati con caratteri Unicode. Le specifiche ufficiali del file formato 7z sono distribuite con il codice sorgente del programma.

### Altri formati supportati

7-Zip supporta un numero elevato di altri formati di archivi compressi e non compressi, includendo compressione e decompressione di ZIP (anche archivi multivolume), gzip, bzip2, tar, e dalla versione beta 9.04 il formato XZ. 7-Zip permette solo la decompressione dei formati CAB (Microsoft cabinet file), RAR, MSLZ, SWF, FLV, Arj, Z, LHA, CPIO, SMZIP, JAR, immagini ISO CD/DVD (7-Zip nelle versioni 4.42 e superiori), DMG, HFS, RPM e archivi debian (DEB); dalla versione 4.65 può estrarre altri formati come: ARJ, CAB, CHM, CPIO, DyjyEB, DMG, HFS, ISQ, LZH, LZMA, MSI, NSIS, RAR, RPM, UDF, WIN, XAR e Z (il supporto completo su estrazione e archiviazione è fornita solo per i seguenti formati: 7z, zip, gzip, bzip2 e tar).
7-Zip è capace di aprire alcuni file .msi (Microsoft installer), permettendo l'accesso al completo meta-file interno. Possono anche essere aperti altri formati di installer come i file CAB (compressione LZX) e NSIS (LZMA), questo significa che 7-Zip può essere usato per verificare se un file binario è un archivio; in maniera simile alcuni programmi eseguibili (.exe) possono essere aperti come archivi, potendone estrarre il contenuto.
Dalla versione 15.06 beta è possibile estrarre il contenuto degli archivi in formato RAR5.

## Versioni

La versione originaria, dotata di interfaccia grafica (7-Zip File Manager), è disponibile per i sistemi operativi Microsoft a 32 bit e a 64 bit (che supporta maggiori quantità di memoria e una compressione più veloce) da Windows NT fino a Windows 11 (al 2022).
La versione p7zip a riga di comando è stata adottata per l'utilizzo in sistemi operativi come Linux, FreeBSD, MacOS, AmigaOS 4 e vari altri.
È disponibile un front-end per p7zip con una GUI per Mac OS X dal nome di KEKA. Sono fornite due versioni in riga di comando: 7x.exe, usando librerie esterne, e una versione stand-alone 7za.exe contenente moduli precostruiti; il supporto della compressione/decompressione di 7za è però limitata ai file di tipo 7z, zip, gzip, bzip2 e tar.
La versione con interfaccia a riga di comando è disponibile anche per i sistemi DOS (utilizzanti l'HX DOS Extender), ed è stata convertita per i sistemi Unix-like (p7zip).

## Caratteristiche del programma

* Offre un altissimo rapporto di compressione col formato 7z tramite l'algoritmo di compressione LZMA;
* 7-Zip è software libero distribuito con licenza GNU LGPL;
* Supporta più formati di archiviazione:
** sia compressione che decompressione: 7z, ZIP (anche archivi multivolume come .z01, .z02, ecc...), gzip, bzip2 e TAR;
** solo decompressione: RAR, CAB, Arj, LZH, CHM, Z, CPIO, RPM Package Manager, deb, ISO 9660 ed i file eseguibili creati da Nullsoft Scriptable Install System;
* Per i formati ZIP e gzip fornisce un rapporto di compressione mediamente migliore del 2-10% rispetto a quello standard di PKZIP e WinZip;
* Può creare archivi 7z autoestraenti;
* È integrabile con la shell di Windows;
* Dispone di un file manager;
* Dispone di una versione con interfaccia a riga di comando;
* È disponibile anche sotto forma di plugin per il programma FAR Manager;
* Supporta il multithreading;
* È tradotto in 89 lingue (a partire dalla versione 21.00 alpha).

## Modello di numerazione delle versioni

Dopo la versione 4.65 7-Zip cambia il suo schema di numerazione in “anno.revisione”, simile a quella usata da Ubuntu ed altri progetti. La prima pubblicazione con il nuovo modello di numerazione si è concretizzata, nel corso del 2009, con le versioni di sviluppo 9.04. Per tutto il 2010 si è comunque proseguito pubblicando minor release successive delle beta 9.x, senza mai averne una versione ufficialmente stabile. Lo schema è seguito ininterrottamente dal 2015 a oggi.

## Sicurezza

Gli archivi autoestraenti prodotti da 7-Zip (incluso lo stesso eseguibile per l'installazione di 7-Zip) possono essere vulnerabili a esecuzione di codice arbitrario tramite il dirottamento DLL: se la DLL UXTheme.dll si trova nella stessa cartella del file eseguibile viene caricata ed eseguita. Nella versione 16.03 di 7-Zip le note di rilascio informano che è stata aggiunta una protezione nel programma di installazione e nei moduli SFX per prevenire questo tipo di attacco.
Le versioni di 7-Zip 18.03 e precedenti contengono una vulnerabilità di esecuzione di codice arbitrario nel modulo che estrae i file dagli archivi RAR (CVE-2018-10115), la vulnerabilità è stata risolta il 30 aprile 2018 con la versione 18.05.
Le versioni dalla 24.00 alla 24.07 (inclusa) soffrivano di una vulnerabilità che permetteva l'esecuzione di codice arbitrario per via della implementazione Zstandard di decompressione usata: questa risultava in un underflow aritmetico . Del codice poteva così essere scritto usando bytes extra alla fine del file compresso, che venivano poi caricati in memoria. La vulnerabilità (CVE-2024-11477) è stata corretta con la versione 24.08.