Skip to content

Instantly share code, notes, and snippets.

@vyach-vasiliev
Last active May 1, 2024 13:19
Show Gist options
  • Select an option

  • Save vyach-vasiliev/8e8d0e8afc54951938d251efa82c4639 to your computer and use it in GitHub Desktop.

Select an option

Save vyach-vasiliev/8e8d0e8afc54951938d251efa82c4639 to your computer and use it in GitHub Desktop.
Dropbox ignore for files/folders

DEPRECATED

Эта версия устарела и более не поддерживается. Используйте новую версию https://gist.github.com/vyach-vasiliev/2eb1eb6a012165a18f1a31e0af2a78d9

Игнорирование файлов и папок Dropbox при синхронизации

Небольшая утилита для реестра

Как установить

Запуститите Add_Ignore_From_Dropbox_Context_Menu.reg для добавления в контекстное меню пункта Ignore for Dropbox. Этот пункт пометит файл для игнорирования Dropbox при синхронизации остальных файлов. Если это папка, то все файлы внутри так же будут помечены как игнорируемые.

Как использовать

Кликнуть пр.кн.мыши на файл/папку и выбрать пункт Ignore for Dropbox в контекстном меню.

Как удалить

Для удаления пункта Ignore for Dropbox из контекстного меню, необходимо запустить файл Remove_Ignore_From_Dropbox_Context_Menu.reg

Как отменить игнорирование

Для возвращение файла/папки к синхронизации достаточно кликнуть пр.кн.мыши на нужный файл/папку и выбрать Синх. с drobox.com (блок стандартных пунктов от Dropbox, может меняться со временем).

Альтернативные потоки данных в NTFS

Файловая система NTFS обладает множеством интересных возможностей, одной из которых является наличие альтернативных потоков данных (Alternate Data Stream, ADS). Суть их в том, что каждый файл в NTFS представляет из себя набор потоков, в которых хранятся данные. По умолчанию все данные находятся в основном потоке, но при необходимости к файлу можно добавлять дополнительные, альтернативные потоки данных.

Примечание. Альтернативные потоки данных в NTFS появились давным-давно, еще в Windows NT. Созданы они были для совместимости с файловой системой HFS, использующейся тогда на MacOS. HFS хранила данные о файле в специальном ресурсном потоке.

Файлы в NTFS поделены на атрибуты, одним из которых является $DATA, или атрибут данных. Потоки же являются дополнительными свойствами атрибута $DATA. По умолчанию существует один, основной поток $DATA:″″. Как видите, он не имеет названия, поэтому зовется неименованным. Также при желании можно создавать дополнительные, именованные потоки, напр. $DATA:″Stream1″. У каждого файла в NTFS может несколько потоков данных, содержащих различные, никак не связанные между собой данные.

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

Для примера откроем консоль и с помощью команды echo создадим текстовый файл streams.txt и запишем в него текст:

echo This is main stream>streams.txt

А следующей командой запишем текст в альтернативный поток stream1:

echo This is alternate stream>streams.txt:stream1

Если теперь открыть файл streams.txt в любом текстовом редакторе, то мы увидим только первую запись, текст «This is alternate stream» останется скрытым. Прочитать скрытую в потоке stream1 информацию можно командой:

more <stream.txt:stream1

Альтернативные потоки можно добавлять не только к отдельным файлам, но и к директориям. Для примера добавим альтернативный поток stream2, содержащий текст «Hide stream in Streams», к текущей директории Streams:

echo Hide stream in Streams>:stream2

И выведем поток stream2 следующей командой:

more <:stream2

image

Содержимое альтернативных потоков можно открывать не только в консоли. К примеру Блокнот (Notepad) тоже умеет обращаться к скрытым в потоках данным, если в имени файла через двоеточие указать имя альтернативного потока. Повторим предыдущий пример, немного изменив название потока на stream1.txt:

echo This is alternate stream>streams.txt:stream1.txt

И откроем альтернативный поток в блокноте командой:

notepad streams.txt:stream1.txt

image

Примечание. Стандартный Блокнот требует расширение txt в названии потока, иначе он не сможет его открыть. Более продвинутые редакторы, например тот же Notepad++, могут показывать содержимое альтернативного потока вне зависимости от его названия.

Наличие альтернативных потоков у файла никак не отображается в Проводнике и других файловых менеджерах. Для того, чтобы их найти, самый простой способ — это воспользоваться командой dir /R (начиная с Windows Vista), которая показывает все потоки данных, в том числе и альтернативные.

image

Вам может показаться, что применение альтернативных потоков ограничено текстовыми данными. Это совсем не так, и в альтернативных потоках можно хранить абсолютно любую информацию. Для примера создадим файл picture.txt и добавим к нему поток pic1.jpg, в который поместим одноименное изображение:

echo Picture>picture.txt
type pic1.jpg>picture.jpg:pic1.jpg

Таким образом, внешне мы имеем обычный текстовый файл, а для открытия изображения из альтернативного потока в графическом редакторе Paint воспользуемся командой:

mspaint picture.txt:pic1.jpg

image

Подобным образом можно добавлять к любым типам файлов любые данные — к текстовым файлам добавлять изображения, к медиафайлам добавлять текстовую информацию и т. п. Что интересно, альтернативное содержимое не увеличивает видимый размер файла, к примеру добавив к 1кБ текстовому файлу HD-видео на 30Гб, проводник все равно покажет размер файла 1кБ.

Еще в альтернативные потоки можно прятать исполняемые файлы. К примеру возьмем файл test.txt и добавим приложение Блокнот (notepad.exe) в альтернативный поток note.exe:

type notepad.exe>test.txt:note.exe

А для запуска скрытого блокнота воспользуемся командой:

start .\test.txt:note.exe

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

Утилита Streams

Для работы с альтернативными потоками существует несколько сторонних утилит, например консольная утилита Streams от Sysinternals. Она может определять наличие альтернативных потоков и удалять их. Утилита не требует установки, достаточно распаковать ее и запустить. Для примера проверим наличие потоков в папке Streams командой:

Streams.exe -s C:\Streams

И удалим альтернативные потоки из файла streams.txt:

Streams.exe -d C:\Streams\streams.txt

image

PowerShell

PowerShell также умеет работать с альтернативными потоками — создавать, обнаруживать, выводить их содержимое и даже удалять. Для примера создадим текстовй файл:

New-Item -Type file -Path C:\Streams\stream.txt

Добавим запись в основной поток:

Set-Content -Path C:\Streams\stream.txt -Value "Main stream"

И в альтернативный поток с именем Second:

Set-Content -Path C:\Streams\stream.txt -Value "Second stream" -Stream Second

Затем выведем содержимое основного

Get-Content -Path C:\Streams\stream.txt

и альтернативного потоков:

Get-Content -Path C:\Streams\stream.txt -Stream Second

image

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

Get-Item -Path C:\Streams\stream.txt -Stream *

А удалить лишние потоки можно командой:

Remove-Item -Path C:\Streams\streams.txt -Stream *

image

Использование

Альтернативные потоки используется как самой Windows, так и некоторыми программами. К примеру, Internet Explorer делит сеть на 4 зоны безопасности и при загрузке файлов добавляет к ним метки, которые содержат информацию о зоне, из которой они были загружены.

image

Метки эти хранятся в альтернативном потоке и представляют из себя число от 0 до 4:

• Интернет (3) • Местная сеть (1) • Надежные сайты (2) • Опасные сайты (4) • Локальный компьютер (0)

Чтобы убедится в этом, перейдем в папку загрузок, возьмем файл, загруженный из интернета и проверим его на наличие альтернативных потоков. Как видите, в нем присутствует поток с именем Zone.Identifier, в котором есть строка ZoneID=3.

image

Это значит, что файл относится к недоверенной зоне Интернет, и при его открытии надо быть осторожным. Некоторые программы, например Word, считывают эти данные при открытии файла и выдают соответствующее предупреждение.

image

Также инфраструктура классификации файлов (File Classification Infrastracture, FCI) основана на использовании альтернативных потоков. Из сторонних программ альтернативные потоки используют некоторые антивирусные программы, в частности антивирус Касперского хранит в них контрольную сумму, полученную в результате проверки.

Впрочем, применение альтернативных потоков этим не ограничивается, вы сами можете придумать для них любое применение. К примеру, с их помощью можно спрятать от посторонних глаз личную информацию. Файлы, содержащие альтернативные потоки, можно свободно копировать или переносить с диска на диск, все потоки будут скопированы вместе с файлом.

И еще, при использовании альтернативных потоков надо помнить, что они жестко привязаны к файловой системе NTFS. Для того, чтобы использовать их, файлы должны располагаться на дисках с NTFS, соответственно работать с ними можно только из под Windows. Если же переместить файл на любую другую файловую систему, то все потоки кроме основного будут потеряны. Также альтернативные потоки обрезаются при передаче файлов по FTP или при пересылке в качестве почтового вложения.

Source

Windows Registry Editor Version 5.00
;= Context menu to folders:
[HKEY_CLASSES_ROOT\Directory\shell\Dropbox Ignore]
"AppliesTo"="System.ItemPathDisplay:\"Dropbox\""
"Icon"="C:\\Program Files (x86)\\Dropbox\\Client\\Dropbox.exe,12"
@="Ignore from Dropbox"
[HKEY_CLASSES_ROOT\Directory\shell\Dropbox Ignore\command]
@="cmd.exe /s /c \"powershell -command \"Set-Content -Path \"%1\" -Stream com.dropbox.ignored -Value 1\"\""
;= Context menu to files:
[HKEY_CLASSES_ROOT\*\shell\Dropbox Ignore]
"AppliesTo"="System.ItemPathDisplay:\"Dropbox\""
"Icon"="C:\\Program Files (x86)\\Dropbox\\Client\\Dropbox.exe,12"
@="Ignore from Dropbox"
[HKEY_CLASSES_ROOT\*\shell\Dropbox Ignore\command]
@="cmd.exe /s /c \"powershell -command \"Set-Content -Path \"%1\" -Stream com.dropbox.ignored -Value 1\"\""
Windows Registry Editor Version 5.00
[-HKEY_CLASSES_ROOT\*\shell\Dropbox Ignore]
[-HKEY_CLASSES_ROOT\Directory\shell\Dropbox Ignore]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment