Alternate data streams (ADS) konusunu daha önce yazmıştım. İnternetten indirilen bir dosya üzerinde bir "Zone.Identifier" ADS akışı olur. Windows'da çoğu tarayıcı (Firefox, Chrome, Edge, Internet Explorer) internetten indirilen dosyalar için bu ADS akışını oluşturur.
Yukarıdaki diyaloğun altındaki "Engellemeyi Kaldır" kutusu işaretlenmeden zip dosyası açılırsa açılan her dosya için Zone.Identifier akışı oluşur. Bu Windows ayıklama arayüzü kullanıldığında geçerlidir. Diğer dosya sıkıştırma uygulamaları için durum farklı olabilir. Örneğin 7zip, çıkartılan (veya ayıklanan, her neyse) dosyalar için Zone.Identifier akışını korumaz. Ayrıca bu akışa sahip bir dosya çalıştırılırken de kaynağına güvenip güvenmediğimize dair emin misiniz sorusu görüntülenir.
Neyse, çevirideki anlam karmaşasından sıyrılıp konuya dönelim. Zip dosyasına sağ tıklayıp engellemeyi kaldırabiliriz. Ama amacımız bunu komut satırından, powershell ile yapmak.
Önce akışı görelim:
PS> Get-Item -Path Sysinternals* -Stream *
Bu şekilde bulunduğumuz klasörde sysinternals ile başlayan tüm dosyaların ADS verilerini görüntülemiş oluruz. Belli bir dosyanın belli bir akışına (ADS'sine) ulaşmak için daha net olarak
PS> Get-Item SysinternalsSuite.zip -Stream Zone.Identifier
PSPath : Microsoft.PowerShell.Core\FileSystem::D:\Download\SysinternalsSuite.zip:Zone.Identifier
PSParentPath : Microsoft.PowerShell.Core\FileSystem::D:\Download
PSChildName : SysinternalsSuite.zip:Zone.Identifier
PSDrive : D
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName : D:\Download\SysinternalsSuite.zip
Stream : Zone.Identifier
Length : 97
kullanabiliriz. Zone.Identifier akışını bulduk. Bir de içeriğini görüntüleyelim.
PS> Get-Content SysinternalsSuite.zip:Zone.Identifier
[ZoneTransfer]
ZoneId=3
ReferrerUrl=https://docs.microsoft.com/tr-tr/sysinternals/downloads/sysinternals-suite
HostUrl=https://download.sysinternals.com/files/SysinternalsSuite.zip
Bunu silmek için de
PS> Remove-Item SysinternalsSuite.zip:Zone.Identifier
kullanabiliriz. Hatta bu işi yapan bir cmdlet de var (2023-02-02):
PS> Unblock-File SysinternalsSuite.zip
ADS akışından kurtulduktan sonra powershell ile dosyaları çıkartmak (ayıklamak, genişletmek) için de şöyle bir yol olabilir:
PS> Expand-Archive .\SysinternalsSuite.zip -DestinationPath D:\Tools\ -Force
Burada -Force parametresi o klasörde var olan eski sürümlerin üzerine yazmayı etkinleştirmek için.
Not: Powershell Invoke-WebRequest cmdlet'ini kullanarak indirince ADS oluşturulmaz. Bu şekilde indirmek için mesela
PS> Invoke-WebRequest -Uri "https://download.sysinternals.com/files/SysinternalsSuite.zip" -OutFile "SysinternalsSuite.zip"
yazabiliriz.
Hiç yorum yok:
Yorum Gönder