Как Windows определя, че файл е изтеглен от интернет

В предишна статия споменахме, че когато се опитвате да отворите изпълним файл, изтеглен от Интернет, Windows дава предупреждение за сигурност за опит за стартиране на потенциално опасно съдържание (за подробности вижте Как да изключите предупреждение за сигурност в Windows). Как системата определя, че файлът е изтеглен от интернет? Нека се опитаме да го разберем.

съвет. В Windows 8 SmartScreen също може да блокира файлове, изтеглени от Интернет..

Всички изпълними файлове, изтеглени от Интернет чрез браузър, получават специална маркировка. Това правило се поддържа не само от Internet Explorer, но и от повечето популярни браузъри, като Mozilla Firefox и Google Chrome. Когато копирате, преименувате или премествате файл в друг дял с файловата система NTFS, предупреждението все още остава.

Тази марка представлява алтернативен NTFS поток, файл, собственост на файла.

забележка. сърце алтернативни NTFS потоци от данни (ADS - Алтернативни потоци от данни). - способността за всеки NTFS файл да създава няколко допълнителни потока данни (метаданни). По подразбиране всички файлови данни се съхраняват в основния поток, но е възможно да се създадат една или повече допълнителни данни за файла и техният размер дори може да надвиши размера на основния файл. По-голямата част от приложенията (включително Explorer) работят само със стандартен поток и не могат да четат данни от алтернативни NTFS потоци.

За да сте сигурни, че на изтегления от Интернет файл е присвоен специален етикет (алтернативен поток NTFS), в прозореца на командния ред избройте файловете в дистрибуторската директория с командата:

dir / r

Както виждаме, алтернативна нишка е присвоена на изпълними файлове в тази директория Zone.Identifier, например: install_flash_player_16_active_x.exe: Zone.Identifier

Отворете съдържанието на алтернативния поток в бележника:

Notepad.exe install_flash_player_16_active_x.exe: Zone.Identifier

Виждаме, че този поток е файл с [ZoneTransfer], което показва идентификатора на предавателната зона ZoneId (същите зони за сигурност, които присъстват в настройките на IE). Идентификационната зона на предавателната зона може да съдържа една от 5 стойности от 0 до 4.

  • ZoneId = 0: Локална машина
  • ZoneId = 1: Локален интранет
  • ZoneId = 2: надеждни сайтове
  • ZoneId = 3: Интернет
  • ZoneId = 4: Ограничени сайтове

Когато изтегляте файл от определена зона за сигурност, браузърът поставя етикет за тази зона. Когато стартирате файлове с атрибут ZoneId, равен на 3 или 4 в алтернативен NTFS поток, системата разпознава, че файлът е получен от Интернет или ненадежден източник въз основа на етикета на зоната. Windows проверява този маркер за изпълними файлове, започващи с Windows XP SP2.

За да изтриете ръчно даден етикет (алтернативен поток) от файл, просто щракнете върху бутона пускане във свойствата на файла.

Уверете се, че алтернативният поток за този файл сега липсва:

съвет. За да предотвратите етикетирането на изтеглените файлове на системата, можете да запишете файлове от интернет във файлова система, различна от NTFS. Например FAT, exFat и т.н..

Най-общо казано, на Windows липсват разумни средства за работа с алтернативни потоци данни. Ако, например, има задача да премахнете тази функция веднага от много файлове, най-добре е да използвате помощната програма за конзола на Марк Русинович. - потоци.

Например, за рекурсивно премахване на алтернативни потоци от всички EXE файлове в директорията c: \ Download \, изпълнете командата:

c: \ ИНСТРУМЕНТИ \ streams.exe -s -d c: \ Изтегляне \ *. exe

Конзолата показва, че алтернативният поток на файла е изтрит: Изтрита: Zone.Identifier: $ DATA

Важно е. Помощната програма потоци изтрива всички алтернативни потоци от дадени файлове и не позволява насочване към конкретен поток. Следователно, не стартирайте командата streams във формата streams.exe -s -d c: \ *. Exe, защото това може да доведе до неизправност в системата поради премахването на важна информация от алтернативни NTFS потоци в системните файлове.


Ако имате PowerShell 3.0, можете да изброите файловете в директорията (рекурсивно) с потока Zone.Identifier, като използвате следната команда:

Get-ChildItem -Текущ | Get-Item -Stream Zone.Identifier -ErrorAction SilentlyContinue | Select-Object FileName

Самият атрибут се премахва, както следва:

Remove-Item. \ Installfile.exe -Stream Zone.Identifier

В Windows PowerShell 4.0 можете да премахнете отметката от етикета Zone.Identifier, като използвате отделен командлет:

Разблокиране-файл installfile.exe

Можете да зададете ръчно този етикет за произволен файл. За да направите това, изпълнете командата

notepad.exe install_flash_player_16_active_x.exe: Zone.Identifier

защото няма поток, системата ще предложи да се създаде нов файл. Ние се съгласяваме и копираме текста в прозореца на тефтерчето:

[ZoneTransfer]
ZoneId = 3

Запазване на промените. Уверете се, че на файла е зададен алтернативен поток.