![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
ANDeath |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 9.4.2006 Где: Краснодар Репутация: нет Всего: нет |
Подскажите пожалуйста, какими методами можно отследить копирование файлов на локальной машине (с/на флешку, с/на CD, через сетку), причем требуется информация: кто (ip, имя машины, имя пользователя), куда (ip, путь к исходной дириктории), когда и само сабой что копировалось.
|
|||
|
||||
Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
См. аттач Добавлено @ 15:55 Но работает только с локальной машиной и с NTFS. Присоединённый файл ( Кол-во скачиваний: 47 ) ![]() -------------------- Разочарованный в .NET |
|||
|
||||
ANDeath |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 9.4.2006 Где: Краснодар Репутация: нет Всего: нет |
Softaz, я с .NET сталкиваюсь впервые, мне то всего-то надо узнать инфу перечисленную выше и отправить на сервер (последнее по началу задумывалось делать через VBS, да если честно не хочется заморачиваться еще с C# - итак голова гудит) объясни или пошли туда где описан монстр System.IO.FileSystemWatcher и с чем его едят? Премного благодарен.
|
|||
|
||||
Softaz |
|
||||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
Если тебе нужно не только мониторить, но и сохранять файлы до _изменения_, то это не подойдет.
Надо перехватывать функции в kernel mode. Можно, конечно и в UserMode, но обхитрить такую программку можно будет с полпенька. Для запуска файла
И тогда уже это не .NET, а win32 native code Рабочий пример:
Это сообщение отредактировал(а) Softaz - 13.11.2006, 21:16 -------------------- Разочарованный в .NET |
||||
|
|||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Простите, тогда причём тут .NET? |
|||
|
||||
ANDeath |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 9.4.2006 Где: Краснодар Репутация: нет Всего: нет |
Ищу готовые ответы, да вот только все более куда-то в дебри уносит... |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
FileSystemWatcher работает и с FAT32.
-------------------- ![]() |
|||
|
||||
Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
У меня не работал почему-то. Мне сказали, что и не работает... свято верил ![]() -------------------- Разочарованный в .NET |
|||
|
||||
ANDeath |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 9.4.2006 Где: Краснодар Репутация: нет Всего: нет |
Товарищи, а реально изучить и написать следующее...
Есть любая win NT, с любой файловой системой, на этой локальной машине следует провернуть: Как только происходит копирование на сьемный носитель (флешка, диск) следует тут же отправить подробную инфу на сервер; если сервер недоступен, то повторить чуть поже... Это при условии, что я .net не знаю, вообще занимаюсь веб-разработкой, ну и когда-то написал в институте на С++ MFC пару прог... За какое время, такое возможно изучить и написать, и какие средства для это надо использовать? |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 7 Всего: 93 |
вполне...что утечек информации много?
![]() .net здесь вообще не при чем. смотри в сторону winapi. особенно при условии, что машина win NT любая...т. е. не исключено, что .net на ней нет ![]() -------------------- 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 |
|||
|
||||
alir |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
ANDeath
Если все-таки решил на .net, то начинай копать с примера:
если # не любишь:
Все реально, в том числе и для .net. Организацию сетки смотри в System.Net. Это сообщение отредактировал(а) alir - 15.11.2006, 11:27 |
||||||
|
|||||||
ANDeath |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 9.4.2006 Где: Краснодар Репутация: нет Всего: нет |
alir, лично мне, начинать надо с общей концепции .net) но все равно спасибо...
Уже решил писать на С++ под api хук, следящий за буфером обмена... потом или службу попытаюсь создать, или прогу висящую в трее, о которой никто не должен знать...а может и на vbs, что-нибудь придумаю... Это сообщение отредактировал(а) ANDeath - 15.11.2006, 12:30 |
|||
|
||||
Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
ANDeath, ты на hxxp://wasm.ru/forum/ сходи - там такие темы через день всплывают, почитай статьи Ms-Rem о перехвате функций.
Только писать такое на .net будет сложнее, чем на обычном с++. Потому что для последнего случая в сети полно примеров перехвата функций. Опыт ты получишь колоссальный, главное на 100-ой неудачной компиляции не сдаться. -------------------- Разочарованный в .NET |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Фигня получится, если к примеру будем тотал командиром копировать, или драг-дропом, или через батник, и т.п. -------------------- ![]() |
|||
|
||||
ANDeath |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 9.4.2006 Где: Краснодар Репутация: нет Всего: нет |
mr.DUDA, да, пожалуй ты прав, а есть ли какие-нибудь идеи? вариант с апи тогда вообще отпадает?
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
API Hook нужен на функции CopyFile/CopyFileEx и MoveFile/MoveFileEx, см. http://www.codeproject.com/system/hooksys.asp
-------------------- ![]() |
|||
|
||||
ANDeath |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 9.4.2006 Где: Краснодар Репутация: нет Всего: нет |
mr.DUDA, а как это хук на CopyFile b MoveFile, они же ничего в очередь сообщений не кидают?
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Почитай плз ссылку что я дал выше. API хук и windows hook разные вещи. API hook юзает вин-hook для инжекции в чужое адресное пространство, но по сути своей и назначению - совершенно другая область: api-hooks = перехват вызовов WinAPI функций, win-hooks = перехват оконных сообщений. -------------------- ![]() |
|||
|
||||
ANDeath |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 9.4.2006 Где: Краснодар Репутация: нет Всего: нет |
mr.DUDA, на данный момент, имеет ли смысл изучать это все? смогу ли я после всего узнать куда был скопирован файл, и определить является ли пункт назначения съемным носителем (cd, флешка, внешний хард)?
Это сообщение отредактировал(а) ANDeath - 17.11.2006, 15:04 |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Да, путь source и destination в обеих функциях есть, этого достаточно.
Это придётся отдельно сделать - в .NET есть стандартный класс DriveInfo, у него можно это узнать. Если нужна более детальная инфа о типе носителя (например, отличить флешку от флопика), то помогут классы из неймспейса System.Management -------------------- ![]() |
|||
|
||||
ANDeath |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 9.4.2006 Где: Краснодар Репутация: нет Всего: нет |
mr.DUDA, во-первых, большое спасибо за консультацию, приступаю к изучению апи-хук
![]() во-вторых, а по букве из пути destination нельзя ли определить тип запоминающего устройства? для флопи это понятно будет - диск A для флешки и мобильного харда, может можно как-нибудь определить через апи-функции? а вот как отследить запись на cd - явно проблема... |
|||
|
||||
Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
Обычно дисковод блокируется во время записи (иногда его блокируют также некоторые инсталляторы, но редко) Так что если заблокирован, то скорее всего что-то пишут. Так один приколист сделал прогу, "запоминающую" первый обнаруженный дисковод, и если производилась запись, то отправлял комп в ребут. Если вставлялся другой дисковод - все было нормально. И так несколько дисководов хапнул как сломанные.
Вот для этого и существуют классы, названные mr.DUDA. -------------------- Разочарованный в .NET |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
-------------------- ![]() |
|||
|
||||
ANDeath |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 9.4.2006 Где: Краснодар Репутация: нет Всего: нет |
Кажется, меня не так поняли...я хотел узнать можно ли определить тип зап. устройства по имени, ограничиваясь языками с++ и vbs, ну не хватит мне времени чтобы еще в .NET ковыряться...
Softaz, а как связать: сидюк блокируется после начала записи и перехват апи-функций копирования? Насколько я себе это представляю, проги типа стандартного win-резака и nero про запоминают список необходимых файлов (ссылки на них), а потом просто читая эти файлы, пишут на CD. Так? P.S.: вопрос о литературе и примерах об api-хуках остается открытым и крайне актуальным. Ссылка на пример? предоставленная mr.DUDA, безусловно является крайне полезной, но не достаточно информативной для меня. В нете нашел как писать апи-хуки на pascal, да вот только видно не владею им в достаточно степени. Это сообщение отредактировал(а) ANDeath - 18.11.2006, 13:26 |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Тогда эта тема - кандидат на перемещение в один из указанных разделов. ![]() -------------------- ![]() |
|||
|
||||
ANDeath |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 9.4.2006 Где: Краснодар Репутация: нет Всего: нет |
mr.DUDA, если бы там отвечали, я бы здесь не сидел...
![]() |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
ANDeath, так или иначе, по C++ и VBS никто здесь советов не даёт.
-------------------- ![]() |
|||
|
||||
ANDeath |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 9.4.2006 Где: Краснодар Репутация: нет Всего: нет |
Триумфальное возвращение к .NET
![]() Средствами WMI и VBS ничего неудалось поделать; основная проблемма заключается в том чтобы узнать путь к файлу, который был скопирован. Копал и Api-hook для CopyFile, но работает это не слаженно и его можно легко обойти.... Так же смотрел исходники filemon с его виртуальным драйвером - слишком много гемороя... И вот я вернулся к .NET...просмотрел, на скорую руку, синтаксис C#...и пространство имен System.IO. И опять возникает вопрос можно ли понять какой файл был скопирован? Хотя бы следить за событиями чтения файлов? Я уже даже незнаю как решать эту проблему, может как-нибудь связывать событие создания файла с процессами (просто предположение). Я уже не вспоминаю про запись на компакт-диски... |
|||
|
||||
Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
Ты внимательнее ответы читай ![]() Вот здесь http://forum.vingrad.ru/s/07187540e1f9ed26...ic-121301.html# в аттаче целая программка -------------------- Разочарованный в .NET |
|||
|
||||
ANDeath |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 9.4.2006 Где: Краснодар Репутация: нет Всего: нет |
[b]Softaz[/b,
Во-первых эта программа у меня только запустила форму и отказалась как-либо реагировать на нажатие кнопок и на события происходящие в папке, указаной в xml-документе...может она только показательная и оно так и надо, но... Во-вторых, я просмотрел все скрипты и натолкнулся только на один, нужный мне и заодно подвласный моему разумению... так вот, я не понимаю каким образом здесь возможно отследить за копированием? теже события что и в WMI: создание/модификация/удаление, ну и переименование добавили. FormMain.cs
|
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
fileSystemWatcher следит за конкретной папкой (или файлом). Есу дела нет как изменилось его содержимое.
Ты скопировал или модифицировал или еще что-нить сделал ![]() ![]() Можно так: Правда для Changed нужно как-то отсеивать модификацию файла прямо в папке. Хотя я считаю, что это не нужно делать воообще. Или ты хочешь отследить момент когда ИЗ контролируемой папки что-то копируют? Тогда FSW не особо проходит. Не ставить же его на все доступные диски ![]() |
|||
|
||||
ANDeath |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 9.4.2006 Где: Краснодар Репутация: нет Всего: нет |
Именно! а зачем мне следить за наполнением папок? поддерживать чистоплотность? ![]()
Может как-нибудь сканировать порты usb? или наблюдать за драйверами? |
||||
|
|||||
Rustemka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 5.12.2006 Репутация: нет Всего: нет |
Когда я тоже думал (неделюку назад) systemwatcher юзать, но если его юзаешь, то нельзя флэшку отключить, пишет что она "занята"
если останавливаешь программу наблюдатель, то "флэшку можно безопасно извлечь из компьютера" вариант 2. если физически выдернуть флэшку и назад воткнуть, то наблюдения за файловой системой прекратятся, можно что угодно скопировать на флэшку или с нее. Вот тебе и файло наблюдатель ![]() Добавлено @ 00:54 Может быть конечно все таки решение понемножку созреет (не только у меня) |
|||
|
||||
ANDeath |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 9.4.2006 Где: Краснодар Репутация: нет Всего: нет |
Когда меня осенило писать все на VBS используя WMI, я в наивном неведении, что нельзя отслеживать события чтения, все-таки написал скрипт, который перехватывал созданные методом копирования файлы и реализовал модуль, который следил за подключениями сьемных носителей (тип 1 в FSO)...в такой ситуации "вариант 2" - это не проблемма...а автоматическое прекращение выполнение скрипта - только на руку...
...но что делать, со слабонервными, которые боятся дотронуться до флешки пока точно не убедятся что она отключена? это взаправду косяк... ...но повтарюсь, трабл в том чтобы определить какой файл был скопирован!!! p.s.: судя по молчанию здешних мастеров, вывод один - въежать в код filemon и медленно, но уверенно писать прототип на winapi... p.p.s.: впрочем, меня вчера уже уволили с испытательного срока и мне уже .... зато прокачался немалым опытом ![]() ...а фирма, в которую я нанимался программистом, послала заказ какой-то здешней фирме-разработчику, которая в свою очередь обещала написать прогу, следящую за всеми перемещениями в FS (в том числе и запись на CD) на .NET...любопытно, не правда ли? ![]() |
|||
|
||||
Rustemka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 5.12.2006 Репутация: нет Всего: нет |
ANDeath данную программу и тему планируешь развивать?
|
|||
|
||||
ANDeath |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 9.4.2006 Где: Краснодар Репутация: нет Всего: нет |
Rustemka, есть маленький интерес к этому делу, но идей нет...
Через файловую систему, что либо подобное не реализуется, можешь не капать, проверенно на WMI и .NET... ...и оно правильно, там все реализуется через объекты, и это логично: создание, изменение параметров и удаление объекта зафиксировать легко... Сейчас других проблем поболее, так что буду поддерживать тему пассивно... P.S.: Знакомый, бывший кгб-шник, занимавшийся радио-компьтер техникой советских времен, рассказывал что эту проблему легко решали на ассемблере (через вектора прерывания, порты и т.п.), а люди пользующиеся языками высокого уровня, на самом деле не программисты, а так - прикладники...старая школа ![]() |
|||
|
||||
Rustemka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 5.12.2006 Репутация: нет Всего: нет |
А если копать в сторону, e.GetType там можно найти например, кто изменил файл?
e.GetType.GUID Не работает Оказывается так можно и за сетевым ресурсом наблюдать, только не понятно кто это сделал (скопировал, удалил) |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Rustemka, e.GetType возвращает тип объекта
Т.е. тебе вернется тип <кто-то что-то>EventArgs |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Rustemka, в данном случае я полностью согласен с ANDeath. Задача неразрешима только средствами .NET; придётся привлекать более низкоуровневые вещи, ну а про них я уже выше писал. Кстати, по-другому такие тулзы называются руткитами
![]() -------------------- ![]() |
|||
|
||||
Rustemka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 5.12.2006 Репутация: нет Всего: нет |
Я кстати мини програмку написал, но это только для лога за локальными ресурсами, но как вот быть с cd-rom и с "безопасным извлечением" флэшки увы открыт остался вопрос.
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |