Что нового

Удаление информации об источнике получения файла

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Все вы наверное сталкивались с ситуацией, когда при попытке запуска скаченного из сети .exe файла всплывает предупреждение безопасности.

post_img_090.png

Однако, этого не происходит, если .exe файл был помещен в архив. Так в чем же тогда хитрость, и как избавиться от этого предупреждения? Дело в том, что при сохранении файла на диск, браузер (?) создает альтернативный поток с именем Zone.Identifier следующего содержания:

Код:
[ZoneTransfer]
ZoneId=3

Параметр ZoneId указывает источник, откуда был получен файл. Возможны следующие значения:

  • 0 - Локальный компьютер
  • 1 - Интранет
  • 2 - Доверенный источник
  • 3 - Интернет
  • 4 - Недоверенный источник

Для просмотра или редактирования данных Zone.Identifier можно воспользоваться обычным блокнотом, вызвав его следующим образом:

Код:
Notepad.exe MyApp.exe:Zone.Identifier

Для перечисления всех потоков файла (если интересно) используйте функцию _WinAPI_EnumFileStreams(). Чтобы избавиться от показа предупреждения безопасности измените значение ZoneId на 0, 1 или 2. Если ZoneId будет равна 4, то этот файл в эксплорере вообще запустить не удастся.

post_img_091.png

Но самым правильным решением, IMHO, будет полное удаление потока Zone.Identifier из файла. И что самое приятное, для этого почти ничего не придется делать, все происходит на уровне файловой системы. Вот простая функция для удаления потока Zone.Identifier из указанного файла.

Код:
#Include <WinAPIEx.au3>

Func _RemoveZoneID($sFile)
	If Not _WinAPI_DeleteFile($sFile & ':Zone.Identifier') Then
		Return 1
	EndIf
	Return SetError(1, 0, 0)
EndFunc   ;==>_RemoveZoneID


P.S

Альтернативные потоки поддерживаются только файловой системой NTFS. В других файловых системах ни потоков, ни предупреждений безопасности, естественно, не будет.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Я так понимаю это можно использовать скриптом для самого себя же.
Но если “при сохранении файла на диск, браузер (?) создает альтернативный поток с именем Zone.Identifier”, то какой в этом смысл, я залью файл, а потом после его скачивания всё равно ID будет 3.

Или я ошибаюсь?
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Смысл не в создании, а в удалении альтернативного потока после скачиваний .exe файлов, чтобы можно было беспроблемно их запускать. А вообще, этот поток добавляется ко всем скачиваемым файлам.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
CreatoR
Встраивать это в скрипт бесполезно =)
Потому что если скрипт скачают из интернетов, то появится то самое окно, а уже после его запуска он будет (возможно) удален.

Но у меня все равно вопрос. Yashied зачем это скрипту? Каково практическое (массовое) применение? Если человек скачал файл из интернета, то это можно убрать в св-вах файла или просто нажать "Да". Это будет проще чем запускать скрипт :smile: А если файл скачивается AutoIT, то ему эта зона не присваивается вовсе...
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
219
Medic84 [?]
Если человек скачал файл из интернета, то это можно убрать в св-вах файла или просто нажать "Да".
Например разом зачистить все скачанные файлы в директории.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yashied [?]
Смысл не в создании, а в удалении альтернативного потока после скачиваний .exe файлов, чтобы можно было беспроблемно их запускать.
Значит единственное применение, это возможность свободно выполнять exe'шники закаченные скриптом.

Medic84 [?]
Встраивать это в скрипт бесполезно =)
Потому что если скрипт скачают из интернетов, то появится то самое окно, а уже после его запуска он будет (возможно) удален.
Так я об этом и писал, было бы хорошо если бы мы смогли (после первого запуска) закинуть файл на сервер уже без этого потока, но раз уж браузер его добавляет, значит так и есть, нету в этом смысла.

Каково практическое (массовое) применение?
См. выше. При закачке и запуске файлов скриптом.

InnI [?]
Проще отключить совсем, чем потом удалять.
На системе клиента? :smile: Не очень хорошо менять настройки системы.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
CreatoR,Yashied
Давайте внесем ясность. Поток Zone.Identifier добавляет браузер или вообще система при скачивании файла из интернета?
Если первое - то практическое применение минимальное, ибо скрипт может скачивать и запускать без каких либо преград.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Сейчас бьюсь в попытках скачать закрытый exe, но не выходит...Они запускаются :(
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Medic84 [?]
Если первое - то практическое применение минимальное, ибо скрипт может скачивать и запускать без каких либо преград.
Смотря как скачивать, насколько мне известно InetGet использует настройки IE, т.ч это равносильно скачиванию браузером.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
CreatoR [?]
Смотря как скачивать, насколько мне известно InetGet использует настройки IE, т.ч это равносильно скачиванию браузером.
Скачал файл
http://autoit-script.ru/autoit_rv_ua/files/Other/AutoIt_v3-_Your_Quick_Guide.pdf
при помощи IE8 (Win7x86). Запустил
Код:
Notepad.exe AutoIt_v3-_Your_Quick_Guide.pdf:Zone.Identifier
получил
Код:
[ZoneTransfer]
ZoneId=3
Скачал
Код:
InetGet("http://autoit-script.ru/autoit_rv_ua/files/Other/AutoIt_v3-_Your_Quick_Guide.pdf", "d:\AutoIt_v3-_Your_Quick_Guide.pdf")

Запустил
Код:
Notepad.exe AutoIt_v3-_Your_Quick_Guide.pdf:Zone.Identifier
получил
Код:
Не удается найти файл d:\AutoIt_v3-_Your_Quick_Guide.pdf:Zone.Identifier.
Создать новый файл с таким именем?
Похоже, не создаётся поток при скачивании InetGet...
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
IMHO
Лично для себя, вижу хорошее решение автоматизации процесса разблокировки файлов, которым я доверяю. :smile:
 

beliy

Продвинутый
Сообщения
372
Репутация
72
Сейчас бьюсь в попытках скачать закрытый exe, но не выходит...Они запускаются :(
Возможно у вас отключена данная опция в вашей ОС.
Похоже, не создаётся поток при скачивании InetGet...
вы качаете PDF попробуйте скачать неподписанyый EXE

P.S. Функция безусловно полезная, а о степени полезности для каждого, каждый рещает сам.
 

beliy

Продвинутый
Сообщения
372
Репутация
72
Я-то пробовал. А вы?
Извиняюсь, через InetGet нормально, но не всегда можно ею воспользоваться. Например, нужно скачать файл ссылка которого генерируется через js, который обработан обфускатором. Тогда приходится через IE.AU3 скачивать. И тогда данная функция jx. полезна.
 
Верх