![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 05.11.2009
Сообщений: 9
|
![]()
Привет!
Такая проблема: у человека есть расшаренная папка в локальной сети. С этой папкой работают другие пользователи этой локалки (то есть создают, изменяют и т.д. файлы и папки в ней). Этот человек хочет мониторить все изменения, сделанные другими юзерами локальной сети, а также видеть автора каждого изменения (то есть связку username@computername). С первым (мониторинг изменений) успешно справляется функция ReadDirectoryChangesW(). Второе (определение автора изменений) решил сделать через связку NetFileEnum() и NetSessionEnum(). Но после тестирования выяснилось, что 100% я могу определить лишь создание файла. Все остальные операции (изменение, переименование, удаление) я могу определить лишь с некоторой долей вероятности. /* Наиболее проблемно - удаление. */ Вопрос: можно ли как-то иначе с большей вероятностью определить автора действий в расшаренной папке? Пока есть только такая идея: если я не ошибаюсь, компы с виндой используют smb-протокол для обмена данных по шарам, а smb - не что иное, как NetBios. Так может есть смысл юзать сниффер NetBios'a на локальном компе этого человека и через него определять то, что меня интересует? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
![]()
вы правы, 100% определить через netapi32 нельзя... мало того, если на ресурсе шарится несколько пользователей с одинаковыми именами, то идентифицировать кто-какой файл через NetFileEnumNT нереально, т.к. FileInfoNT просто не содержит такой информации (FileInfoNT^[i].fi3_username - имя, но не IP, а IP содержится в SessionInfo502^[i].sesi502_cname которая относится к NetSessionEnumNT) (...с этим столкнулся при разработке своего NETAPI детектора подключений)
... правда есть в этих функциях и плюс, можно регистрировать посылку документов на печать кто-что (если подкл.принтер к этой машине) ... по поводу smb мысль интересная, надо порыть... и еще, смотрел как файрволл касперского ловит файлы, иногда неправильно (вот интересно, как у него реализовано... хотя скорее он просто внедряет прослойку в сетевом интерфейсе и снифит)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() |
![]() |
![]() |
![]() |
#4 |
Новичок
Джуниор
Регистрация: 05.11.2009
Сообщений: 9
|
![]()
raxp, Serge_Bliznykov, благодарю за ответы.
Поясню ситуацию. Заказчик хочет видеть ListView с такими столбцами:
/* Они (программы) не позволят определить, например, удаление целой папки с вложенными в нее файлами. Также я не смогу определить изменение файла. */ У меня несколько другой подход, нежели в вышеперечисленных приложениях. 1. Перехватывается событие от ReadDirectoryChangesW (имеется тип события и путь к файлу/папке). 2. Теперь по пришествии этого события я собираю инфу от NetFileEnum и NetSessionEnum, комбинирую их, и получаю имя юзера и имя компа, которые инициировали событие (1). 3. Дальше вывожу данные в формате, который я указал. Но как верно заметил raxp, я не могу 100%-но определить инициатора. Поэтому я ввел следующую структуру для события: Код:
где Event::mostLikelyInitiators - наиболее вероятные инициаторы, а Event: ![]() На (2) этапе вышеперечисленного плана я нехитрым образом заполняю эти списки. Так оставить конечно можно, но было бы интересно узнать, возможно ли более надежное определение инициатора? ![]() /* Кстати приложений, решающих данную проблему, я не видел нигде, хотя искал очень тщательно. */ |
![]() |
![]() |
![]() |
#5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Я лично уже около года мониторю изменения файлов на серванте, и никаких проблем даже с удаленными файлами не наблюдаю.
А помогает определить владельца файл мне вот такая функа: Код:
I'm learning to live...
|
![]() |
![]() |
![]() |
#6 |
Новичок
Джуниор
Регистрация: 05.11.2009
Сообщений: 9
|
![]()
Пришел к выводу, что надо заниматься сниффингом smb-протокола с помощью WinPCap.
|
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 19.02.2009
Сообщений: 1
|
![]()
Stilet Вот это тема то что надо как раз
![]() |
![]() |
![]() |