Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отслеживание копирования 
:(
    Опции темы
ANDeath
Дата 13.11.2006, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



Подскажите пожалуйста, какими методами можно отследить копирование файлов на локальной машине (с/на флешку,  с/на CD, через сетку), причем требуется информация: кто (ip, имя машины, имя пользователя), куда (ip, путь к исходной дириктории), когда и само сабой что копировалось.
PM MAIL   Вверх
Softaz
Дата 13.11.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Код

System.IO.FileSystemWatcher

См. аттач

Добавлено @ 15:55 
Но работает только с локальной машиной и с NTFS.

Присоединённый файл ( Кол-во скачиваний: 47 )
Присоединённый файл  WindowsApplication6.zip 111,68 Kb


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
ANDeath
Дата 13.11.2006, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



Softaz, я с .NET сталкиваюсь впервые, мне то всего-то надо узнать инфу перечисленную выше и отправить на сервер (последнее по началу задумывалось делать через VBS, да если честно не хочется заморачиваться еще с C# - итак голова гудит) объясни или пошли туда где описан монстр System.IO.FileSystemWatcher и с чем его едят? Премного благодарен.
PM MAIL   Вверх
Softaz
Дата 13.11.2006, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Если тебе нужно не только мониторить, но и сохранять файлы до _изменения_, то это не подойдет.
Надо перехватывать функции в kernel mode. Можно, конечно и в UserMode, но обхитрить такую программку можно будет с полпенька. Для запуска файла

Код

ZwCreateProcess
RtlCreateProcessPrameters
RtlCreateUserProcess
NtResumeThread


И тогда уже это не .NET, а win32 native code
Рабочий пример:
Код

NTSTATUS NewZwCreateFile(PHANDLE FileHandle, ACCESS_MASK DesiredAccess, POBJECT_ATTRIBUTES ObjectAttributes, PIO_STATUS_BLOCK IoStatusBlock, 
        PLARGE_INTEGER AllocationSize, ULONG FileAttributes, ULONG ShareAccess, ULONG CreateDisposition, ULONG CreateOptions, PVOID EaBuffer, 
        ULONG EaLength)
{   
    NTSTATUS    status;
    WCHAR        *pExt;
    CHAR        szProcess[NT_PROCNAMELEN];
    
    status = OldZwCreateFile(FileHandle, DesiredAccess, ObjectAttributes, IoStatusBlock, AllocationSize,
            FileAttributes, ShareAccess, CreateDisposition, CreateOptions, EaBuffer, EaLength);

    if (wcsrchr(ObjectAttributes->ObjectName->Buffer, '\\') < wcsrchr(ObjectAttributes->ObjectName->Buffer, '.'))
    {
        if (wcslen(ObjectAttributes->ObjectName->Buffer) < 5) return status;
        pExt = wcsrchr(ObjectAttributes->ObjectName->Buffer, '.');
        if (pExt == NULL) return status;
        GetProcessName(szProcess);
        if (bIncExt) if (!TestMask(szInclude, &pExt[1])) return status;
        if (bExcExt) if (TestMask(szExclude,  &pExt[1])) return status;
        if (bIncProgram) if (!TestProgram(szPrograms, szProcess))   return status;
        if (bExcProgram) if (TestProgram(szExcPrograms, szProcess)) return status;

        PCREATE_BUFFER pBuffer = AddCreateEntry();
        if (pBuffer != NULL)
        {
            LARGE_INTEGER time, time_local;
            TIME_FIELDS   tf;

            pBuffer->hfile   = *FileHandle;
            wcsncpy(pBuffer->szBuffer, ObjectAttributes->ObjectName->Buffer, 255); 
            strncpy(pBuffer->szProcess, szProcess, NT_PROCNAMELEN);

            KeQuerySystemTime(&time);
            ExSystemTimeToLocalTime(&time, &time_local);
            RtlTimeToTimeFields(&time_local, &tf);

            if (tf.Hour < 10) 
            {
                strcpy(pBuffer->szTime, "0");
                _itoa(tf.Hour, (pBuffer->szTime+1), 10);
            }
            else _itoa(tf.Hour, pBuffer->szTime, 10);
            strcat(pBuffer->szTime, ":");

            if (tf.Minute < 10) 
            {
                strcat(pBuffer->szTime, "0");
                _itoa(tf.Minute, (pBuffer->szTime+4), 10);
            } 
            else _itoa(tf.Minute, (pBuffer->szTime+3), 10);
            strcat(pBuffer->szTime,


Это сообщение отредактировал(а) Softaz - 13.11.2006, 21:16


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
Exception
Дата 13.11.2006, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Цитата(ANDeath @  13.11.2006,  17:04 Найти цитируемый пост)
Softaz, я с .NET сталкиваюсь впервые, мне то всего-то надо узнать инфу перечисленную выше и отправить на сервер (последнее по началу задумывалось делать через VBS, да если честно не хочется заморачиваться еще с C# - итак голова гудит)


Простите, тогда причём тут .NET?
PM   Вверх
ANDeath
Дата 13.11.2006, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



Цитата

Простите, тогда причём тут .NET

Ищу готовые ответы, да вот только все более куда-то в дебри уносит...
PM MAIL   Вверх
mr.DUDA
Дата 13.11.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



FileSystemWatcher работает и с FAT32.


--------------------
user posted image
PM MAIL WWW   Вверх
Softaz
Дата 13.11.2006, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Цитата(mr.DUDA @  13.11.2006,  19:18 Найти цитируемый пост)
FileSystemWatcher работает и с FAT32.

У меня не работал почему-то. Мне сказали, что и не работает... свято верил  smile 


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
ANDeath
Дата 14.11.2006, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



Товарищи, а реально изучить и написать следующее...

Есть любая win NT, с любой файловой системой, на этой локальной машине следует провернуть:
Как только происходит копирование на сьемный носитель (флешка, диск) следует тут же отправить подробную инфу на сервер; если сервер недоступен, то повторить чуть поже...

Это при условии, что я .net не знаю, вообще занимаюсь веб-разработкой, ну и когда-то написал в институте на С++ MFC пару прог...
За какое время, такое возможно изучить и написать, и какие средства для это надо использовать?
PM MAIL   Вверх
archimed7592
Дата 15.11.2006, 02:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 7
Всего: 93



Цитата(ANDeath @  14.11.2006,  12:21 Найти цитируемый пост)
оварищи, а реально изучить и написать следующее...
вполне...что утечек информации много? smile скорее через интернет, чем через флешку...

Цитата(ANDeath @  14.11.2006,  12:21 Найти цитируемый пост)
Это при условии, что я .net не знаю, вообще занимаюсь веб-разработкой, ну и когда-то написал в институте на С++ MFC пару прог...За какое время, такое возможно изучить и написать, и какие средства для это надо использовать?
.net здесь вообще не при чем. смотри в сторону winapi. особенно при условии, что машина win NT любая...т. е. не исключено, что .net на ней нет smile за какое время, сказать сложно. смотря насколько всевидящей должна быть прога.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
alir
Дата 15.11.2006, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 19.3.2005

Репутация: 2
Всего: 4



ANDeath
Если все-таки решил на .net, то начинай копать с примера:

Код

using System;
using System.Text;

namespace FileWatcher
{
    class DemoFileWatcher
    {
        static FileSystemWatcher fw;
        public static void OnChanged(Object o, FileSystemEventArgs e)
        {
            Console.WriteLine("File:" + e.FullPath + "Change type:" + e.ChangeType);
        }
        public static void OnRenamed(Object o, RenamedEventArgs e)
        {
            Console.WriteLine("File {0} renamed to {1}", e.OldFullPath, e.FullPath);
        }
        static void Main(string[] args)
        {
            fw = new FileSystemWatcher();
            fw.Path = @"C:\windows"
            fw.IncludeSubdirectories = true;
            //в фильтрах указывай какие изменения будешь отслеживать
            fw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.FileName | NotifyFilters.CreationTime | NotifyFilters.LastWrite;
            fw.Filter = "*.*";
            fw.EnableRaisingEvents = true;
            fw.Changed += new FileSystemEventHandler(OnChanged);
            fw.Renamed += new RenamedEventHandler(OnRenamed);
            Console.ReadLine();
        }


если # не любишь:

Код

Imports System.IO
Module FileWatcher
    Public fw As FileSystemWatcher
    Sub Main()
        fw = New FileSystemWatcher()
        fw.Path = "C:\windows" : fw.IncludeSubdirectories = True : fw.Filter = "*.*"
        fw.NotifyFilter = NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName
        fw.EnableRaisingEvents = True
        AddHandler fw.Changed, AddressOf OnChanged
        AddHandler fw.Created, AddressOf OnChanged
        AddHandler fw.Deleted, AddressOf OnChanged
        AddHandler fw.Renamed, AddressOf OnRenamed
        Console.ReadLine()
    End Sub
    Public Sub OnChanged(ByVal o As Object, ByVal e As FileSystemEventArgs)
        Dim s As String = ""
        Select Case e.ChangeType
            Case WatcherChangeTypes.Changed
                s = "changed"
            Case WatcherChangeTypes.Created
                s = "created"
            Case WatcherChangeTypes.Deleted
                s = "deleted"
        End Select
        Console.WriteLine("File:" + e.FullPath + ":" + s)
    End Sub
    Public Sub OnRenamed(ByVal o As Object, ByVal e As RenamedEventArgs)
        Console.WriteLine("File {0} renamed to {1}", e.OldName, e.FullPath)
    End Sub
End Module


Цитата
Товарищи, а реально изучить и написать следующее...

Все реально, в том числе и для .net. Организацию сетки смотри в System.Net.

Это сообщение отредактировал(а) alir - 15.11.2006, 11:27
PM MAIL ICQ   Вверх
ANDeath
Дата 15.11.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



alir, лично мне, начинать надо с общей концепции .net) но все равно спасибо...
Уже решил писать на С++ под api хук, следящий за буфером обмена...
потом или службу попытаюсь создать, или прогу висящую в трее, о которой никто не должен знать...а может и на vbs, что-нибудь придумаю...

Это сообщение отредактировал(а) ANDeath - 15.11.2006, 12:30
PM MAIL   Вверх
Softaz
Дата 15.11.2006, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



ANDeath, ты на hxxp://wasm.ru/forum/ сходи - там такие темы через день всплывают, почитай статьи Ms-Rem о перехвате функций.
Только писать такое на .net будет сложнее, чем на обычном с++. Потому что для последнего случая в сети полно примеров перехвата функций.
Опыт ты получишь колоссальный, главное на 100-ой неудачной компиляции не сдаться.


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
mr.DUDA
Дата 15.11.2006, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(ANDeath @  15.11.2006,  11:28 Найти цитируемый пост)
Уже решил писать на С++ под api хук, следящий за буфером обмена...

Фигня получится, если к примеру будем тотал командиром копировать, или драг-дропом, или через батник, и т.п.


--------------------
user posted image
PM MAIL WWW   Вверх
ANDeath
Дата 17.11.2006, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



mr.DUDA, да, пожалуй ты прав, а есть ли какие-нибудь идеи? вариант с апи тогда вообще отпадает?
PM MAIL   Вверх
mr.DUDA
Дата 17.11.2006, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



API Hook нужен на функции CopyFile/CopyFileEx и MoveFile/MoveFileEx, см. http://www.codeproject.com/system/hooksys.asp


--------------------
user posted image
PM MAIL WWW   Вверх
ANDeath
Дата 17.11.2006, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



mr.DUDA, а как это хук на CopyFile b MoveFile, они же ничего в очередь сообщений не кидают?
PM MAIL   Вверх
mr.DUDA
Дата 17.11.2006, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(ANDeath @  17.11.2006,  13:16 Найти цитируемый пост)
mr.DUDA, а как это хук на CopyFile b MoveFile, они же ничего в очередь сообщений не кидают?

Почитай плз ссылку что я дал выше. API хук и windows hook разные вещи. API hook юзает вин-hook для инжекции в чужое адресное пространство, но по сути своей и назначению - совершенно другая область: api-hooks = перехват вызовов WinAPI функций, win-hooks = перехват оконных сообщений.


--------------------
user posted image
PM MAIL WWW   Вверх
ANDeath
Дата 17.11.2006, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



mr.DUDA, на данный момент, имеет ли смысл изучать это все? смогу ли я после всего узнать куда был скопирован файл, и определить является ли пункт назначения съемным носителем (cd, флешка, внешний хард)?

Это сообщение отредактировал(а) ANDeath - 17.11.2006, 15:04
PM MAIL   Вверх
mr.DUDA
Дата 17.11.2006, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(ANDeath @  17.11.2006,  14:04 Найти цитируемый пост)
 смогу ли я после всего узнать куда был скопирован файл

Да, путь source и destination в обеих функциях есть, этого достаточно.

Цитата(ANDeath @  17.11.2006,  14:04 Найти цитируемый пост)
и определить является ли пункт назначения съемным носителем (cd, флешка, внешний хард)?

Это придётся отдельно сделать - в .NET есть стандартный класс DriveInfo, у него можно это узнать. Если нужна более детальная инфа о типе носителя (например, отличить флешку от флопика), то помогут классы из неймспейса System.Management


--------------------
user posted image
PM MAIL WWW   Вверх
ANDeath
Дата 18.11.2006, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



mr.DUDA, во-первых, большое спасибо за консультацию, приступаю к изучению апи-хук  smile ...если есть какая-нибудь инфа о том как его писать - поделись пожалуйста...

во-вторых, а по букве из пути destination нельзя ли определить тип запоминающего устройства?
для флопи это понятно будет - диск A
для флешки и мобильного харда, может можно как-нибудь определить через апи-функции?
а вот как отследить запись на cd - явно проблема...
PM MAIL   Вверх
Softaz
Дата 18.11.2006, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Цитата(ANDeath @  18.11.2006,  01:04 Найти цитируемый пост)
а вот как отследить запись на cd - явно проблема...

Обычно дисковод блокируется во время записи (иногда его блокируют также некоторые инсталляторы, но редко)
Так что если заблокирован, то скорее всего что-то пишут.


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



Цитата(ANDeath @  18.11.2006,  01:04 Найти цитируемый пост)
во-вторых, а по букве из пути destination нельзя ли определить тип запоминающего устройства?

Вот для этого и существуют классы, названные mr.DUDA.


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
mr.DUDA
Дата 18.11.2006, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(ANDeath @  18.11.2006,  00:04 Найти цитируемый пост)
во-вторых, а по букве из пути destination нельзя ли определить тип запоминающего устройства?для флопи это понятно будет - диск Aдля флешки и мобильного харда, может можно как-нибудь определить


Цитата(mr.DUDA @  17.11.2006,  19:35 Найти цитируемый пост)
в .NET есть стандартный класс DriveInfo, у него можно это узнать. Если нужна более детальная инфа о типе носителя (например, отличить флешку от флопика), то помогут классы из неймспейса System.Management




--------------------
user posted image
PM MAIL WWW   Вверх
ANDeath
Дата 18.11.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



Кажется, меня не так поняли...я хотел узнать можно ли определить тип зап. устройства по имени, ограничиваясь языками с++ и vbs, ну не хватит мне времени чтобы еще в .NET ковыряться...
Softaz, а как связать: сидюк блокируется после начала записи и перехват апи-функций копирования? Насколько я себе это представляю, проги типа стандартного win-резака и nero про запоминают список необходимых файлов (ссылки на них), а потом просто читая эти файлы, пишут на CD. Так?

P.S.: вопрос о  литературе и примерах об api-хуках остается открытым и крайне актуальным.
Ссылка на пример? предоставленная mr.DUDA, безусловно является крайне полезной, но не достаточно информативной для меня.
В нете нашел как писать апи-хуки на pascal, да вот только видно не владею им в достаточно степени.

Это сообщение отредактировал(а) ANDeath - 18.11.2006, 13:26
PM MAIL   Вверх
mr.DUDA
Дата 18.11.2006, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(ANDeath @  18.11.2006,  12:12 Найти цитируемый пост)
Кажется, меня не так поняли...я хотел узнать можно ли определить тип зап. устройства по имени, ограничиваясь языками с++ и vbs, ну не хватит мне времени чтобы еще в .NET ковыряться...

Тогда эта тема - кандидат на перемещение в один из указанных разделов.  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
ANDeath
Дата 19.11.2006, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



mr.DUDA, если бы там отвечали, я бы здесь не сидел... smile 
PM MAIL   Вверх
mr.DUDA
Дата 19.11.2006, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



ANDeath, так или иначе, по C++ и VBS никто здесь советов не даёт.


--------------------
user posted image
PM MAIL WWW   Вверх
ANDeath
Дата 2.12.2006, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



Триумфальное возвращение к .NET  smile 

Средствами WMI и VBS ничего неудалось поделать; основная проблемма заключается в том чтобы узнать путь к файлу, который был скопирован.

Копал и Api-hook для CopyFile, но работает это не слаженно и его можно легко обойти....
Так же смотрел исходники filemon с его виртуальным драйвером - слишком много гемороя...

И вот я вернулся к .NET...просмотрел, на скорую руку, синтаксис C#...и пространство имен System.IO. И опять возникает вопрос можно ли понять какой файл был скопирован? Хотя бы следить за событиями чтения файлов? Я уже даже незнаю как решать эту проблему, может как-нибудь связывать событие создания файла с процессами (просто предположение). Я уже не вспоминаю про запись на компакт-диски...
PM MAIL   Вверх
Softaz
Дата 2.12.2006, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Цитата(ANDeath @  2.12.2006,  17:40 Найти цитируемый пост)
И опять возникает вопрос можно ли понять какой файл был скопирован?


Ты внимательнее ответы читай  smile 
Вот здесь http://forum.vingrad.ru/s/07187540e1f9ed26...ic-121301.html#
в аттаче целая программка


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
ANDeath
Дата 3.12.2006, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



[b]Softaz[/b,
Во-первых эта программа у меня только запустила форму и отказалась как-либо реагировать на нажатие кнопок и на события происходящие в папке, указаной в xml-документе...может она только показательная и оно так и надо, но...

Во-вторых, я просмотрел все скрипты и натолкнулся только на один, нужный мне и заодно подвласный моему разумению... так вот, я не понимаю каким образом здесь возможно отследить за копированием? теже события что и в WMI: создание/модификация/удаление, ну и переименование добавили.

FormMain.cs
Код

.....
DataRowView drv = (DataRowView)bs.Current;

System.IO.FileSystemWatcher fileSystemWatcher13 = new FileSystemWatcher();
fileSystemWatcher13.NotifyFilter = System.IO.NotifyFilters.FileName | System.IO.NotifyFilters.Size;
fileSystemWatcher13.Path = drv.Row["path"].ToString();
fileSystemWatcher13.IncludeSubdirectories = Convert.ToBoolean(drv.Row["inc_sf"]);
fileSystemWatcher13.Filter = drv.Row["filter"].ToString();
fileSystemWatcher13.SynchronizingObject = this;

fileSystemWatcher13.Changed += new System.IO.FileSystemEventHandler(this.fileSystemWatcher12_Changed);
fileSystemWatcher13.Created += new System.IO.FileSystemEventHandler(this.fileSystemWatcher12_Changed);
fileSystemWatcher13.Deleted += new System.IO.FileSystemEventHandler(this.fileSystemWatcher12_Changed);
fileSystemWatcher13.Renamed += new System.IO.RenamedEventHandler(this.fileSystemWatcher122_Changed);
.....

PM MAIL   Вверх
ivashkanet
Дата 3.12.2006, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



fileSystemWatcher следит за конкретной папкой (или файлом). Есу дела нет как изменилось его содержимое. 
Ты скопировал или модифицировал или еще что-нить сделал  smile Ему главное, что состояние объекта его наблюдения изменилось  smile 

Цитата(ANDeath @  3.12.2006,  13:08 Найти цитируемый пост)
каким образом здесь возможно отследить за копированием?

Можно так:
Цитата(ANDeath @  3.12.2006,  13:08 Найти цитируемый пост)
fileSystemWatcher13.Changed += new System.IO.FileSystemEventHandler(this.fileSystemWatcher12_Changed);
fileSystemWatcher13.Created += new System.IO.FileSystemEventHandler(this.fileSystemWatcher12_Changed);

Правда для Changed нужно как-то отсеивать модификацию файла прямо в папке.
Хотя я считаю, что это не нужно делать воообще.

Или ты хочешь отследить момент когда ИЗ контролируемой папки что-то копируют?
Тогда FSW не особо проходит. Не ставить же его на все доступные диски  smile 


PM MAIL WWW ICQ   Вверх
ANDeath
Дата 3.12.2006, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



Цитата

Или ты хочешь отследить момент когда ИЗ контролируемой папки что-то копируют?

Именно! а зачем мне следить за наполнением папок? поддерживать чистоплотность?  smile

Цитата

Тогда FSW не особо проходит. Не ставить же его на все доступные диски

Может как-нибудь сканировать порты usb? или наблюдать за драйверами?
PM MAIL   Вверх
Rustemka
Дата 5.12.2006, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.12.2006

Репутация: нет
Всего: нет



Когда я тоже думал (неделюку назад) systemwatcher юзать, но если его юзаешь, то нельзя флэшку отключить, пишет что она "занята"
если останавливаешь программу наблюдатель, то "флэшку можно безопасно извлечь из компьютера"

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

Вот тебе и файло наблюдательsmile разочаровал он меня!

Добавлено @ 00:54 
Может быть конечно все таки решение понемножку созреет (не только у меня)
PM MAIL   Вверх
ANDeath
Дата 5.12.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



Когда меня осенило писать все на VBS используя WMI, я в наивном неведении, что нельзя отслеживать события чтения, все-таки написал скрипт, который перехватывал созданные методом копирования файлы и реализовал модуль, который следил за подключениями сьемных носителей (тип 1 в FSO)...в такой ситуации "вариант 2" - это не проблемма...а автоматическое прекращение выполнение скрипта - только на руку...
...но что делать, со слабонервными, которые боятся дотронуться до флешки пока точно не убедятся что она отключена? это взаправду косяк...
...но повтарюсь, трабл в том чтобы определить какой файл был скопирован!!!

p.s.: судя по молчанию здешних мастеров, вывод один - въежать в код filemon и медленно, но уверенно писать прототип на winapi...

p.p.s.: впрочем, меня вчера уже уволили с испытательного срока и мне уже .... зато прокачался немалым опытом smile 
...а фирма, в которую я нанимался программистом, послала заказ какой-то здешней фирме-разработчику, которая в свою очередь обещала написать прогу, следящую за всеми перемещениями в FS (в том числе и запись на CD) на .NET...любопытно, не правда ли? smile
PM MAIL   Вверх
Rustemka
Дата 5.12.2006, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.12.2006

Репутация: нет
Всего: нет



ANDeath данную программу и тему планируешь развивать?
PM MAIL   Вверх
ANDeath
Дата 5.12.2006, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



Rustemka, есть маленький интерес к этому делу, но идей нет...
Через файловую систему, что либо подобное не реализуется, можешь не капать, проверенно на WMI и .NET...
...и оно правильно, там все реализуется через объекты, и это логично: создание, изменение параметров и удаление объекта зафиксировать легко...

Сейчас других проблем поболее, так что буду поддерживать тему пассивно...

P.S.:
Знакомый, бывший кгб-шник, занимавшийся радио-компьтер техникой советских времен, рассказывал что эту проблему легко решали на ассемблере (через вектора прерывания, порты и т.п.), а люди пользующиеся языками высокого уровня, на самом деле не программисты, а так - прикладники...старая школа smile
PM MAIL   Вверх
Rustemka
Дата 5.12.2006, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.12.2006

Репутация: нет
Всего: нет



А если копать в сторону, e.GetType там можно найти например, кто изменил файл?
e.GetType.GUID  Не работает

Оказывается так можно и за сетевым ресурсом наблюдать, только не понятно кто это сделал (скопировал, удалил)
PM MAIL   Вверх
ivashkanet
Дата 5.12.2006, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Rustemka, e.GetType возвращает тип объекта 
Т.е. тебе вернется тип <кто-то что-то>EventArgs 
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 5.12.2006, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Rustemka, в данном случае я полностью согласен с ANDeath. Задача неразрешима только средствами .NET; придётся привлекать более низкоуровневые вещи, ну а про них я уже выше писал. Кстати, по-другому такие тулзы называются руткитами  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
Rustemka
Дата 6.12.2006, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.12.2006

Репутация: нет
Всего: нет



Я кстати мини програмку написал, но это только для лога за локальными ресурсами, но как вот быть с cd-rom и с "безопасным извлечением" флэшки увы открыт остался вопрос.
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1920 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.