Что нового

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

Yashied

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


Однако, этого не происходит, если .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, то этот файл в эксплорере вообще запустить не удастся.


Но самым правильным решением, 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 111
Репутация
2 318
Я так понимаю это можно использовать скриптом для самого себя же.
Но если “при сохранении файла на диск, браузер (?) создает альтернативный поток с именем Zone.Identifier”, то какой в этом смысл, я залью файл, а потом после его скачивания всё равно ID будет 3.

Или я ошибаюсь?
 
АТ
Yashied

Yashied

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

Medic84

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

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

dwerf

Использует ArchLinux
Сообщения
478
Репутация
218
Medic84 [url_ex=javascript:qq.OpenLink('http://autoit-script.ru/index.php/topic,10142.msg67303.html#msg67303')][?][/url_ex]
Если человек скачал файл из интернета, то это можно убрать в св-вах файла или просто нажать "Да".
Например разом зачистить все скачанные файлы в директории.
 

CreatoR

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

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

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

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

Medic84

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

Medic84

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

CreatoR

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

InnI

AutoIT Гуру
Сообщения
4 158
Репутация
1 100
CreatoR [url_ex=javascript:qq.OpenLink('http://autoit-script.ru/index.php/topic,10142.msg67319.html#msg67319')][?][/url_ex]
Смотря как скачивать, насколько мне известно 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
Репутация
963
IMHO
Лично для себя, вижу хорошее решение автоматизации процесса разблокировки файлов, которым я доверяю. :smile:
 

beliy

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

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

InnI

AutoIT Гуру
Сообщения
4 158
Репутация
1 100
beliy [url_ex=javascript:qq.OpenLink('http://autoit-script.ru/index.php/topic,10142.msg67590.html#msg67590')][?][/url_ex]
попробуйте скачать неподписанyый EXE
Я-то пробовал. А вы?
 

beliy

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