27.04.2021

İnternetten indirilen bir dosyanın engelini kaldırma

Alternate data streams (ADS) konusunu daha önce yazmıştım. İnternetten indirilen bir dosya üzerinde bir "Zone.Identifier" ADS akışı olur.


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* -Streams *

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 -Streams Zone.Identifier

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. Bunlar tek seçenek değil, başka yollar da var. 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.