Sfruttare al Massimo il Comando PowerShell Compress-Archive per Zippare e Estrarre File (2023)

Introduzione

Nel corso della mia esperienza con la macchina Hack the Box denominata Sharp, mi sono trovato nella necessità di esfiltrare un'intera directory contenente file e sottocartelle dal sistema remoto al mio. Al fine di semplificare questa operazione, ho optato per l'utilizzo del comando Compress-Archive di PowerShell. Questo comando consente di comprimere un insieme di file in un unico archivio, facilitando la distribuzione e lo spostamento dei dati.

Compress-Archive: La Chiave per la Compressione

Il comando Compress-Archive è uno strumento potente integrato in PowerShell, progettato per creare archivi compressi (zip) da uno o più file o directory specificati. Questo processo consente di raggruppare diversi file in un unico archivio zippato, rendendo più agevole la distribuzione e lo stoccaggio. L'archivio può essere compresso utilizzando diversi livelli di compressione, specificati tramite il parametro CompressionLevel.

Compress-Archive -Path <string[]> -DestinationPath <string> -CompressionLevel {Optimal | NoCompression | Fastest}

È importante notare che esiste un limite dimensionale di 2 GB per gli archivi creati con questo comando, poiché si basa sulla limitazione dell'API sottostante (System.IO.Compression.ZipArchive) di Microsoft .NET.

Come Usare Compress-Archive: Procedura Base

Per zippare tutti i file in una singola directory, è sufficiente utilizzare il comando con i parametri Path (per specificare il percorso dei file da comprimere) e DestinationPath (per indicare la destinazione dell'archivio).

Compress-Archive -Path $percorso_input -DestinationPath $percorso_output\$nome_archivio

Ricorda di utilizzare le virgolette attorno al percorso del file quando è presente uno spazio nel percorso.

Estrarre File con PowerShell: Expand-Archive

Una volta copiati i file sul tuo sistema locale, puoi utilizzare diversi strumenti per aprire l'archivio zip. Tuttavia, se desideri utilizzare solo PowerShell o sei costretto a farlo sullo stesso sistema remoto, il comando Expand-Archive sarà il tuo alleato.

Expand-Archive -Path $percorso_input\$nome_archivio -DestinationPath $percorso_output -Force

Attenzione: l'uso del parametro -Force sovrascriverà irrimediabilmente i file esistenti nella destinazione senza ulteriori avvertimenti.

Utilizzo Avanzato: Dalle Selezione Multiple all'Aggiornamento di Archivi Esistenti

Zippare File Multipli

Oltre a comprimere tutti i file in una singola directory, è possibile zippare singoli file o addirittura intere directory in un unico file.

Compress-Archive -Path ~\.ssh,~\Documents -DestinationPath $percorso_output\$nome_archivio

Selezione di File con Carattere Jolly

Il comando Compress-Archive permette l'utilizzo del carattere jolly (*) per controllare ulteriormente la selezione dei file da comprimere. Puoi escludere la cartella contenente i file, comprimere solo i file all'interno di una directory o selezionare tutti i file che corrispondono a criteri specifici.

Escludere la Cartella Contenente

Aggiungendo un asterisco (*) alla fine del percorso del file, è possibile comprimere solo i file/cartelle all'interno di una directory, escludendo la stessa cartella.

Compress-Archive -Path $percorso_input\* -DestinationPath $percorso_output\$nome_archivio

Comprimere Solo File in una Cartella (non ricorsivo)

Per comprimere solo i file in una directory, escludendo le sottodirectory, puoi utilizzare la notazione star-dot-star (.):

Compress-Archive -Path $directory\*.* -DestinationPath $percorso_output\$nome_archivio

Comprimere Tutti i File che Corrispondono a Criteri Specifici

Se desideri comprimere solo i file di un certo tipo in una cartella mista, puoi utilizzare il carattere jolly per sostituire il nome del file e specificare l'estensione del tipo di file desiderato.

Compress-Archive -Path $percorso_input\*.$estensione -DestinationPath $percorso_output\$nome_archivio

Aggiornare un Archivio Esistente

È possibile aggiornare un file zippato esistente aggiungendo il parametro -Update al comando Compress-Archive. Questo consente di sostituire i file esistenti con versioni più recenti dello stesso nome o aggiungere nuovi file.

Compress-Archive -Path $percorso_input -DestinationPath $percorso_output\$nome_archivio -Update

Conclusione

In conclusione, il comando Compress-Archive di PowerShell si rivela uno strumento fondamentale per comprimere e decomprimere file e directory. La sua versatilità consente una gestione efficiente dei dati, facilitando operazioni come l'esfiltrazione e la distribuzione. Sfruttando le sue opzioni avanzate, è possibile adattare l'uso del comando alle esigenze specifiche, garantendo una maggiore flessibilità e controllo.

References

Top Articles
Latest Posts
Article information

Author: Kareem Mueller DO

Last Updated: 10/20/2023

Views: 6061

Rating: 4.6 / 5 (66 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: Kareem Mueller DO

Birthday: 1997-01-04

Address: Apt. 156 12935 Runolfsdottir Mission, Greenfort, MN 74384-6749

Phone: +16704982844747

Job: Corporate Administration Planner

Hobby: Mountain biking, Jewelry making, Stone skipping, Lacemaking, Knife making, Scrapbooking, Letterboxing

Introduction: My name is Kareem Mueller DO, I am a vivacious, super, thoughtful, excited, handsome, beautiful, combative person who loves writing and wants to share my knowledge and understanding with you.