Модераторы: 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   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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